{"id":"f445f9de355fe8b59e329e4ff877d307","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\n     *\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\n     */\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\n        return INITIALIZABLE_STORAGE;\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        bytes32 slot = _initializableStorageSlot();\n        assembly {\n            $.slot := slot\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.22;\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\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 ERC-1967.\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/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\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/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1822: 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/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\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"},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5313.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface for the Light Contract Ownership Standard.\n *\n * A standardized minimal interface required to identify an account that controls a contract\n */\ninterface IERC5313 {\n    /**\n     * @dev Gets the address of the owner.\n     */\n    function owner() external view returns (address);\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.2.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.22;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\n */\ninterface IERC1155 is IERC165 {\n    /**\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\n     */\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n    /**\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n     * transfers.\n     */\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] values\n    );\n\n    /**\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n     * `approved`.\n     */\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n    /**\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n     *\n     * If an {URI} event was emitted for `id`, the standard\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n     * returned by {IERC1155MetadataURI-uri}.\n     */\n    event URI(string value, uint256 indexed id);\n\n    /**\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\n     */\n    function balanceOf(address account, uint256 id) external view returns (uint256);\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(\n        address[] calldata accounts,\n        uint256[] calldata ids\n    ) external view returns (uint256[] memory);\n\n    /**\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n     *\n     * Emits an {ApprovalForAll} event.\n     *\n     * Requirements:\n     *\n     * - `operator` cannot be the zero address.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n     *\n     * See {setApprovalForAll}.\n     */\n    function isApprovedForAll(address account, address operator) external view returns (bool);\n\n    /**\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n     *\n     * Requirements:\n     *\n     * - `ids` and `values` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\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/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-721 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 ERC-721 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 ERC-721\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.2.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\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 Errors.InsufficientBalance(address(this).balance, amount);\n        }\n\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            _revert(returndata);\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\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 {Errors.FailedCall}) in case\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\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            assembly (\"memory-safe\") {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error InsufficientBalance(uint256 balance, uint256 needed);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedCall();\n\n    /**\n     * @dev The deployment failed.\n     */\n    error FailedDeployment();\n\n    /**\n     * @dev A necessary precompile is missing.\n     */\n    error MissingPrecompile(address);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\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[ERC 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/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\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 *\n * TIP: Consider using this library along with {SlotDerivation}.\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 Int256Slot {\n        int256 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        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n     */\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\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        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\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        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n}\n"},"contracts/interfaces/IVideoPayment.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"../libraries/VideoPaymentStorage.sol\";\n\n/**\n * @title IVideoPayment\n * @dev Interface for VideoPayment contract\n */\ninterface IVideoPayment {\n    // Content purchase information structure\n    struct ContentPurchaseInfo {\n        uint256 viewCount; // View count (0=unlimited, >0=limited)\n        bool isActive; // Whether content is purchasable\n        address[] supportedTokens; // Supported payment tokens (address(0)=native)\n        uint256[] tokenPrices; // Corresponding token prices\n        bool isUnlimitedViewing; // Whether unlimited viewing is allowed\n    }\n    // Custom errors\n    error NotOwner();\n    error NotAdmin();\n    error ContractPaused();\n    error InvalidContent();\n    error UnsupportedToken();\n    error InsufficientPayment();\n    error NoValidPermission();\n    error ArrayLengthMismatch();\n    error ZeroAddress();\n    error InvalidAmount();\n    error AlreadyPurchased();\n    error TransferFailed();\n\n    // Events - Purchase related\n    event ContentPurchased(\n        address indexed user,\n        uint256 indexed contentId,\n        address paymentToken,\n        uint256 amount,\n        uint256 viewCount\n    );\n\n    event BatchPurchased(\n        address indexed user,\n        uint256[] contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    );\n\n    event NFTPurchased(\n        address indexed user,\n        uint256 indexed contentId,\n        address nftContract,\n        uint256 tokenId\n    );\n\n    // Events - Permission related\n    event ViewConsumed(\n        address indexed user,\n        uint256 indexed contentId,\n        uint256 remainingViews\n    );\n\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\n\n    event ViewCountAdded(\n        address indexed user,\n        uint256 indexed contentId,\n        uint256 addedCount,\n        uint256 totalRemaining\n    );\n\n    // Events - Management related\n    event AdminAdded(address indexed admin);\n    event AdminRemoved(address indexed admin);\n    event ContentConfigUpdated(uint256 indexed contentId);\n    event TokenPriceUpdated(\n        uint256 indexed contentId,\n        address indexed token,\n        uint256 price\n    );\n    event SupportedTokenAdded(address indexed token);\n    event SupportedTokenRemoved(address indexed token);\n    event Paused();\n    event Unpaused();\n\n    // Events - Treasury related\n    event TreasuryUpdated(\n        address indexed oldTreasury,\n        address indexed newTreasury\n    );\n\n    // Owner management functions\n    function owner() external view returns (address);\n    function isAdmin(address account) external view returns (bool);\n    function addAdmin(address admin) external;\n    function removeAdmin(address admin) external;\n\n    // Treasury management functions\n    function setTreasury(address payable newTreasury) external;\n    function getTreasury() external view returns (address);\n\n    // Content management functions\n    function setContentConfig(\n        uint256 contentId,\n        address token,\n        uint256 price,\n        uint256 viewCount,\n        bool isActive\n    ) external;\n    function batchSetContentConfig(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices,\n        uint256[] memory viewCounts,\n        bool[] memory isActiveArray\n    ) external;\n    function isContentActive(uint256 contentId) external view returns (bool);\n\n    // Price management functions\n    function setContentPrice(\n        uint256 contentId,\n        address token,\n        uint256 price\n    ) external;\n    function batchSetContentPrice(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices\n    ) external;\n\n    // Token enumeration function\n    function getAllSupportedTokens() external view returns (address[] memory);\n\n    // Payment token management functions\n    function addSupportedToken(address token) external;\n    function removeSupportedToken(address token) external;\n    function isSupportedToken(address token) external view returns (bool);\n\n    // Purchase functions\n    function purchaseContent(\n        uint256 contentId,\n        address paymentToken,\n        uint256 amount\n    ) external payable;\n    function batchPurchase(\n        uint256[] memory contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    ) external payable;\n    function purchaseWithNFT(\n        uint256 contentId,\n        address nftContract,\n        uint256 tokenId\n    ) external;\n\n    // Permission verification functions\n    function hasViewPermission(\n        address user,\n        uint256 contentId\n    ) external view returns (bool);\n    function getUserPermissions(\n        address user,\n        uint256[] memory contentIds\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\n    function getPermissionDetails(\n        address user,\n        uint256 contentId\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\n    function consumeView(\n        address user,\n        uint256 contentId\n    ) external returns (bool);\n    function batchConsumeView(\n        address[] memory users,\n        uint256[] memory contentIds\n    ) external returns (bool[] memory);\n\n    // Emergency control functions\n    function pause() external;\n    function unpause() external;\n\n    // Content query functions\n    function getContentPurchaseInfo(\n        uint256 contentId\n    ) external view returns (ContentPurchaseInfo memory);\n\n    // Upgrade functions\n    function version() external view returns (uint256);\n    function migrate() external;\n}\n"},"contracts/libraries/VideoPaymentStorage.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\n/**\n * @title VideoPaymentStorage\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\n */\nlibrary VideoPaymentStorage {\n    // Storage layout version for upgrade compatibility\n    uint256 constant STORAGE_VERSION = 1;\n\n    struct ContentConfig {\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\n        uint256 nativePrice; // Native coin price\n        uint256 viewCount; // View count when purchased\n        bool isActive; // Whether content is purchasable\n    }\n\n    struct ViewPermission {\n        uint256 purchaseTime; // Purchase timestamp\n        uint256 remainingViews; // Remaining view count\n        bool isValid; // Whether permission is valid\n    }\n\n    struct VideoPaymentStorageStruct {\n        // Owner and admin management\n        address owner;\n        mapping(address => bool) isAdmin;\n        // Content management\n        mapping(uint256 => ContentConfig) contentConfigs;\n        // User permissions\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\n        // Supported payment tokens\n        mapping(address => bool) supportedTokens;\n        // Token enumeration support\n        address[] allSupportedTokens;\n        mapping(address => bool) tokenExists;\n        mapping(address => uint256) tokenIndexes; // for efficient removal\n        // Emergency pause\n        bool paused;\n        // Contract version\n        uint256 version;\n        // Treasury management\n        address payable treasury;\n        // Reserved storage slots for future upgrades\n        uint256[47] __gap;\n    }\n}\n"},"contracts/VideoPayment.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC5313.sol\";\nimport \"./interfaces/IVideoPayment.sol\";\nimport \"./libraries/VideoPaymentStorage.sol\";\n\n/**\n * @title VideoPayment\n * @dev Main contract for video content payment and access control\n */\ncontract VideoPayment is\n    Initializable,\n    UUPSUpgradeable,\n    ReentrancyGuardUpgradeable,\n    IERC5313,\n    IVideoPayment\n{\n    using VideoPaymentStorage for VideoPaymentStorage.VideoPaymentStorageStruct;\n\n    // Storage\n    VideoPaymentStorage.VideoPaymentStorageStruct private _storage;\n\n    // Modifiers\n    modifier onlyOwner() {\n        if (msg.sender != _storage.owner) revert NotOwner();\n        _;\n    }\n\n    modifier onlyAdmin() {\n        if (!_storage.isAdmin[msg.sender]) revert NotAdmin();\n        _;\n    }\n\n    modifier whenNotPaused() {\n        if (_storage.paused) revert ContractPaused();\n        _;\n    }\n\n    modifier validContent(uint256 contentId) {\n        if (!_storage.contentConfigs[contentId].isActive)\n            revert InvalidContent();\n        _;\n    }\n\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor() {\n        _disableInitializers();\n    }\n\n    /**\n     * @dev Initialize the contract\n     * @param initialOwner Initial owner address\n     * @param initialAdmins Initial admin addresses array\n     * @param supportedTokenAddresses Initial supported token addresses array\n     */\n    function initialize(\n        address initialOwner,\n        address[] memory initialAdmins,\n        address[] memory supportedTokenAddresses\n    ) external initializer {\n        if (initialOwner == address(0)) revert ZeroAddress();\n\n        __UUPSUpgradeable_init();\n        __ReentrancyGuard_init();\n\n        _storage.owner = initialOwner;\n        _storage.version = 1;\n        _storage.paused = false;\n\n        // Add initial admins\n        for (uint256 i = 0; i < initialAdmins.length; i++) {\n            if (initialAdmins[i] != address(0)) {\n                _storage.isAdmin[initialAdmins[i]] = true;\n                emit AdminAdded(initialAdmins[i]);\n            }\n        }\n\n        // Add initial supported tokens\n        for (uint256 i = 0; i < supportedTokenAddresses.length; i++) {\n            address token = supportedTokenAddresses[i];\n            if (token != address(0)) {\n                // Add to enumeration structures\n                if (!_storage.tokenExists[token]) {\n                    _storage.tokenExists[token] = true;\n                    _storage.tokenIndexes[token] = _storage\n                        .allSupportedTokens\n                        .length;\n                    _storage.allSupportedTokens.push(token);\n                }\n                _storage.supportedTokens[token] = true;\n                emit SupportedTokenAdded(token);\n            }\n        }\n        // Ensure native token (address(0)) is included in enumeration structures\n        if (!_storage.tokenExists[address(0)]) {\n            _storage.tokenExists[address(0)] = true;\n            _storage.tokenIndexes[address(0)] = _storage\n                .allSupportedTokens\n                .length;\n            _storage.allSupportedTokens.push(address(0));\n        }\n        // Mark native token (address(0)) as always supported\n        _storage.supportedTokens[address(0)] = true;\n    }\n\n    /**\n     * @dev Get contract version\n     */\n    function version() external view returns (uint256) {\n        return _storage.version;\n    }\n\n    /**\n     * @dev Migration function for future upgrades\n     */\n    function migrate() external onlyOwner {\n        // Initialize treasury if not set (for upgrade from version without treasury)\n        if (_storage.treasury == address(0)) {\n            _storage.treasury = payable(_storage.owner);\n            emit TreasuryUpdated(address(0), _storage.owner);\n        }\n    }\n\n    /**\n     * @dev Authorize upgrade (required by UUPSUpgradeable)\n     */\n    function _authorizeUpgrade(\n        address newImplementation\n    ) internal override onlyOwner {}\n\n    // ============ Owner Management Functions ============\n\n    /**\n     * @dev Get current owner address\n     * @return Current owner address\n     */\n    function owner()\n        external\n        view\n        override(IERC5313, IVideoPayment)\n        returns (address)\n    {\n        return _storage.owner;\n    }\n\n    /**\n     * @dev Check if address is admin\n     * @param account Address to check\n     * @return Whether address is admin\n     */\n    function isAdmin(address account) external view returns (bool) {\n        return _storage.isAdmin[account];\n    }\n\n    /**\n     * @dev Add admin\n     * @param admin Admin address to add\n     */\n    function addAdmin(address admin) external onlyOwner {\n        if (admin == address(0)) revert ZeroAddress();\n        _storage.isAdmin[admin] = true;\n        emit AdminAdded(admin);\n    }\n\n    /**\n     * @dev Remove admin\n     * @param admin Admin address to remove\n     */\n    function removeAdmin(address admin) external onlyOwner {\n        if (admin == address(0)) revert ZeroAddress();\n        _storage.isAdmin[admin] = false;\n        emit AdminRemoved(admin);\n    }\n\n    // ============ Treasury Management Functions ============\n\n    /**\n     * @dev Set treasury address for receiving payments\n     * @param newTreasury New treasury address\n     */\n    function setTreasury(address payable newTreasury) external onlyOwner {\n        if (newTreasury == address(0)) revert ZeroAddress();\n        address oldTreasury = _storage.treasury;\n        _storage.treasury = newTreasury;\n        emit TreasuryUpdated(oldTreasury, newTreasury);\n    }\n\n    /**\n     * @dev Get current treasury address\n     * @return Current treasury address\n     */\n    function getTreasury() external view returns (address) {\n        return _storage.treasury;\n    }\n\n    // ============ Content Management Functions ============\n\n    /**\n     * @dev Set content configuration\n     * @param contentId Content ID\n     * @param token Token address (address(0) for native)\n     * @param price Token price\n     * @param viewCount View count\n     * @param isActive Whether content is active\n     */\n    function setContentConfig(\n        uint256 contentId,\n        address token,\n        uint256 price,\n        uint256 viewCount,\n        bool isActive\n    ) external onlyAdmin {\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\n\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\n        _storage.contentConfigs[contentId].viewCount = viewCount;\n        _storage.contentConfigs[contentId].isActive = isActive;\n\n        // Sync with nativePrice for backward compatibility\n        if (token == address(0)) {\n            _storage.contentConfigs[contentId].nativePrice = price;\n        }\n\n        emit ContentConfigUpdated(contentId);\n    }\n\n    /**\n     * @dev Batch set content configurations\n     * @param contentIds Content ID array\n     * @param token Token address (address(0) for native)\n     * @param prices Price array\n     * @param viewCounts View count array\n     * @param isActiveArray Active status array\n     */\n    function batchSetContentConfig(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices,\n        uint256[] memory viewCounts,\n        bool[] memory isActiveArray\n    ) external onlyAdmin {\n        if (\n            contentIds.length != prices.length ||\n            contentIds.length != viewCounts.length ||\n            contentIds.length != isActiveArray.length\n        ) revert ArrayLengthMismatch();\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\n                i\n            ];\n            _storage.contentConfigs[contentIds[i]].viewCount = viewCounts[i];\n            _storage.contentConfigs[contentIds[i]].isActive = isActiveArray[i];\n\n            // Sync with nativePrice for backward compatibility\n            if (token == address(0)) {\n                _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\n            }\n\n            emit ContentConfigUpdated(contentIds[i]);\n        }\n    }\n\n    /**\n     * @dev Check if content is active\n     * @param contentId Content ID\n     * @return Whether content is active\n     */\n    function isContentActive(uint256 contentId) external view returns (bool) {\n        return _storage.contentConfigs[contentId].isActive;\n    }\n\n    // ============ Price Management Functions ============\n\n    /**\n     * @dev Set content price for specific token (address(0) for native token)\n     * @param contentId Content ID\n     * @param token Token address (address(0) for native)\n     * @param price New price\n     */\n    function setContentPrice(\n        uint256 contentId,\n        address token,\n        uint256 price\n    ) external onlyAdmin {\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\n\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\n\n        // Sync with nativePrice for backward compatibility\n        if (token == address(0)) {\n            _storage.contentConfigs[contentId].nativePrice = price;\n        }\n\n        emit TokenPriceUpdated(contentId, token, price);\n    }\n\n    /**\n     * @dev Batch set content prices for multiple contents (address(0) for native token)\n     * @param contentIds Content ID array\n     * @param token Token address (address(0) for native)\n     * @param prices Price array\n     */\n    function batchSetContentPrice(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices\n    ) external onlyAdmin {\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\n                i\n            ];\n\n            // Sync with nativePrice for backward compatibility\n            if (token == address(0)) {\n                _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\n            }\n\n            emit TokenPriceUpdated(contentIds[i], token, prices[i]);\n        }\n    }\n\n    // ============ Payment Token Management Functions ============\n\n    /**\n     * @dev Add supported token (address(0) for native token)\n     * @param token Token address to add (address(0) for native)\n     */\n    function addSupportedToken(address token) external onlyAdmin {\n        if (!_storage.tokenExists[token]) {\n            _storage.tokenExists[token] = true;\n            _storage.tokenIndexes[token] = _storage.allSupportedTokens.length;\n            _storage.allSupportedTokens.push(token);\n        }\n        _storage.supportedTokens[token] = true;\n        emit SupportedTokenAdded(token);\n    }\n\n    /**\n     * @dev Remove supported token (address(0) for native token)\n     * @param token Token address to remove (address(0) for native)\n     */\n    function removeSupportedToken(address token) external onlyAdmin {\n        _storage.supportedTokens[token] = false;\n\n        if (_storage.tokenExists[token]) {\n            uint256 tokenIndex = _storage.tokenIndexes[token];\n            uint256 lastIndex = _storage.allSupportedTokens.length - 1;\n\n            // Move the last token to the position of the token to remove\n            if (tokenIndex != lastIndex) {\n                address lastToken = _storage.allSupportedTokens[lastIndex];\n                _storage.allSupportedTokens[tokenIndex] = lastToken;\n                _storage.tokenIndexes[lastToken] = tokenIndex;\n            }\n\n            // Remove the last element\n            _storage.allSupportedTokens.pop();\n            delete _storage.tokenExists[token];\n            delete _storage.tokenIndexes[token];\n        }\n\n        emit SupportedTokenRemoved(token);\n    }\n\n    /**\n     * @dev Check if token is supported\n     * @param token Token address to check\n     * @return Whether token is supported\n     */\n    function isSupportedToken(address token) external view returns (bool) {\n        return _storage.supportedTokens[token];\n    }\n\n    // ============ Token Enumeration Functions ============\n\n    /**\n     * @dev Get all supported tokens\n     * @return All supported token addresses\n     */\n    function getAllSupportedTokens() external view returns (address[] memory) {\n        return _storage.allSupportedTokens;\n    }\n\n    // ============ Purchase Functions ============\n\n    /**\n     * @dev Purchase content with token (address(0) for native token)\n     * @param contentId Content ID\n     * @param paymentToken Payment token address (address(0) for native)\n     * @param amount Payment amount\n     */\n    function purchaseContent(\n        uint256 contentId,\n        address paymentToken,\n        uint256 amount\n    ) external payable nonReentrant whenNotPaused validContent(contentId) {\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\n\n        uint256 expectedPrice;\n        if (paymentToken == address(0)) {\n            // Native token payment\n            expectedPrice = _storage.contentConfigs[contentId].nativePrice;\n            if (msg.value != expectedPrice) revert InsufficientPayment();\n            if (amount != msg.value) revert InsufficientPayment();\n\n            // Transfer native token directly to treasury\n            (bool success, ) = _storage.treasury.call{value: msg.value}(\"\");\n            if (!success) revert TransferFailed();\n        } else {\n            // ERC20 token payment\n            expectedPrice = _storage.contentConfigs[contentId].tokenPrices[\n                paymentToken\n            ];\n            if (expectedPrice != amount) revert InsufficientPayment();\n\n            // Transfer ERC20 token directly to treasury\n            bool success = IERC20(paymentToken).transferFrom(\n                msg.sender,\n                _storage.treasury,\n                amount\n            );\n            if (!success) revert TransferFailed();\n        }\n\n        // Create view permission\n        _updateViewPermission(msg.sender, contentId);\n\n        // Emit event - no more validUntil time\n        emit ContentPurchased(\n            msg.sender,\n            contentId,\n            paymentToken,\n            amount,\n            _storage.contentConfigs[contentId].viewCount\n        );\n    }\n\n    /**\n     * @dev Batch purchase content with token (address(0) for native token)\n     * @param contentIds Content ID array\n     * @param paymentToken Payment token address (address(0) for native)\n     * @param totalAmount Total payment amount\n     */\n    function batchPurchase(\n        uint256[] memory contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    ) external payable nonReentrant whenNotPaused {\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\n\n        uint256 expectedTotal = 0;\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\n                revert InvalidContent();\n\n            if (paymentToken == address(0)) {\n                expectedTotal += _storage\n                    .contentConfigs[contentIds[i]]\n                    .nativePrice;\n            } else {\n                expectedTotal += _storage\n                    .contentConfigs[contentIds[i]]\n                    .tokenPrices[paymentToken];\n            }\n        }\n\n        if (totalAmount != expectedTotal) revert InsufficientPayment();\n\n        if (paymentToken == address(0)) {\n            // Native token payment\n            if (msg.value != totalAmount) revert InsufficientPayment();\n\n            // Transfer native token directly to treasury\n            (bool success, ) = _storage.treasury.call{value: msg.value}(\"\");\n            if (!success) revert TransferFailed();\n        } else {\n            // ERC20 token payment\n            bool success = IERC20(paymentToken).transferFrom(\n                msg.sender,\n                _storage.treasury,\n                totalAmount\n            );\n            if (!success) revert TransferFailed();\n        }\n\n        // Create view permissions\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _updateViewPermission(msg.sender, contentIds[i]);\n        }\n\n        // Emit event\n        emit BatchPurchased(msg.sender, contentIds, paymentToken, totalAmount);\n    }\n\n    /**\n     * @dev Purchase content with NFT\n     * @param contentId Content ID\n     * @param nftContract NFT contract address\n     * @param tokenId NFT token ID\n     */\n    function purchaseWithNFT(\n        uint256 contentId,\n        address nftContract,\n        uint256 tokenId\n    ) external nonReentrant whenNotPaused validContent(contentId) {\n        // Check NFT ownership\n        if (IERC721(nftContract).ownerOf(tokenId) != msg.sender)\n            revert NoValidPermission();\n\n        // Transfer NFT (burn it by transferring to this contract)\n        IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId);\n\n        // Create view permission\n        _updateViewPermission(msg.sender, contentId);\n\n        // Emit event\n        emit NFTPurchased(msg.sender, contentId, nftContract, tokenId);\n    }\n\n    /**\n     * @dev Internal function to update view permission\n     * @param user User address\n     * @param contentId Content ID\n     */\n    function _updateViewPermission(address user, uint256 contentId) internal {\n        VideoPaymentStorage.ViewPermission storage existing = _storage\n            .userPermissions[user][contentId];\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\n\n        if (viewCount == 0) {\n            // One-time purchase: Check if already purchased\n            if (existing.isValid) {\n                // User already has valid permission, no need to do anything\n                // This allows the purchase to succeed without duplicate payment\n                return;\n            }\n            // Create new permission for unlimited viewing\n            existing.purchaseTime = block.timestamp;\n            existing.remainingViews = 0; // 0 means unlimited\n            existing.isValid = true;\n        } else {\n            // View-count based: Add to existing or create new\n            if (existing.isValid) {\n                // Existing permission is still valid, accumulate view count\n                existing.remainingViews += viewCount;\n                emit ViewCountAdded(\n                    user,\n                    contentId,\n                    viewCount,\n                    existing.remainingViews\n                );\n            } else {\n                // No existing permission, create new\n                existing.purchaseTime = block.timestamp;\n                existing.remainingViews = viewCount;\n                existing.isValid = true;\n            }\n        }\n    }\n\n    // ============ Permission Verification Functions ============\n\n    /**\n     * @dev Check if user has valid view permission\n     * @param user User address\n     * @param contentId Content ID\n     * @return Whether user has valid permission\n     */\n    function hasViewPermission(\n        address user,\n        uint256 contentId\n    ) external view returns (bool) {\n        VideoPaymentStorage.ViewPermission memory permission = _storage\n            .userPermissions[user][contentId];\n\n        if (!permission.isValid) {\n            return false;\n        }\n\n        // Get view count to determine content type\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\n\n        if (viewCount == 0) {\n            // One-time purchase: always valid if permission exists\n            return true;\n        } else {\n            // View-count based: valid if there are remaining views\n            return permission.remainingViews > 0;\n        }\n    }\n\n    /**\n     * @dev Get user permissions for multiple contents\n     * @param user User address\n     * @param contentIds Content ID array\n     * @return Permission array\n     */\n    function getUserPermissions(\n        address user,\n        uint256[] memory contentIds\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory) {\n        VideoPaymentStorage.ViewPermission[]\n            memory permissions = new VideoPaymentStorage.ViewPermission[](\n                contentIds.length\n            );\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            permissions[i] = _storage.userPermissions[user][contentIds[i]];\n        }\n\n        return permissions;\n    }\n\n    /**\n     * @dev Get detailed permission info\n     * @param user User address\n     * @param contentId Content ID\n     * @return Permission details\n     */\n    function getPermissionDetails(\n        address user,\n        uint256 contentId\n    ) external view returns (VideoPaymentStorage.ViewPermission memory) {\n        return _storage.userPermissions[user][contentId];\n    }\n\n    /**\n     * @dev Consume one view for user\n     * @param user User address\n     * @param contentId Content ID\n     * @return Success status\n     */\n    function consumeView(\n        address user,\n        uint256 contentId\n    ) external onlyAdmin returns (bool) {\n        VideoPaymentStorage.ViewPermission storage permission = _storage\n            .userPermissions[user][contentId];\n\n        if (!permission.isValid) {\n            revert NoValidPermission();\n        }\n\n        // Get view count to determine if this is unlimited or count-based\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\n\n        if (viewCount == 0) {\n            // One-time purchase with unlimited viewing - don't decrement\n            emit ViewConsumed(user, contentId, 0); // 0 indicates unlimited\n            return true;\n        } else {\n            // View-count based purchase - check and decrement\n            if (permission.remainingViews == 0) {\n                revert NoValidPermission();\n            }\n\n            // Consume one view\n            permission.remainingViews--;\n\n            emit ViewConsumed(user, contentId, permission.remainingViews);\n\n            // Mark as invalid if no views remaining\n            if (permission.remainingViews == 0) {\n                permission.isValid = false;\n                emit PermissionExpired(user, contentId);\n            }\n\n            return true;\n        }\n    }\n\n    /**\n     * @dev Batch consume views for multiple users\n     * @param users User address array\n     * @param contentIds Content ID array\n     * @return Success status array\n     */\n    function batchConsumeView(\n        address[] memory users,\n        uint256[] memory contentIds\n    ) external onlyAdmin returns (bool[] memory) {\n        if (users.length != contentIds.length) revert ArrayLengthMismatch();\n\n        bool[] memory results = new bool[](users.length);\n\n        for (uint256 i = 0; i < users.length; i++) {\n            VideoPaymentStorage.ViewPermission storage permission = _storage\n                .userPermissions[users[i]][contentIds[i]];\n\n            if (!permission.isValid) {\n                results[i] = false;\n                continue;\n            }\n\n            // Get view count to determine if this is unlimited or count-based\n            uint256 viewCount = _storage\n                .contentConfigs[contentIds[i]]\n                .viewCount;\n\n            if (viewCount == 0) {\n                // One-time purchase with unlimited viewing - don't decrement\n                emit ViewConsumed(users[i], contentIds[i], 0); // 0 indicates unlimited\n                results[i] = true;\n            } else {\n                // View-count based purchase - check and decrement\n                if (permission.remainingViews == 0) {\n                    results[i] = false;\n                    continue;\n                }\n\n                // Consume one view\n                permission.remainingViews--;\n                emit ViewConsumed(\n                    users[i],\n                    contentIds[i],\n                    permission.remainingViews\n                );\n\n                // Mark as invalid if no views remaining\n                if (permission.remainingViews == 0) {\n                    permission.isValid = false;\n                    emit PermissionExpired(users[i], contentIds[i]);\n                }\n\n                results[i] = true;\n            }\n        }\n\n        return results;\n    }\n\n    // ============ Content Query Functions ============\n\n    /**\n     * @dev Get content purchase information\n     * @param contentId Content ID\n     * @return Purchase information including supported tokens and prices\n     */\n    function getContentPurchaseInfo(\n        uint256 contentId\n    ) external view returns (IVideoPayment.ContentPurchaseInfo memory) {\n        VideoPaymentStorage.ContentConfig storage config = _storage\n            .contentConfigs[contentId];\n\n        // Get supported tokens for this content\n        (\n            address[] memory supportedTokens,\n            uint256[] memory prices\n        ) = _getSupportedTokensForContent(contentId);\n\n        return\n            IVideoPayment.ContentPurchaseInfo({\n                viewCount: config.viewCount,\n                isActive: config.isActive,\n                supportedTokens: supportedTokens,\n                tokenPrices: prices,\n                isUnlimitedViewing: config.viewCount == 0\n            });\n    }\n\n    /**\n     * @dev Internal function to get supported tokens and prices for content\n     * @param contentId Content ID\n     * @return supportedTokens Array of supported token addresses\n     * @return prices Array of corresponding prices\n     */\n    function _getSupportedTokensForContent(\n        uint256 contentId\n    )\n        internal\n        view\n        returns (address[] memory supportedTokens, uint256[] memory prices)\n    {\n        // Count supported tokens with prices set for this content\n        uint256 count = 0;\n        uint256 totalTokens = _storage.allSupportedTokens.length;\n\n        // Count tokens that have prices set and are supported\n        for (uint256 i = 0; i < totalTokens; i++) {\n            address token = _storage.allSupportedTokens[i];\n            if (_storage.supportedTokens[token]) {\n                uint256 price;\n                if (token == address(0)) {\n                    price = _storage.contentConfigs[contentId].nativePrice;\n                } else {\n                    price = _storage.contentConfigs[contentId].tokenPrices[\n                        token\n                    ];\n                }\n                if (price > 0) {\n                    count++;\n                }\n            }\n        }\n\n        // Create arrays with exact size\n        supportedTokens = new address[](count);\n        prices = new uint256[](count);\n\n        uint256 index = 0;\n\n        // Fill arrays with tokens that have prices set\n        for (uint256 i = 0; i < totalTokens; i++) {\n            address token = _storage.allSupportedTokens[i];\n            if (_storage.supportedTokens[token]) {\n                uint256 price;\n                if (token == address(0)) {\n                    price = _storage.contentConfigs[contentId].nativePrice;\n                } else {\n                    price = _storage.contentConfigs[contentId].tokenPrices[\n                        token\n                    ];\n                }\n                if (price > 0) {\n                    supportedTokens[index] = token;\n                    prices[index] = price;\n                    index++;\n                }\n            }\n        }\n    }\n\n    // ============ Emergency Control Functions ============\n\n    /**\n     * @dev Pause contract\n     */\n    function pause() external onlyOwner {\n        _storage.paused = true;\n        emit Paused();\n    }\n\n    /**\n     * @dev Unpause contract\n     */\n    function unpause() external onlyOwner {\n        _storage.paused = false;\n        emit Unpaused();\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[267]},"id":268,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:0"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"139:2209:0","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":267,"linearizedBaseContracts":[267],"name":"Initializable","nameLocation":"2367:13:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"2387:293:0","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":10,"members":[{"constant":false,"id":6,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:0","nodeType":"VariableDeclaration","scope":10,"src":"2813:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:0","nodeType":"VariableDeclaration","scope":10,"src":"2950:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:0","nodeType":"StructDefinition","scope":267,"src":"2685:290:0","visibility":"public"},{"constant":true,"id":13,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:0","nodeType":"VariableDeclaration","scope":267,"src":"3098:115:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:0","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"3220:60:0","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":16,"name":"InvalidInitialization","nameLocation":"3291:21:0","nodeType":"ErrorDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"3312:2:0"},"src":"3285:30:0"},{"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"3321:57:0","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":19,"name":"NotInitializing","nameLocation":"3389:15:0","nodeType":"ErrorDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"3404:2:0"},"src":"3383:24:0"},{"anonymous":false,"documentation":{"id":20,"nodeType":"StructuredDocumentation","src":"3413:90:0","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":24,"name":"Initialized","nameLocation":"3514:11:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:0","nodeType":"VariableDeclaration","scope":24,"src":"3526:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":21,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:0"},"src":"3508:34:0"},{"body":{"id":106,"nodeType":"Block","src":"4092:1079:0","statements":[{"assignments":[29],"declarations":[{"constant":false,"id":29,"mutability":"mutable","name":"$","nameLocation":"4187:1:0","nodeType":"VariableDeclaration","scope":106,"src":"4158:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":28,"nodeType":"UserDefinedTypeName","pathNode":{"id":27,"name":"InitializableStorage","nameLocations":["4158:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"4158:20:0"},"referencedDeclaration":10,"src":"4158:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":32,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":30,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"4191:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":31,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:0"},{"assignments":[34],"declarations":[{"constant":false,"id":34,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:0","nodeType":"VariableDeclaration","scope":106,"src":"4279:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":38,"initialValue":{"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:0","subExpression":{"expression":{"id":35,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4302:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":36,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"4302:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:0"},{"assignments":[40],"declarations":[{"constant":false,"id":40,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:0","nodeType":"VariableDeclaration","scope":106,"src":"4327:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":39,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":43,"initialValue":{"expression":{"id":41,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4348:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":42,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"4348:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:0"},{"assignments":[45],"declarations":[{"constant":false,"id":45,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:0","nodeType":"VariableDeclaration","scope":106,"src":"4704:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":44,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":46,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"4724:11:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":49,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"4744:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:0"},{"assignments":[53],"declarations":[{"constant":false,"id":53,"mutability":"mutable","name":"construction","nameLocation":"4773:12:0","nodeType":"VariableDeclaration","scope":106,"src":"4768:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":66,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"4788:11:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":55,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":59,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$267","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$267","typeString":"contract Initializable"}],"id":58,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:0","typeDescriptions":{}}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:0","memberName":"code","nodeType":"MemberAccess","src":"4808:18:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:0","memberName":"length","nodeType":"MemberAccess","src":"4808:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:0","subExpression":{"id":67,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"4854:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:0","subExpression":{"id":69,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"4871:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76,"nodeType":"IfStatement","src":"4849:91:0","trueBody":{"id":75,"nodeType":"Block","src":"4885:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":72,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"4906:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":74,"nodeType":"RevertStatement","src":"4899:30:0"}]}},{"expression":{"id":81,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4949:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":79,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"4949:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":82,"nodeType":"ExpressionStatement","src":"4949:18:0"},{"condition":{"id":83,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"4981:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91,"nodeType":"IfStatement","src":"4977:67:0","trueBody":{"id":90,"nodeType":"Block","src":"4997:47:0","statements":[{"expression":{"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5011:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":86,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"5011:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":89,"nodeType":"ExpressionStatement","src":"5011:22:0"}]}},{"id":92,"nodeType":"PlaceholderStatement","src":"5053:1:0"},{"condition":{"id":93,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"5068:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":105,"nodeType":"IfStatement","src":"5064:101:0","trueBody":{"id":104,"nodeType":"Block","src":"5084:81:0","statements":[{"expression":{"id":98,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":94,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5098:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":96,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"5098:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":99,"nodeType":"ExpressionStatement","src":"5098:23:0"},{"eventCall":{"arguments":[{"hexValue":"31","id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:0","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":100,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"5140:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"EmitStatement","src":"5135:19:0"}]}}]},"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"3548:516:0","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":107,"name":"initializer","nameLocation":"4078:11:0","nodeType":"ModifierDefinition","parameters":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"4089:2:0"},"src":"4069:1102:0","virtual":false,"visibility":"internal"},{"body":{"id":153,"nodeType":"Block","src":"6289:392:0","statements":[{"assignments":[114],"declarations":[{"constant":false,"id":114,"mutability":"mutable","name":"$","nameLocation":"6384:1:0","nodeType":"VariableDeclaration","scope":153,"src":"6355:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":113,"nodeType":"UserDefinedTypeName","pathNode":{"id":112,"name":"InitializableStorage","nameLocations":["6355:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"6355:20:0"},"referencedDeclaration":10,"src":"6355:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":117,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":115,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"6388:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":118,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6429:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6429:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6448:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"6448:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":122,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6466:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":129,"nodeType":"IfStatement","src":"6425:105:0","trueBody":{"id":128,"nodeType":"Block","src":"6475:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":125,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"6496:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":127,"nodeType":"RevertStatement","src":"6489:30:0"}]}},{"expression":{"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":130,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6539:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"6539:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":133,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6556:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":135,"nodeType":"ExpressionStatement","src":"6539:24:0"},{"expression":{"id":140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6573:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6573:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":141,"nodeType":"ExpressionStatement","src":"6573:22:0"},{"id":142,"nodeType":"PlaceholderStatement","src":"6605:1:0"},{"expression":{"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":143,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6616:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6616:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"ExpressionStatement","src":"6616:23:0"},{"eventCall":{"arguments":[{"id":150,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6666:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":149,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6654:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":152,"nodeType":"EmitStatement","src":"6649:25:0"}]},"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"5177:1068:0","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":154,"name":"reinitializer","nameLocation":"6259:13:0","nodeType":"ModifierDefinition","parameters":{"id":111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"version","nameLocation":"6280:7:0","nodeType":"VariableDeclaration","scope":154,"src":"6273:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":109,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:0"},"src":"6250:431:0","virtual":false,"visibility":"internal"},{"body":{"id":161,"nodeType":"Block","src":"6919:48:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":157,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"6929:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":159,"nodeType":"ExpressionStatement","src":"6929:20:0"},{"id":160,"nodeType":"PlaceholderStatement","src":"6959:1:0"}]},"documentation":{"id":155,"nodeType":"StructuredDocumentation","src":"6687:199:0","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":162,"name":"onlyInitializing","nameLocation":"6900:16:0","nodeType":"ModifierDefinition","parameters":{"id":156,"nodeType":"ParameterList","parameters":[],"src":"6916:2:0"},"src":"6891:76:0","virtual":false,"visibility":"internal"},{"body":{"id":174,"nodeType":"Block","src":"7134:89:0","statements":[{"condition":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:0","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":166,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"7149:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":173,"nodeType":"IfStatement","src":"7144:73:0","trueBody":{"id":172,"nodeType":"Block","src":"7168:49:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":169,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"7189:15:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":171,"nodeType":"RevertStatement","src":"7182:24:0"}]}}]},"documentation":{"id":163,"nodeType":"StructuredDocumentation","src":"6973:104:0","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":175,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:0","nodeType":"FunctionDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[],"src":"7109:2:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[],"src":"7134:0:0"},"scope":267,"src":"7082:141:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":220,"nodeType":"Block","src":"7758:373:0","statements":[{"assignments":[181],"declarations":[{"constant":false,"id":181,"mutability":"mutable","name":"$","nameLocation":"7853:1:0","nodeType":"VariableDeclaration","scope":220,"src":"7824:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":180,"nodeType":"UserDefinedTypeName","pathNode":{"id":179,"name":"InitializableStorage","nameLocations":["7824:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"7824:20:0"},"referencedDeclaration":10,"src":"7824:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":184,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":182,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"7857:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:0"},{"condition":{"expression":{"id":185,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"7898:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"7898:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":191,"nodeType":"IfStatement","src":"7894:76:0","trueBody":{"id":190,"nodeType":"Block","src":"7915:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":187,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"7936:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":189,"nodeType":"RevertStatement","src":"7929:30:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":192,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"7983:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"7983:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":195,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":194,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:0","memberName":"max","nodeType":"MemberAccess","src":"8001:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":219,"nodeType":"IfStatement","src":"7979:146:0","trueBody":{"id":218,"nodeType":"Block","src":"8019:106:0","statements":[{"expression":{"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":200,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"8033:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"8033:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":204,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":203,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:0","memberName":"max","nodeType":"MemberAccess","src":"8050:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":209,"nodeType":"ExpressionStatement","src":"8033:33:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":212,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":211,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:0","memberName":"max","nodeType":"MemberAccess","src":"8097:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":210,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"8085:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":217,"nodeType":"EmitStatement","src":"8080:34:0"}]}}]},"documentation":{"id":176,"nodeType":"StructuredDocumentation","src":"7229:475:0","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":221,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:0","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[],"src":"7738:2:0"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[],"src":"7758:0:0"},"scope":267,"src":"7709:422:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":231,"nodeType":"Block","src":"8306:63:0","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":227,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"8323:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"8323:39:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":226,"id":230,"nodeType":"Return","src":"8316:46:0"}]},"documentation":{"id":222,"nodeType":"StructuredDocumentation","src":"8137:99:0","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":232,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:0","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[],"src":"8272:2:0"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":232,"src":"8298:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":224,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:0"},"scope":267,"src":"8241:128:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":242,"nodeType":"Block","src":"8541:64:0","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":238,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"8558:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"8558:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":237,"id":241,"nodeType":"Return","src":"8551:47:0"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"8375:105:0","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":243,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:0","nodeType":"FunctionDefinition","parameters":{"id":234,"nodeType":"ParameterList","parameters":[],"src":"8509:2:0"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":243,"src":"8535:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":235,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:0"},"scope":267,"src":"8485:120:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":251,"nodeType":"Block","src":"8896:45:0","statements":[{"expression":{"id":249,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"8913:21:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":248,"id":250,"nodeType":"Return","src":"8906:28:0"}]},"documentation":{"id":244,"nodeType":"StructuredDocumentation","src":"8611:203:0","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"id":252,"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:0","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[],"src":"8853:2:0"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":252,"src":"8887:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:0"},"scope":267,"src":"8819:122:0","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":265,"nodeType":"Block","src":"9161:115:0","statements":[{"assignments":[260],"declarations":[{"constant":false,"id":260,"mutability":"mutable","name":"slot","nameLocation":"9179:4:0","nodeType":"VariableDeclaration","scope":265,"src":"9171:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":263,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":261,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"9186:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:0"},{"AST":{"nativeSrc":"9232:38:0","nodeType":"YulBlock","src":"9232:38:0","statements":[{"nativeSrc":"9246:14:0","nodeType":"YulAssignment","src":"9246:14:0","value":{"name":"slot","nativeSrc":"9256:4:0","nodeType":"YulIdentifier","src":"9256:4:0"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:0","nodeType":"YulIdentifier","src":"9246:6:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":257,"isOffset":false,"isSlot":true,"src":"9246:6:0","suffix":"slot","valueSize":1},{"declaration":260,"isOffset":false,"isSlot":false,"src":"9256:4:0","valueSize":1}],"id":264,"nodeType":"InlineAssembly","src":"9223:47:0"}]},"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"8947:67:0","text":" @dev Returns a pointer to the storage namespace."},"id":266,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:0","nodeType":"FunctionDefinition","parameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"9104:2:0"},"returnParameters":{"id":258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"$","nameLocation":"9158:1:0","nodeType":"VariableDeclaration","scope":266,"src":"9129:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":256,"nodeType":"UserDefinedTypeName","pathNode":{"id":255,"name":"InitializableStorage","nameLocations":["9129:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"9129:20:0"},"referencedDeclaration":10,"src":"9129:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:0"},"scope":267,"src":"9071:205:0","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":268,"src":"2349:6929:0","usedErrors":[16,19],"usedEvents":[24]}],"src":"113:9166:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[913],"IERC1822Proxiable":[619],"Initializable":[267],"UUPSUpgradeable":[449]},"id":450,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":269,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"115:24:1"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":271,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":620,"src":"141:88:1","symbolAliases":[{"foreign":{"id":270,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"149:17:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":914,"src":"230:84:1","symbolAliases":[{"foreign":{"id":272,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"238:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":268,"src":"315:50:1","symbolAliases":[{"foreign":{"id":274,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"323:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":277,"name":"Initializable","nameLocations":["1023:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"1023:13:1"},"id":278,"nodeType":"InheritanceSpecifier","src":"1023:13:1"},{"baseName":{"id":279,"name":"IERC1822Proxiable","nameLocations":["1038:17:1"],"nodeType":"IdentifierPath","referencedDeclaration":619,"src":"1038:17:1"},"id":280,"nodeType":"InheritanceSpecifier","src":"1038:17:1"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"367:618:1","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":449,"linearizedBaseContracts":[449,619,267],"name":"UUPSUpgradeable","nameLocation":"1004:15:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"1062:61:1","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":287,"mutability":"immutable","name":"__self","nameLocation":"1154:6:1","nodeType":"VariableDeclaration","scope":449,"src":"1128:48:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":282,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":285,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":283,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:1","typeDescriptions":{}}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"1183:631:1","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":291,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:1","nodeType":"VariableDeclaration","scope":449,"src":"1819:58:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":289,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"1884:65:1","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":294,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:1","nodeType":"ErrorDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[],"src":"1987:2:1"},"src":"1954:36:1"},{"documentation":{"id":295,"nodeType":"StructuredDocumentation","src":"1996:68:1","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":299,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:1","nodeType":"ErrorDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":297,"mutability":"mutable","name":"slot","nameLocation":"2112:4:1","nodeType":"VariableDeclaration","scope":299,"src":"2104:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:1"},"src":"2069:49:1"},{"body":{"id":306,"nodeType":"Block","src":"2645:41:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":302,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"2655:11:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":304,"nodeType":"ExpressionStatement","src":"2655:13:1"},{"id":305,"nodeType":"PlaceholderStatement","src":"2678:1:1"}]},"documentation":{"id":300,"nodeType":"StructuredDocumentation","src":"2124:495:1","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 ERC-1967) 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 ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":307,"name":"onlyProxy","nameLocation":"2633:9:1","nodeType":"ModifierDefinition","parameters":{"id":301,"nodeType":"ParameterList","parameters":[],"src":"2642:2:1"},"src":"2624:62:1","virtual":false,"visibility":"internal"},{"body":{"id":314,"nodeType":"Block","src":"2916:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"2926:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":312,"nodeType":"ExpressionStatement","src":"2926:20:1"},{"id":313,"nodeType":"PlaceholderStatement","src":"2956:1:1"}]},"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"2692:195:1","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":315,"name":"notDelegated","nameLocation":"2901:12:1","nodeType":"ModifierDefinition","parameters":{"id":309,"nodeType":"ParameterList","parameters":[],"src":"2913:2:1"},"src":"2892:72:1","virtual":false,"visibility":"internal"},{"body":{"id":320,"nodeType":"Block","src":"3030:7:1","statements":[]},"id":321,"implemented":true,"kind":"function","modifiers":[{"id":318,"kind":"modifierInvocation","modifierName":{"id":317,"name":"onlyInitializing","nameLocations":["3013:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"3013:16:1"},"nodeType":"ModifierInvocation","src":"3013:16:1"}],"name":"__UUPSUpgradeable_init","nameLocation":"2979:22:1","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[],"src":"3001:2:1"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[],"src":"3030:0:1"},"scope":449,"src":"2970:67:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":326,"nodeType":"Block","src":"3113:7:1","statements":[]},"id":327,"implemented":true,"kind":"function","modifiers":[{"id":324,"kind":"modifierInvocation","modifierName":{"id":323,"name":"onlyInitializing","nameLocations":["3096:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"3096:16:1"},"nodeType":"ModifierInvocation","src":"3096:16:1"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3052:32:1","nodeType":"FunctionDefinition","parameters":{"id":322,"nodeType":"ParameterList","parameters":[],"src":"3084:2:1"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"3113:0:1"},"scope":449,"src":"3043:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[618],"body":{"id":338,"nodeType":"Block","src":"3786:56:1","statements":[{"expression":{"expression":{"id":335,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"3803:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$913_$","typeString":"type(library ERC1967Utils)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3816:19:1","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":634,"src":"3803:32:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":334,"id":337,"nodeType":"Return","src":"3796:39:1"}]},"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"3125:578:1","text":" @dev Implementation of the ERC-1822 {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":339,"implemented":true,"kind":"function","modifiers":[{"id":331,"kind":"modifierInvocation","modifierName":{"id":330,"name":"notDelegated","nameLocations":["3755:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":315,"src":"3755:12:1"},"nodeType":"ModifierInvocation","src":"3755:12:1"}],"name":"proxiableUUID","nameLocation":"3717:13:1","nodeType":"FunctionDefinition","parameters":{"id":329,"nodeType":"ParameterList","parameters":[],"src":"3730:2:1"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":339,"src":"3777:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3777:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3776:9:1"},"scope":449,"src":"3708:134:1","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":358,"nodeType":"Block","src":"4266:109:1","statements":[{"expression":{"arguments":[{"id":350,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"4294:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":349,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4276:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"ExpressionStatement","src":"4276:36:1"},{"expression":{"arguments":[{"id":354,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"4344:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":355,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"4363:4:1","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":353,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"4322:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:46:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":357,"nodeType":"ExpressionStatement","src":"4322:46:1"}]},"documentation":{"id":340,"nodeType":"StructuredDocumentation","src":"3848:308:1","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":359,"implemented":true,"kind":"function","modifiers":[{"id":347,"kind":"modifierInvocation","modifierName":{"id":346,"name":"onlyProxy","nameLocations":["4256:9:1"],"nodeType":"IdentifierPath","referencedDeclaration":307,"src":"4256:9:1"},"nodeType":"ModifierInvocation","src":"4256:9:1"}],"name":"upgradeToAndCall","nameLocation":"4170:16:1","nodeType":"FunctionDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":342,"mutability":"mutable","name":"newImplementation","nameLocation":"4195:17:1","nodeType":"VariableDeclaration","scope":359,"src":"4187:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":341,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":344,"mutability":"mutable","name":"data","nameLocation":"4227:4:1","nodeType":"VariableDeclaration","scope":359,"src":"4214:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":343,"name":"bytes","nodeType":"ElementaryTypeName","src":"4214:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4186:46:1"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"4266:0:1"},"scope":449,"src":"4161:214:1","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":380,"nodeType":"Block","src":"4623:267:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":365,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4658:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4650:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:1","typeDescriptions":{}}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4650:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":367,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"4667:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4650:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":369,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"4728:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$913_$","typeString":"type(library ERC1967Utils)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4741:17:1","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":665,"src":"4728:30:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":372,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"4764:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4728:42:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4650:120:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":379,"nodeType":"IfStatement","src":"4633:251:1","trueBody":{"id":378,"nodeType":"Block","src":"4823:61:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":375,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4844:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":377,"nodeType":"RevertStatement","src":"4837:36:1"}]}}]},"documentation":{"id":360,"nodeType":"StructuredDocumentation","src":"4381:192:1","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self."},"id":381,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4587:11:1","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"4598:2:1"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[],"src":"4623:0:1"},"scope":449,"src":"4578:312:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":396,"nodeType":"Block","src":"5059:161:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":387,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5081:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5073:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"5073:7:1","typeDescriptions":{}}},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":389,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"5090:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5073:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":395,"nodeType":"IfStatement","src":"5069:145:1","trueBody":{"id":394,"nodeType":"Block","src":"5098:116:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":391,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"5174:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5174:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":393,"nodeType":"RevertStatement","src":"5167:36:1"}]}}]},"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"4896:106:1","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":397,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5016:18:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[],"src":"5034:2:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"5059:0:1"},"scope":449,"src":"5007:213:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":398,"nodeType":"StructuredDocumentation","src":"5226:372:1","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":403,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5612:17:1","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"mutability":"mutable","name":"newImplementation","nameLocation":"5638:17:1","nodeType":"VariableDeclaration","scope":403,"src":"5630:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":399,"name":"address","nodeType":"ElementaryTypeName","src":"5630:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5629:27:1"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[],"src":"5673:0:1"},"scope":449,"src":"5603:71:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":447,"nodeType":"Block","src":"6117:453:1","statements":[{"clauses":[{"block":{"id":436,"nodeType":"Block","src":"6207:212:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":419,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"6225:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":420,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"6233:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$913_$","typeString":"type(library ERC1967Utils)"}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6246:19:1","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":634,"src":"6233:32:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6225:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"IfStatement","src":"6221:120:1","trueBody":{"id":427,"nodeType":"Block","src":"6267:74:1","statements":[{"errorCall":{"arguments":[{"id":424,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"6321:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":423,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"6292:28:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6292:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":426,"nodeType":"RevertStatement","src":"6285:41:1"}]}},{"expression":{"arguments":[{"id":432,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6384:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":433,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"6403:4:1","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":429,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"6354:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$913_$","typeString":"type(library ERC1967Utils)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6367:16:1","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":728,"src":"6354:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:54:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":435,"nodeType":"ExpressionStatement","src":"6354:54:1"}]},"errorName":"","id":437,"nodeType":"TryCatchClause","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"slot","nameLocation":"6201:4:1","nodeType":"VariableDeclaration","scope":437,"src":"6193:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6193:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6192:14:1"},"src":"6184:235:1"},{"block":{"id":444,"nodeType":"Block","src":"6426:138:1","statements":[{"errorCall":{"arguments":[{"id":441,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6535:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":438,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"6493:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$913_$","typeString":"type(library ERC1967Utils)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6506:28:1","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":639,"src":"6493:41:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":443,"nodeType":"RevertStatement","src":"6486:67:1"}]},"errorName":"","id":445,"nodeType":"TryCatchClause","src":"6420:144:1"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":412,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6149:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":411,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"6131:17:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$619_$","typeString":"type(contract IERC1822Proxiable)"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$619","typeString":"contract IERC1822Proxiable"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:13:1","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":618,"src":"6131:50:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:52:1","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":446,"nodeType":"TryStatement","src":"6127:437:1"}]},"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"5680:347:1","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 ERC-1967.\n Emits an {IERC1967-Upgraded} event."},"id":448,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6041:21:1","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"newImplementation","nameLocation":"6071:17:1","nodeType":"VariableDeclaration","scope":448,"src":"6063:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"data","nameLocation":"6103:4:1","nodeType":"VariableDeclaration","scope":448,"src":"6090:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":407,"name":"bytes","nodeType":"ElementaryTypeName","src":"6090:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6062:46:1"},"returnParameters":{"id":410,"nodeType":"ParameterList","parameters":[],"src":"6117:0:1"},"scope":449,"src":"6032:538:1","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":450,"src":"986:5586:1","usedErrors":[16,19,294,299,639,652,1251,1514],"usedEvents":[24,586]}],"src":"115:6458:1"},"id":1},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[267],"ReentrancyGuardUpgradeable":[578]},"id":579,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":451,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":453,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":579,"sourceUnit":268,"src":"134:63:2","symbolAliases":[{"foreign":{"id":452,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"142:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":455,"name":"Initializable","nameLocations":["1142:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"1142:13:2"},"id":456,"nodeType":"InheritanceSpecifier","src":"1142:13:2"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"199:894:2","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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\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":578,"linearizedBaseContracts":[578,267],"name":"ReentrancyGuardUpgradeable","nameLocation":"1112:26:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":459,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1935:11:2","nodeType":"VariableDeclaration","scope":578,"src":"1910:40:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1949:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":462,"mutability":"constant","name":"ENTERED","nameLocation":"1981:7:2","nodeType":"VariableDeclaration","scope":578,"src":"1956:36:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1956:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:1:2","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":463,"nodeType":"StructuredDocumentation","src":"1999:73:2","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"id":466,"members":[{"constant":false,"id":465,"mutability":"mutable","name":"_status","nameLocation":"2125:7:2","nodeType":"VariableDeclaration","scope":466,"src":"2117:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"2084:22:2","nodeType":"StructDefinition","scope":578,"src":"2077:62:2","visibility":"public"},{"constant":true,"id":469,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2289:30:2","nodeType":"VariableDeclaration","scope":578,"src":"2264:124:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2264:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:66:2","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"body":{"id":476,"nodeType":"Block","src":"2489:89:2","statements":[{"AST":{"nativeSrc":"2508:64:2","nodeType":"YulBlock","src":"2508:64:2","statements":[{"nativeSrc":"2522:40:2","nodeType":"YulAssignment","src":"2522:40:2","value":{"name":"ReentrancyGuardStorageLocation","nativeSrc":"2532:30:2","nodeType":"YulIdentifier","src":"2532:30:2"},"variableNames":[{"name":"$.slot","nativeSrc":"2522:6:2","nodeType":"YulIdentifier","src":"2522:6:2"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":473,"isOffset":false,"isSlot":true,"src":"2522:6:2","suffix":"slot","valueSize":1},{"declaration":469,"isOffset":false,"isSlot":false,"src":"2532:30:2","valueSize":1}],"id":475,"nodeType":"InlineAssembly","src":"2499:73:2"}]},"id":477,"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2404:26:2","nodeType":"FunctionDefinition","parameters":{"id":470,"nodeType":"ParameterList","parameters":[],"src":"2430:2:2"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"$","nameLocation":"2486:1:2","nodeType":"VariableDeclaration","scope":477,"src":"2455:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":472,"nodeType":"UserDefinedTypeName","pathNode":{"id":471,"name":"ReentrancyGuardStorage","nameLocations":["2455:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"2455:22:2"},"referencedDeclaration":466,"src":"2455:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2454:34:2"},"scope":578,"src":"2395:183:2","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":478,"nodeType":"StructuredDocumentation","src":"2584:52:2","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":480,"name":"ReentrancyGuardReentrantCall","nameLocation":"2647:28:2","nodeType":"ErrorDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2675:2:2"},"src":"2641:37:2"},{"body":{"id":488,"nodeType":"Block","src":"2744:51:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":485,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"2754:32:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2754:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":487,"nodeType":"ExpressionStatement","src":"2754:34:2"}]},"id":489,"implemented":true,"kind":"function","modifiers":[{"id":483,"kind":"modifierInvocation","modifierName":{"id":482,"name":"onlyInitializing","nameLocations":["2727:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"2727:16:2"},"nodeType":"ModifierInvocation","src":"2727:16:2"}],"name":"__ReentrancyGuard_init","nameLocation":"2693:22:2","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"2715:2:2"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"2744:0:2"},"scope":578,"src":"2684:111:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":506,"nodeType":"Block","src":"2871:113:2","statements":[{"assignments":[496],"declarations":[{"constant":false,"id":496,"mutability":"mutable","name":"$","nameLocation":"2912:1:2","nodeType":"VariableDeclaration","scope":506,"src":"2881:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":495,"nodeType":"UserDefinedTypeName","pathNode":{"id":494,"name":"ReentrancyGuardStorage","nameLocations":["2881:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"2881:22:2"},"referencedDeclaration":466,"src":"2881:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":499,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":497,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"2916:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2916:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2881:63:2"},{"expression":{"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":500,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"2954:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2956:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"2954:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":503,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"2966:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:23:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":505,"nodeType":"ExpressionStatement","src":"2954:23:2"}]},"id":507,"implemented":true,"kind":"function","modifiers":[{"id":492,"kind":"modifierInvocation","modifierName":{"id":491,"name":"onlyInitializing","nameLocations":["2854:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"2854:16:2"},"nodeType":"ModifierInvocation","src":"2854:16:2"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2810:32:2","nodeType":"FunctionDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"2842:2:2"},"returnParameters":{"id":493,"nodeType":"ParameterList","parameters":[],"src":"2871:0:2"},"scope":578,"src":"2801:183:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"3385:79:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":510,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"3395:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3395:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"3395:21:2"},{"id":513,"nodeType":"PlaceholderStatement","src":"3426:1:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":514,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3437:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3437:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"3437:20:2"}]},"documentation":{"id":508,"nodeType":"StructuredDocumentation","src":"2990:366:2","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":518,"name":"nonReentrant","nameLocation":"3370:12:2","nodeType":"ModifierDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[],"src":"3382:2:2"},"src":"3361:103:2","virtual":false,"visibility":"internal"},{"body":{"id":542,"nodeType":"Block","src":"3509:345:2","statements":[{"assignments":[523],"declarations":[{"constant":false,"id":523,"mutability":"mutable","name":"$","nameLocation":"3550:1:2","nodeType":"VariableDeclaration","scope":542,"src":"3519:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":522,"nodeType":"UserDefinedTypeName","pathNode":{"id":521,"name":"ReentrancyGuardStorage","nameLocations":["3519:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"3519:22:2"},"referencedDeclaration":466,"src":"3519:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":526,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":524,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"3554:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3519:63:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":527,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3670:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3672:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"3670:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":529,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"3683:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3670:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":535,"nodeType":"IfStatement","src":"3666:88:2","trueBody":{"id":534,"nodeType":"Block","src":"3692:62:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":531,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"3713:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":533,"nodeType":"RevertStatement","src":"3706:37:2"}]}},{"expression":{"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":536,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3828:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3830:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"3828:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":539,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"3840:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3828:19:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":541,"nodeType":"ExpressionStatement","src":"3828:19:2"}]},"id":543,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3479:19:2","nodeType":"FunctionDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"3498:2:2"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[],"src":"3509:0:2"},"scope":578,"src":"3470:384:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":558,"nodeType":"Block","src":"3898:245:2","statements":[{"assignments":[548],"declarations":[{"constant":false,"id":548,"mutability":"mutable","name":"$","nameLocation":"3939:1:2","nodeType":"VariableDeclaration","scope":558,"src":"3908:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":547,"nodeType":"UserDefinedTypeName","pathNode":{"id":546,"name":"ReentrancyGuardStorage","nameLocations":["3908:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"3908:22:2"},"referencedDeclaration":466,"src":"3908:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":551,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":549,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"3943:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3908:63:2"},{"expression":{"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":552,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"4113:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4115:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"4113:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":555,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"4125:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4113:23:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":557,"nodeType":"ExpressionStatement","src":"4113:23:2"}]},"id":559,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3869:18:2","nodeType":"FunctionDefinition","parameters":{"id":544,"nodeType":"ParameterList","parameters":[],"src":"3887:2:2"},"returnParameters":{"id":545,"nodeType":"ParameterList","parameters":[],"src":"3898:0:2"},"scope":578,"src":"3860:283:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"4386:117:2","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"$","nameLocation":"4427:1:2","nodeType":"VariableDeclaration","scope":576,"src":"4396:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":566,"nodeType":"UserDefinedTypeName","pathNode":{"id":565,"name":"ReentrancyGuardStorage","nameLocations":["4396:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"4396:22:2"},"referencedDeclaration":466,"src":"4396:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":570,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"4431:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4431:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4396:63:2"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":571,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"4476:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4478:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"4476:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":573,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4489:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4476:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":564,"id":575,"nodeType":"Return","src":"4469:27:2"}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"4149:168:2","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":577,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4331:23:2","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[],"src":"4354:2:2"},"returnParameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":577,"src":"4380:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":562,"name":"bool","nodeType":"ElementaryTypeName","src":"4380:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4379:6:2"},"scope":578,"src":"4322:181:2","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":579,"src":"1094:3411:2","usedErrors":[16,19,480],"usedEvents":[24]}],"src":"109:4397:2"},"id":2},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[599]},"id":600,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":580,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":581,"nodeType":"StructuredDocumentation","src":"133:101:3","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"id":599,"linearizedBaseContracts":[599],"name":"IERC1967","nameLocation":"245:8:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":582,"nodeType":"StructuredDocumentation","src":"260:68:3","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":586,"name":"Upgraded","nameLocation":"339:8:3","nodeType":"EventDefinition","parameters":{"id":585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":584,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"364:14:3","nodeType":"VariableDeclaration","scope":586,"src":"348:30:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":583,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:32:3"},"src":"333:47:3"},{"anonymous":false,"documentation":{"id":587,"nodeType":"StructuredDocumentation","src":"386:67:3","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":593,"name":"AdminChanged","nameLocation":"464:12:3","nodeType":"EventDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":589,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"485:13:3","nodeType":"VariableDeclaration","scope":593,"src":"477:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":588,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":591,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"508:8:3","nodeType":"VariableDeclaration","scope":593,"src":"500:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:41:3"},"src":"458:60:3"},{"anonymous":false,"documentation":{"id":594,"nodeType":"StructuredDocumentation","src":"524:59:3","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":598,"name":"BeaconUpgraded","nameLocation":"594:14:3","nodeType":"EventDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"625:6:3","nodeType":"VariableDeclaration","scope":598,"src":"609:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":595,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"608:24:3"},"src":"588:45:3"}],"scope":600,"src":"235:400:3","usedErrors":[],"usedEvents":[586,593,598]}],"src":"107:529:3"},"id":3},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","exportedSymbols":{"IERC5313":[609]},"id":610,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":601,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5313","contractDependencies":[],"contractKind":"interface","documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"133:164:4","text":" @dev Interface for the Light Contract Ownership Standard.\n A standardized minimal interface required to identify an account that controls a contract"},"fullyImplemented":false,"id":609,"linearizedBaseContracts":[609],"name":"IERC5313","nameLocation":"308:8:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":603,"nodeType":"StructuredDocumentation","src":"323:54:4","text":" @dev Gets the address of the owner."},"functionSelector":"8da5cb5b","id":608,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"391:5:4","nodeType":"FunctionDefinition","parameters":{"id":604,"nodeType":"ParameterList","parameters":[],"src":"396:2:4"},"returnParameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":608,"src":"422:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"422:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"421:9:4"},"scope":609,"src":"382:49:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":610,"src":"298:135:4","usedErrors":[],"usedEvents":[]}],"src":"107:327:4"},"id":4},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[619]},"id":620,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":611,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":612,"nodeType":"StructuredDocumentation","src":"139:204:5","text":" @dev ERC-1822: 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":619,"linearizedBaseContracts":[619],"name":"IERC1822Proxiable","nameLocation":"354:17:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":613,"nodeType":"StructuredDocumentation","src":"378:438:5","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":618,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"830:13:5","nodeType":"FunctionDefinition","parameters":{"id":614,"nodeType":"ParameterList","parameters":[],"src":"843:2:5"},"returnParameters":{"id":617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":618,"src":"869:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"869:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"868:9:5"},"scope":619,"src":"821:57:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":620,"src":"344:536:5","usedErrors":[],"usedEvents":[]}],"src":"113:768:5"},"id":5},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[1501],"ERC1967Utils":[913],"IBeacon":[923],"IERC1967":[599],"StorageSlot":[1647]},"id":914,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":621,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:6"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":914,"sourceUnit":924,"src":"140:46:6","symbolAliases":[{"foreign":{"id":622,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"148:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":914,"sourceUnit":600,"src":"187:55:6","symbolAliases":[{"foreign":{"id":624,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"195:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":914,"sourceUnit":1502,"src":"243:48:6","symbolAliases":[{"foreign":{"id":626,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"251:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":914,"sourceUnit":1648,"src":"292:56:6","symbolAliases":[{"foreign":{"id":628,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"300:11:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"350:145:6","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"id":913,"linearizedBaseContracts":[913],"name":"ERC1967Utils","nameLocation":"504:12:6","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":631,"nodeType":"StructuredDocumentation","src":"523:170:6","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":634,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:6","nodeType":"VariableDeclaration","scope":913,"src":"763:114:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:6","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":635,"nodeType":"StructuredDocumentation","src":"884:69:6","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":639,"name":"ERC1967InvalidImplementation","nameLocation":"964:28:6","nodeType":"ErrorDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":637,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:6","nodeType":"VariableDeclaration","scope":639,"src":"993:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":636,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:6"},"src":"958:59:6"},{"documentation":{"id":640,"nodeType":"StructuredDocumentation","src":"1023:60:6","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":644,"name":"ERC1967InvalidAdmin","nameLocation":"1094:19:6","nodeType":"ErrorDefinition","parameters":{"id":643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":642,"mutability":"mutable","name":"admin","nameLocation":"1122:5:6","nodeType":"VariableDeclaration","scope":644,"src":"1114:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":641,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:6"},"src":"1088:41:6"},{"documentation":{"id":645,"nodeType":"StructuredDocumentation","src":"1135:61:6","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":649,"name":"ERC1967InvalidBeacon","nameLocation":"1207:20:6","nodeType":"ErrorDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":647,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:6","nodeType":"VariableDeclaration","scope":649,"src":"1228:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":646,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:6"},"src":"1201:43:6"},{"documentation":{"id":650,"nodeType":"StructuredDocumentation","src":"1250:82:6","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":652,"name":"ERC1967NonPayable","nameLocation":"1343:17:6","nodeType":"ErrorDefinition","parameters":{"id":651,"nodeType":"ParameterList","parameters":[],"src":"1360:2:6"},"src":"1337:26:6"},{"body":{"id":664,"nodeType":"Block","src":"1502:77:6","statements":[{"expression":{"expression":{"arguments":[{"id":660,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"1546:19:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":658,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"1519:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"1519:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"1519:53:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":657,"id":663,"nodeType":"Return","src":"1512:60:6"}]},"documentation":{"id":653,"nodeType":"StructuredDocumentation","src":"1369:67:6","text":" @dev Returns the current implementation address."},"id":665,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:6","nodeType":"FunctionDefinition","parameters":{"id":654,"nodeType":"ParameterList","parameters":[],"src":"1467:2:6"},"returnParameters":{"id":657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":665,"src":"1493:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:6"},"scope":913,"src":"1441:138:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":691,"nodeType":"Block","src":"1734:218:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":671,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1748:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:6","memberName":"code","nodeType":"MemberAccess","src":"1748:22:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:6","memberName":"length","nodeType":"MemberAccess","src":"1748:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":681,"nodeType":"IfStatement","src":"1744:119:6","trueBody":{"id":680,"nodeType":"Block","src":"1784:79:6","statements":[{"errorCall":{"arguments":[{"id":677,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1834:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":676,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"1805:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":679,"nodeType":"RevertStatement","src":"1798:54:6"}]}},{"expression":{"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":685,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"1899:19:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":682,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"1872:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"1872:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"1872:53:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":688,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1928:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":690,"nodeType":"ExpressionStatement","src":"1872:73:6"}]},"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"1585:81:6","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"id":692,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:6","nodeType":"FunctionDefinition","parameters":{"id":669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:6","nodeType":"VariableDeclaration","scope":692,"src":"1699:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":667,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:6"},"returnParameters":{"id":670,"nodeType":"ParameterList","parameters":[],"src":"1734:0:6"},"scope":913,"src":"1671:281:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":727,"nodeType":"Block","src":"2345:263:6","statements":[{"expression":{"arguments":[{"id":701,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2374:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":700,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2355:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":703,"nodeType":"ExpressionStatement","src":"2355:37:6"},{"eventCall":{"arguments":[{"id":707,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2425:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":704,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"2407:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$599_$","typeString":"type(contract IERC1967)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:6","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":586,"src":"2407:17:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":709,"nodeType":"EmitStatement","src":"2402:41:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":710,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"2458:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:6","memberName":"length","nodeType":"MemberAccess","src":"2458:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2472:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":725,"nodeType":"Block","src":"2559:43:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":722,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"2573:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":724,"nodeType":"ExpressionStatement","src":"2573:18:6"}]},"id":726,"nodeType":"IfStatement","src":"2454:148:6","trueBody":{"id":721,"nodeType":"Block","src":"2475:78:6","statements":[{"expression":{"arguments":[{"id":717,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2518:17:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":718,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"2537:4:6","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":714,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"2489:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1501_$","typeString":"type(library Address)"}},"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:6","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1418,"src":"2489:28:6","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":719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":720,"nodeType":"ExpressionStatement","src":"2489:53:6"}]}}]},"documentation":{"id":693,"nodeType":"StructuredDocumentation","src":"1958:301:6","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":728,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:6","nodeType":"FunctionDefinition","parameters":{"id":698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":695,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:6","nodeType":"VariableDeclaration","scope":728,"src":"2290:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":694,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":697,"mutability":"mutable","name":"data","nameLocation":"2330:4:6","nodeType":"VariableDeclaration","scope":728,"src":"2317:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":696,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:6"},"returnParameters":{"id":699,"nodeType":"ParameterList","parameters":[],"src":"2345:0:6"},"scope":913,"src":"2264:344:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"2614:145:6","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":732,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:6","nodeType":"VariableDeclaration","scope":913,"src":"2829:105:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:6","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":744,"nodeType":"Block","src":"3339:68:6","statements":[{"expression":{"expression":{"arguments":[{"id":740,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"3383:10:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":738,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"3356:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"3356:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"3356:44:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":737,"id":743,"nodeType":"Return","src":"3349:51:6"}]},"documentation":{"id":733,"nodeType":"StructuredDocumentation","src":"2941:341:6","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":745,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:6","nodeType":"FunctionDefinition","parameters":{"id":734,"nodeType":"ParameterList","parameters":[],"src":"3304:2:6"},"returnParameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":745,"src":"3330:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":735,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:6"},"scope":913,"src":"3287:120:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":775,"nodeType":"Block","src":"3535:172:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":751,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3549:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:6","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":753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":752,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:6","typeDescriptions":{}}},"id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":765,"nodeType":"IfStatement","src":"3545:91:6","trueBody":{"id":764,"nodeType":"Block","src":"3573:63:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:6","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":759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":758,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:6","typeDescriptions":{}}},"id":761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":757,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"3594:19:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":763,"nodeType":"RevertStatement","src":"3587:38:6"}]}},{"expression":{"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":769,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"3672:10:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":766,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"3645:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"3645:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"3645:44:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":772,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3692:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":774,"nodeType":"ExpressionStatement","src":"3645:55:6"}]},"documentation":{"id":746,"nodeType":"StructuredDocumentation","src":"3413:72:6","text":" @dev Stores a new address in the ERC-1967 admin slot."},"id":776,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":748,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:6","nodeType":"VariableDeclaration","scope":776,"src":"3509:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":747,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:6"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"3535:0:6"},"scope":913,"src":"3490:217:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":794,"nodeType":"Block","src":"3875:94:6","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":785,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"3912:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":787,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"3924:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":782,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"3890:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$599_$","typeString":"type(contract IERC1967)"}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:6","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":593,"src":"3890:21:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":789,"nodeType":"EmitStatement","src":"3885:48:6"},{"expression":{"arguments":[{"id":791,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"3953:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":790,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"3943:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":793,"nodeType":"ExpressionStatement","src":"3943:19:6"}]},"documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"3713:109:6","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":795,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:6","nodeType":"FunctionDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:6","nodeType":"VariableDeclaration","scope":795,"src":"3848:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":778,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:6"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[],"src":"3875:0:6"},"scope":913,"src":"3827:142:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":796,"nodeType":"StructuredDocumentation","src":"3975:201:6","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":799,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:6","nodeType":"VariableDeclaration","scope":913,"src":"4246:106:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:6","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":811,"nodeType":"Block","src":"4468:69:6","statements":[{"expression":{"expression":{"arguments":[{"id":807,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"4512:11:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":805,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"4485:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"4485:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"4485:45:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":804,"id":810,"nodeType":"Return","src":"4478:52:6"}]},"documentation":{"id":800,"nodeType":"StructuredDocumentation","src":"4359:51:6","text":" @dev Returns the current beacon."},"id":812,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:6","nodeType":"FunctionDefinition","parameters":{"id":801,"nodeType":"ParameterList","parameters":[],"src":"4433:2:6"},"returnParameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":812,"src":"4459:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":802,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:6"},"scope":913,"src":"4415:122:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":857,"nodeType":"Block","src":"4667:390:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":818,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"4681:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:6","memberName":"code","nodeType":"MemberAccess","src":"4681:14:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:6","memberName":"length","nodeType":"MemberAccess","src":"4681:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":828,"nodeType":"IfStatement","src":"4677:95:6","trueBody":{"id":827,"nodeType":"Block","src":"4709:63:6","statements":[{"errorCall":{"arguments":[{"id":824,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"4751:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"4730:20:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":826,"nodeType":"RevertStatement","src":"4723:38:6"}]}},{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":832,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"4809:11:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":829,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"4782:11:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1647_$","typeString":"type(library StorageSlot)"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:6","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"4782:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1529_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:6","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"4782:45:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":835,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"4830:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":837,"nodeType":"ExpressionStatement","src":"4782:57:6"},{"assignments":[839],"declarations":[{"constant":false,"id":839,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:6","nodeType":"VariableDeclaration","scope":857,"src":"4850:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":838,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":845,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":841,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"4889:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":840,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"4881:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$923_$","typeString":"type(contract IBeacon)"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$923","typeString":"contract IBeacon"}},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:6","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":922,"src":"4881:33:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":846,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":839,"src":"4930:20:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:6","memberName":"code","nodeType":"MemberAccess","src":"4930:25:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:6","memberName":"length","nodeType":"MemberAccess","src":"4930:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":856,"nodeType":"IfStatement","src":"4926:125:6","trueBody":{"id":855,"nodeType":"Block","src":"4969:82:6","statements":[{"errorCall":{"arguments":[{"id":852,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":839,"src":"5019:20:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":851,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"4990:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":854,"nodeType":"RevertStatement","src":"4983:57:6"}]}}]},"documentation":{"id":813,"nodeType":"StructuredDocumentation","src":"4543:72:6","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"id":858,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:6","nodeType":"FunctionDefinition","parameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:6","nodeType":"VariableDeclaration","scope":858,"src":"4640:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:6"},"returnParameters":{"id":817,"nodeType":"ParameterList","parameters":[],"src":"4667:0:6"},"scope":913,"src":"4620:437:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":897,"nodeType":"Block","src":"5661:263:6","statements":[{"expression":{"arguments":[{"id":867,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"5682:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":866,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5671:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":869,"nodeType":"ExpressionStatement","src":"5671:21:6"},{"eventCall":{"arguments":[{"id":873,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"5731:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":870,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"5707:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$599_$","typeString":"type(contract IERC1967)"}},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:6","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":598,"src":"5707:23:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":875,"nodeType":"EmitStatement","src":"5702:39:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":876,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"5756:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:6","memberName":"length","nodeType":"MemberAccess","src":"5756:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":895,"nodeType":"Block","src":"5875:43:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":892,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"5889:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":894,"nodeType":"ExpressionStatement","src":"5889:18:6"}]},"id":896,"nodeType":"IfStatement","src":"5752:166:6","trueBody":{"id":891,"nodeType":"Block","src":"5773:96:6","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":884,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"5824:9:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":883,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5816:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$923_$","typeString":"type(contract IBeacon)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$923","typeString":"contract IBeacon"}},"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:6","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":922,"src":"5816:33:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":888,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"5853:4:6","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":880,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"5787:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1501_$","typeString":"type(library Address)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:6","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1418,"src":"5787:28:6","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":889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":890,"nodeType":"ExpressionStatement","src":"5787:71:6"}]}}]},"documentation":{"id":859,"nodeType":"StructuredDocumentation","src":"5063:514:6","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":898,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:6","nodeType":"FunctionDefinition","parameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":861,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:6","nodeType":"VariableDeclaration","scope":898,"src":"5614:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":860,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":863,"mutability":"mutable","name":"data","nameLocation":"5646:4:6","nodeType":"VariableDeclaration","scope":898,"src":"5633:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":862,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:6"},"returnParameters":{"id":865,"nodeType":"ParameterList","parameters":[],"src":"5661:0:6"},"scope":913,"src":"5582:342:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":911,"nodeType":"Block","src":"6149:86:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":902,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:6","memberName":"value","nodeType":"MemberAccess","src":"6163:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":910,"nodeType":"IfStatement","src":"6159:70:6","trueBody":{"id":909,"nodeType":"Block","src":"6178:51:6","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":906,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"6199:17:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":908,"nodeType":"RevertStatement","src":"6192:26:6"}]}}]},"documentation":{"id":899,"nodeType":"StructuredDocumentation","src":"5930:178:6","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":912,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:6","nodeType":"FunctionDefinition","parameters":{"id":900,"nodeType":"ParameterList","parameters":[],"src":"6138:2:6"},"returnParameters":{"id":901,"nodeType":"ParameterList","parameters":[],"src":"6149:0:6"},"scope":913,"src":"6113:122:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":914,"src":"496:5741:6","usedErrors":[639,644,649,652],"usedEvents":[]}],"src":"114:6124:6"},"id":6},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[923]},"id":924,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":915,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":916,"nodeType":"StructuredDocumentation","src":"134:79:7","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":923,"linearizedBaseContracts":[923],"name":"IBeacon","nameLocation":"224:7:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":917,"nodeType":"StructuredDocumentation","src":"238:168:7","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":922,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:7","nodeType":"FunctionDefinition","parameters":{"id":918,"nodeType":"ParameterList","parameters":[],"src":"434:2:7"},"returnParameters":{"id":921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":922,"src":"460:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:7"},"scope":923,"src":"411:58:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":924,"src":"214:257:7","usedErrors":[],"usedEvents":[]}],"src":"108:364:7"},"id":7},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","exportedSymbols":{"IERC1155":[1046],"IERC165":[1659]},"id":1047,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":925,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"110:24:8"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":927,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":1660,"src":"136:62:8","symbolAliases":[{"foreign":{"id":926,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"144:7:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":929,"name":"IERC165","nameLocations":["359:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1659,"src":"359:7:8"},"id":930,"nodeType":"InheritanceSpecifier","src":"359:7:8"}],"canonicalName":"IERC1155","contractDependencies":[],"contractKind":"interface","documentation":{"id":928,"nodeType":"StructuredDocumentation","src":"200:136:8","text":" @dev Required interface of an ERC-1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[ERC]."},"fullyImplemented":false,"id":1046,"linearizedBaseContracts":[1046,1659],"name":"IERC1155","nameLocation":"347:8:8","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"373:125:8","text":" @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":943,"name":"TransferSingle","nameLocation":"509:14:8","nodeType":"EventDefinition","parameters":{"id":942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"540:8:8","nodeType":"VariableDeclaration","scope":943,"src":"524:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"524:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"566:4:8","nodeType":"VariableDeclaration","scope":943,"src":"550:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"550:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":937,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"588:2:8","nodeType":"VariableDeclaration","scope":943,"src":"572:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":939,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"600:2:8","nodeType":"VariableDeclaration","scope":943,"src":"592:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":938,"name":"uint256","nodeType":"ElementaryTypeName","src":"592:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":941,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"612:5:8","nodeType":"VariableDeclaration","scope":943,"src":"604:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":940,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"523:95:8"},"src":"503:116:8"},{"anonymous":false,"documentation":{"id":944,"nodeType":"StructuredDocumentation","src":"625:144:8","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":958,"name":"TransferBatch","nameLocation":"780:13:8","nodeType":"EventDefinition","parameters":{"id":957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":946,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"819:8:8","nodeType":"VariableDeclaration","scope":958,"src":"803:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":945,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":948,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"853:4:8","nodeType":"VariableDeclaration","scope":958,"src":"837:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":947,"name":"address","nodeType":"ElementaryTypeName","src":"837:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":950,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"883:2:8","nodeType":"VariableDeclaration","scope":958,"src":"867:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":949,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":953,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"905:3:8","nodeType":"VariableDeclaration","scope":958,"src":"895:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":952,"nodeType":"ArrayTypeName","src":"895:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":956,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"928:6:8","nodeType":"VariableDeclaration","scope":958,"src":"918:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":954,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":955,"nodeType":"ArrayTypeName","src":"918:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"793:147:8"},"src":"774:167:8"},{"anonymous":false,"documentation":{"id":959,"nodeType":"StructuredDocumentation","src":"947:147:8","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":967,"name":"ApprovalForAll","nameLocation":"1105:14:8","nodeType":"EventDefinition","parameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":961,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1136:7:8","nodeType":"VariableDeclaration","scope":967,"src":"1120:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":960,"name":"address","nodeType":"ElementaryTypeName","src":"1120:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":963,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1161:8:8","nodeType":"VariableDeclaration","scope":967,"src":"1145:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"1145:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":965,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1176:8:8","nodeType":"VariableDeclaration","scope":967,"src":"1171:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":964,"name":"bool","nodeType":"ElementaryTypeName","src":"1171:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1119:66:8"},"src":"1099:87:8"},{"anonymous":false,"documentation":{"id":968,"nodeType":"StructuredDocumentation","src":"1192:343:8","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":974,"name":"URI","nameLocation":"1546:3:8","nodeType":"EventDefinition","parameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1557:5:8","nodeType":"VariableDeclaration","scope":974,"src":"1550:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":969,"name":"string","nodeType":"ElementaryTypeName","src":"1550:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":972,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1580:2:8","nodeType":"VariableDeclaration","scope":974,"src":"1564:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1564:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:34:8"},"src":"1540:44:8"},{"documentation":{"id":975,"nodeType":"StructuredDocumentation","src":"1590:90:8","text":" @dev Returns the value of tokens of token type `id` owned by `account`."},"functionSelector":"00fdd58e","id":984,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1694:9:8","nodeType":"FunctionDefinition","parameters":{"id":980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":977,"mutability":"mutable","name":"account","nameLocation":"1712:7:8","nodeType":"VariableDeclaration","scope":984,"src":"1704:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":976,"name":"address","nodeType":"ElementaryTypeName","src":"1704:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":979,"mutability":"mutable","name":"id","nameLocation":"1729:2:8","nodeType":"VariableDeclaration","scope":984,"src":"1721:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":978,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1703:29:8"},"returnParameters":{"id":983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"1756:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":981,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1755:9:8"},"scope":1046,"src":"1685:80:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"1771:188:8","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":997,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"1973:14:8","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":988,"mutability":"mutable","name":"accounts","nameLocation":"2016:8:8","nodeType":"VariableDeclaration","scope":997,"src":"1997:27:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":986,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":987,"nodeType":"ArrayTypeName","src":"1997:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":991,"mutability":"mutable","name":"ids","nameLocation":"2053:3:8","nodeType":"VariableDeclaration","scope":997,"src":"2034:22:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"2034:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":990,"nodeType":"ArrayTypeName","src":"2034:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1987:75:8"},"returnParameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":997,"src":"2086:16:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":993,"name":"uint256","nodeType":"ElementaryTypeName","src":"2086:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":994,"nodeType":"ArrayTypeName","src":"2086:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2085:18:8"},"scope":1046,"src":"1964:140:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":998,"nodeType":"StructuredDocumentation","src":"2110:254:8","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the zero address."},"functionSelector":"a22cb465","id":1005,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2378:17:8","nodeType":"FunctionDefinition","parameters":{"id":1003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"operator","nameLocation":"2404:8:8","nodeType":"VariableDeclaration","scope":1005,"src":"2396:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":999,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1002,"mutability":"mutable","name":"approved","nameLocation":"2419:8:8","nodeType":"VariableDeclaration","scope":1005,"src":"2414:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1001,"name":"bool","nodeType":"ElementaryTypeName","src":"2414:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2395:33:8"},"returnParameters":{"id":1004,"nodeType":"ParameterList","parameters":[],"src":"2437:0:8"},"scope":1046,"src":"2369:69:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"2444:135:8","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":1015,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2593:16:8","nodeType":"FunctionDefinition","parameters":{"id":1011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"account","nameLocation":"2618:7:8","nodeType":"VariableDeclaration","scope":1015,"src":"2610:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1007,"name":"address","nodeType":"ElementaryTypeName","src":"2610:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1010,"mutability":"mutable","name":"operator","nameLocation":"2635:8:8","nodeType":"VariableDeclaration","scope":1015,"src":"2627:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2609:35:8"},"returnParameters":{"id":1014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1015,"src":"2668:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1012,"name":"bool","nodeType":"ElementaryTypeName","src":"2668:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2667:6:8"},"scope":1046,"src":"2584:90:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1016,"nodeType":"StructuredDocumentation","src":"2680:927:8","text":" @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `value` amount.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":1029,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3621:16:8","nodeType":"FunctionDefinition","parameters":{"id":1027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1018,"mutability":"mutable","name":"from","nameLocation":"3646:4:8","nodeType":"VariableDeclaration","scope":1029,"src":"3638:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1017,"name":"address","nodeType":"ElementaryTypeName","src":"3638:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1020,"mutability":"mutable","name":"to","nameLocation":"3660:2:8","nodeType":"VariableDeclaration","scope":1029,"src":"3652:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1019,"name":"address","nodeType":"ElementaryTypeName","src":"3652:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"id","nameLocation":"3672:2:8","nodeType":"VariableDeclaration","scope":1029,"src":"3664:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3664:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1024,"mutability":"mutable","name":"value","nameLocation":"3684:5:8","nodeType":"VariableDeclaration","scope":1029,"src":"3676:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1023,"name":"uint256","nodeType":"ElementaryTypeName","src":"3676:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1026,"mutability":"mutable","name":"data","nameLocation":"3706:4:8","nodeType":"VariableDeclaration","scope":1029,"src":"3691:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1025,"name":"bytes","nodeType":"ElementaryTypeName","src":"3691:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3637:74:8"},"returnParameters":{"id":1028,"nodeType":"ParameterList","parameters":[],"src":"3720:0:8"},"scope":1046,"src":"3612:109:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1030,"nodeType":"StructuredDocumentation","src":"3727:831:8","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n Requirements:\n - `ids` and `values` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":1045,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"4572:21:8","nodeType":"FunctionDefinition","parameters":{"id":1043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"mutability":"mutable","name":"from","nameLocation":"4611:4:8","nodeType":"VariableDeclaration","scope":1045,"src":"4603:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1031,"name":"address","nodeType":"ElementaryTypeName","src":"4603:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1034,"mutability":"mutable","name":"to","nameLocation":"4633:2:8","nodeType":"VariableDeclaration","scope":1045,"src":"4625:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1033,"name":"address","nodeType":"ElementaryTypeName","src":"4625:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1037,"mutability":"mutable","name":"ids","nameLocation":"4664:3:8","nodeType":"VariableDeclaration","scope":1045,"src":"4645:22:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"4645:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1036,"nodeType":"ArrayTypeName","src":"4645:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1040,"mutability":"mutable","name":"values","nameLocation":"4696:6:8","nodeType":"VariableDeclaration","scope":1045,"src":"4677:25:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1038,"name":"uint256","nodeType":"ElementaryTypeName","src":"4677:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1039,"nodeType":"ArrayTypeName","src":"4677:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1042,"mutability":"mutable","name":"data","nameLocation":"4727:4:8","nodeType":"VariableDeclaration","scope":1045,"src":"4712:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1041,"name":"bytes","nodeType":"ElementaryTypeName","src":"4712:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4593:144:8"},"returnParameters":{"id":1044,"nodeType":"ParameterList","parameters":[],"src":"4746:0:8"},"scope":1046,"src":"4563:184:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1047,"src":"337:4412:8","usedErrors":[],"usedEvents":[943,958,967,974]}],"src":"110:4640:8"},"id":8},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1124]},"id":1125,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1048,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"132:71:9","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":1124,"linearizedBaseContracts":[1124],"name":"IERC20","nameLocation":"214:6:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"227:158:9","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":1058,"name":"Transfer","nameLocation":"396:8:9","nodeType":"EventDefinition","parameters":{"id":1057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:9","nodeType":"VariableDeclaration","scope":1058,"src":"405:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1051,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1054,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:9","nodeType":"VariableDeclaration","scope":1058,"src":"427:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1053,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1056,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:9","nodeType":"VariableDeclaration","scope":1058,"src":"447:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1055,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:9"},"src":"390:72:9"},{"anonymous":false,"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"468:148:9","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":1067,"name":"Approval","nameLocation":"627:8:9","nodeType":"EventDefinition","parameters":{"id":1066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:9","nodeType":"VariableDeclaration","scope":1067,"src":"636:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1060,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1063,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:9","nodeType":"VariableDeclaration","scope":1067,"src":"659:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1062,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1065,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:9","nodeType":"VariableDeclaration","scope":1067,"src":"684:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1064,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:9"},"src":"621:78:9"},{"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"705:65:9","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1073,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:9","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[],"src":"795:2:9"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1073,"src":"821:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1070,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:9"},"scope":1124,"src":"775:55:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1074,"nodeType":"StructuredDocumentation","src":"836:71:9","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1081,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:9","nodeType":"FunctionDefinition","parameters":{"id":1077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1076,"mutability":"mutable","name":"account","nameLocation":"939:7:9","nodeType":"VariableDeclaration","scope":1081,"src":"931:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:9"},"returnParameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1081,"src":"971:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1078,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:9"},"scope":1124,"src":"912:68:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"986:213:9","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":1091,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:9","nodeType":"FunctionDefinition","parameters":{"id":1087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1084,"mutability":"mutable","name":"to","nameLocation":"1230:2:9","nodeType":"VariableDeclaration","scope":1091,"src":"1222:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1083,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1086,"mutability":"mutable","name":"value","nameLocation":"1242:5:9","nodeType":"VariableDeclaration","scope":1091,"src":"1234:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1085,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:9"},"returnParameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1091,"src":"1267:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1088,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:9"},"scope":1124,"src":"1204:69:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1092,"nodeType":"StructuredDocumentation","src":"1279:264:9","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":1101,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:9","nodeType":"FunctionDefinition","parameters":{"id":1097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1094,"mutability":"mutable","name":"owner","nameLocation":"1575:5:9","nodeType":"VariableDeclaration","scope":1101,"src":"1567:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1093,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1096,"mutability":"mutable","name":"spender","nameLocation":"1590:7:9","nodeType":"VariableDeclaration","scope":1101,"src":"1582:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1095,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:9"},"returnParameters":{"id":1100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1101,"src":"1622:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:9"},"scope":1124,"src":"1548:83:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1102,"nodeType":"StructuredDocumentation","src":"1637:667:9","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":1111,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:9","nodeType":"FunctionDefinition","parameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1104,"mutability":"mutable","name":"spender","nameLocation":"2334:7:9","nodeType":"VariableDeclaration","scope":1111,"src":"2326:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1103,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1106,"mutability":"mutable","name":"value","nameLocation":"2351:5:9","nodeType":"VariableDeclaration","scope":1111,"src":"2343:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:9"},"returnParameters":{"id":1110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1111,"src":"2376:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1108,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:9"},"scope":1124,"src":"2309:73:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1112,"nodeType":"StructuredDocumentation","src":"2388:297:9","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":1123,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:9","nodeType":"FunctionDefinition","parameters":{"id":1119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1114,"mutability":"mutable","name":"from","nameLocation":"2720:4:9","nodeType":"VariableDeclaration","scope":1123,"src":"2712:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1113,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1116,"mutability":"mutable","name":"to","nameLocation":"2734:2:9","nodeType":"VariableDeclaration","scope":1123,"src":"2726:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1115,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1118,"mutability":"mutable","name":"value","nameLocation":"2746:5:9","nodeType":"VariableDeclaration","scope":1123,"src":"2738:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:9"},"returnParameters":{"id":1122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1123,"src":"2771:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1120,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:9"},"scope":1124,"src":"2690:87:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1125,"src":"204:2575:9","usedErrors":[],"usedEvents":[1058,1067]}],"src":"106:2674:9"},"id":9},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[1659],"IERC721":[1241]},"id":1242,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1126,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:10"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1128,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1242,"sourceUnit":1660,"src":"134:62:10","symbolAliases":[{"foreign":{"id":1127,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"142:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1130,"name":"IERC165","nameLocations":["288:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":1659,"src":"288:7:10"},"id":1131,"nodeType":"InheritanceSpecifier","src":"288:7:10"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"198:68:10","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":1241,"linearizedBaseContracts":[1241,1659],"name":"IERC721","nameLocation":"277:7:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1132,"nodeType":"StructuredDocumentation","src":"302:88:10","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1140,"name":"Transfer","nameLocation":"401:8:10","nodeType":"EventDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1134,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:10","nodeType":"VariableDeclaration","scope":1140,"src":"410:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1133,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1136,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:10","nodeType":"VariableDeclaration","scope":1140,"src":"432:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1135,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1138,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:10","nodeType":"VariableDeclaration","scope":1140,"src":"452:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:10"},"src":"395:82:10"},{"anonymous":false,"documentation":{"id":1141,"nodeType":"StructuredDocumentation","src":"483:94:10","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1149,"name":"Approval","nameLocation":"588:8:10","nodeType":"EventDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1143,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:10","nodeType":"VariableDeclaration","scope":1149,"src":"597:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1142,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1145,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:10","nodeType":"VariableDeclaration","scope":1149,"src":"620:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1144,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1147,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:10","nodeType":"VariableDeclaration","scope":1149,"src":"646:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1146,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:10"},"src":"582:89:10"},{"anonymous":false,"documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"677:117:10","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1158,"name":"ApprovalForAll","nameLocation":"805:14:10","nodeType":"EventDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1152,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:10","nodeType":"VariableDeclaration","scope":1158,"src":"820:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1151,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1154,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:10","nodeType":"VariableDeclaration","scope":1158,"src":"843:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1153,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1156,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:10","nodeType":"VariableDeclaration","scope":1158,"src":"869:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1155,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:10"},"src":"799:85:10"},{"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"890:76:10","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":1166,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:10","nodeType":"FunctionDefinition","parameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"mutability":"mutable","name":"owner","nameLocation":"998:5:10","nodeType":"VariableDeclaration","scope":1166,"src":"990:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1160,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:10"},"returnParameters":{"id":1165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1164,"mutability":"mutable","name":"balance","nameLocation":"1036:7:10","nodeType":"VariableDeclaration","scope":1166,"src":"1028:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1163,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:10"},"scope":1241,"src":"971:74:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"1051:131:10","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":1174,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:10","nodeType":"FunctionDefinition","parameters":{"id":1170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1169,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:10","nodeType":"VariableDeclaration","scope":1174,"src":"1204:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1168,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:10"},"returnParameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1172,"mutability":"mutable","name":"owner","nameLocation":"1252:5:10","nodeType":"VariableDeclaration","scope":1174,"src":"1244:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1171,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:10"},"scope":1241,"src":"1187:72:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1175,"nodeType":"StructuredDocumentation","src":"1265:565:10","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":1186,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:10","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"from","nameLocation":"1869:4:10","nodeType":"VariableDeclaration","scope":1186,"src":"1861:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1176,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1179,"mutability":"mutable","name":"to","nameLocation":"1883:2:10","nodeType":"VariableDeclaration","scope":1186,"src":"1875:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1178,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1181,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:10","nodeType":"VariableDeclaration","scope":1186,"src":"1887:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1180,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1183,"mutability":"mutable","name":"data","nameLocation":"1919:4:10","nodeType":"VariableDeclaration","scope":1186,"src":"1904:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1182,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:10"},"returnParameters":{"id":1185,"nodeType":"ParameterList","parameters":[],"src":"1933:0:10"},"scope":1241,"src":"1835:99:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1187,"nodeType":"StructuredDocumentation","src":"1940:706:10","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 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":1196,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:10","nodeType":"FunctionDefinition","parameters":{"id":1194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"from","nameLocation":"2685:4:10","nodeType":"VariableDeclaration","scope":1196,"src":"2677:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1188,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1191,"mutability":"mutable","name":"to","nameLocation":"2699:2:10","nodeType":"VariableDeclaration","scope":1196,"src":"2691:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1190,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1193,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:10","nodeType":"VariableDeclaration","scope":1196,"src":"2703:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:10"},"returnParameters":{"id":1195,"nodeType":"ParameterList","parameters":[],"src":"2728:0:10"},"scope":1241,"src":"2651:78:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1197,"nodeType":"StructuredDocumentation","src":"2735:733:10","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 ERC-721\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":1206,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:10","nodeType":"FunctionDefinition","parameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1199,"mutability":"mutable","name":"from","nameLocation":"3503:4:10","nodeType":"VariableDeclaration","scope":1206,"src":"3495:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1198,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1201,"mutability":"mutable","name":"to","nameLocation":"3517:2:10","nodeType":"VariableDeclaration","scope":1206,"src":"3509:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1200,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1203,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:10","nodeType":"VariableDeclaration","scope":1206,"src":"3521:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1202,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:10"},"returnParameters":{"id":1205,"nodeType":"ParameterList","parameters":[],"src":"3546:0:10"},"scope":1241,"src":"3473:74:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1207,"nodeType":"StructuredDocumentation","src":"3553:452:10","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":1214,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:10","nodeType":"FunctionDefinition","parameters":{"id":1212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"to","nameLocation":"4035:2:10","nodeType":"VariableDeclaration","scope":1214,"src":"4027:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1208,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1211,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:10","nodeType":"VariableDeclaration","scope":1214,"src":"4039:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1210,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:10"},"returnParameters":{"id":1213,"nodeType":"ParameterList","parameters":[],"src":"4064:0:10"},"scope":1241,"src":"4010:55:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1215,"nodeType":"StructuredDocumentation","src":"4071:315:10","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":1222,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:10","nodeType":"FunctionDefinition","parameters":{"id":1220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"operator","nameLocation":"4426:8:10","nodeType":"VariableDeclaration","scope":1222,"src":"4418:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1216,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1219,"mutability":"mutable","name":"approved","nameLocation":"4441:8:10","nodeType":"VariableDeclaration","scope":1222,"src":"4436:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1218,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:10"},"returnParameters":{"id":1221,"nodeType":"ParameterList","parameters":[],"src":"4459:0:10"},"scope":1241,"src":"4391:69:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1223,"nodeType":"StructuredDocumentation","src":"4466:139:10","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1230,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:10","nodeType":"FunctionDefinition","parameters":{"id":1226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1225,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:10","nodeType":"VariableDeclaration","scope":1230,"src":"4631:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:10"},"returnParameters":{"id":1229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1228,"mutability":"mutable","name":"operator","nameLocation":"4679:8:10","nodeType":"VariableDeclaration","scope":1230,"src":"4671:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1227,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:10"},"scope":1241,"src":"4610:79:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1231,"nodeType":"StructuredDocumentation","src":"4695:138:10","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1240,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:10","nodeType":"FunctionDefinition","parameters":{"id":1236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1233,"mutability":"mutable","name":"owner","nameLocation":"4872:5:10","nodeType":"VariableDeclaration","scope":1240,"src":"4864:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1232,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1235,"mutability":"mutable","name":"operator","nameLocation":"4887:8:10","nodeType":"VariableDeclaration","scope":1240,"src":"4879:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1234,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:10"},"returnParameters":{"id":1239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1240,"src":"4920:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1237,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:10"},"scope":1241,"src":"4838:88:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1242,"src":"267:4661:10","usedErrors":[],"usedEvents":[1140,1149,1158]}],"src":"108:4821:10"},"id":10},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1501],"Errors":[1523]},"id":1502,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1243,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:11"},{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","id":1245,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1502,"sourceUnit":1524,"src":"127:36:11","symbolAliases":[{"foreign":{"id":1244,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"135:6:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1246,"nodeType":"StructuredDocumentation","src":"165:67:11","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1501,"linearizedBaseContracts":[1501],"name":"Address","nameLocation":"241:7:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1247,"nodeType":"StructuredDocumentation","src":"255:75:11","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":1251,"name":"AddressEmptyCode","nameLocation":"341:16:11","nodeType":"ErrorDefinition","parameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"target","nameLocation":"366:6:11","nodeType":"VariableDeclaration","scope":1251,"src":"358:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:11"},"src":"335:39:11"},{"body":{"id":1298,"nodeType":"Block","src":"1361:294:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1261,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}],"id":1260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1259,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:11","typeDescriptions":{}}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1264,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1256,"src":"1399:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1278,"nodeType":"IfStatement","src":"1371:125:11","trueBody":{"id":1277,"nodeType":"Block","src":"1407:89:11","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":1271,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}],"id":1270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1269,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:11","typeDescriptions":{}}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1274,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1256,"src":"1478:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1266,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"1428:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1523_$","typeString":"type(library Errors)"}},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:11","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":1511,"src":"1428:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1276,"nodeType":"RevertStatement","src":"1421:64:11"}]}},{"assignments":[1280,1282],"declarations":[{"constant":false,"id":1280,"mutability":"mutable","name":"success","nameLocation":"1512:7:11","nodeType":"VariableDeclaration","scope":1298,"src":"1507:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"returndata","nameLocation":"1534:10:11","nodeType":"VariableDeclaration","scope":1298,"src":"1521:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1289,"initialValue":{"arguments":[{"hexValue":"","id":1287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1578:2:11","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":1283,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"1548:9:11","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:11","memberName":"call","nodeType":"MemberAccess","src":"1548:14:11","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":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1285,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1256,"src":"1570:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1548:29:11","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":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:33:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:75:11"},{"condition":{"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1595:8:11","subExpression":{"id":1290,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"1596:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1297,"nodeType":"IfStatement","src":"1591:58:11","trueBody":{"id":1296,"nodeType":"Block","src":"1605:44:11","statements":[{"expression":{"arguments":[{"id":1293,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"1627:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1292,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"1619:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1295,"nodeType":"ExpressionStatement","src":"1619:19:11"}]}}]},"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"380:905:11","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":1299,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:11","nodeType":"FunctionDefinition","parameters":{"id":1257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:11","nodeType":"VariableDeclaration","scope":1299,"src":"1309:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1253,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:11","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1256,"mutability":"mutable","name":"amount","nameLocation":"1344:6:11","nodeType":"VariableDeclaration","scope":1299,"src":"1336:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1255,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:11"},"returnParameters":{"id":1258,"nodeType":"ParameterList","parameters":[],"src":"1361:0:11"},"scope":1501,"src":"1290:365:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1315,"nodeType":"Block","src":"2589:62:11","statements":[{"expression":{"arguments":[{"id":1310,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1302,"src":"2628:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1311,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"2636:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:11","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":1309,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"2606:21:11","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":1313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1308,"id":1314,"nodeType":"Return","src":"2599:45:11"}]},"documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"1661:834:11","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 {Errors.FailedCall} 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":1316,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2509:12:11","nodeType":"FunctionDefinition","parameters":{"id":1305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"target","nameLocation":"2530:6:11","nodeType":"VariableDeclaration","scope":1316,"src":"2522:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1301,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1304,"mutability":"mutable","name":"data","nameLocation":"2551:4:11","nodeType":"VariableDeclaration","scope":1316,"src":"2538:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1303,"name":"bytes","nodeType":"ElementaryTypeName","src":"2538:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2521:35:11"},"returnParameters":{"id":1308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1316,"src":"2575:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1306,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:14:11"},"scope":1501,"src":"2500:151:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1365,"nodeType":"Block","src":"3088:294:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1330,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3110:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}],"id":1329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3102:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1328,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:11","typeDescriptions":{}}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3116:7:11","memberName":"balance","nodeType":"MemberAccess","src":"3102:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"3126:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1347,"nodeType":"IfStatement","src":"3098:123:11","trueBody":{"id":1346,"nodeType":"Block","src":"3133:88:11","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":1340,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3189:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1501","typeString":"library Address"}],"id":1339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3181:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1338,"name":"address","nodeType":"ElementaryTypeName","src":"3181:7:11","typeDescriptions":{}}},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3195:7:11","memberName":"balance","nodeType":"MemberAccess","src":"3181:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"3204:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1335,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"3154:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1523_$","typeString":"type(library Errors)"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:19:11","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":1511,"src":"3154:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:56:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1345,"nodeType":"RevertStatement","src":"3147:63:11"}]}},{"assignments":[1349,1351],"declarations":[{"constant":false,"id":1349,"mutability":"mutable","name":"success","nameLocation":"3236:7:11","nodeType":"VariableDeclaration","scope":1365,"src":"3231:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1348,"name":"bool","nodeType":"ElementaryTypeName","src":"3231:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1351,"mutability":"mutable","name":"returndata","nameLocation":"3258:10:11","nodeType":"VariableDeclaration","scope":1365,"src":"3245:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1350,"name":"bytes","nodeType":"ElementaryTypeName","src":"3245:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1358,"initialValue":{"arguments":[{"id":1356,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"3298:4:11","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":1352,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3272:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3279:4:11","memberName":"call","nodeType":"MemberAccess","src":"3272:11:11","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":1355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"3291:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3272:25:11","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":1357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3230:73:11"},{"expression":{"arguments":[{"id":1360,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3347:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1361,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"3355:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1362,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"3364:10:11","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":1359,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"3320:26:11","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":1363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1327,"id":1364,"nodeType":"Return","src":"3313:62:11"}]},"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"2657:313:11","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":1366,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2984:21:11","nodeType":"FunctionDefinition","parameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"target","nameLocation":"3014:6:11","nodeType":"VariableDeclaration","scope":1366,"src":"3006:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1318,"name":"address","nodeType":"ElementaryTypeName","src":"3006:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"data","nameLocation":"3035:4:11","nodeType":"VariableDeclaration","scope":1366,"src":"3022:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1320,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1323,"mutability":"mutable","name":"value","nameLocation":"3049:5:11","nodeType":"VariableDeclaration","scope":1366,"src":"3041:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1322,"name":"uint256","nodeType":"ElementaryTypeName","src":"3041:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3005:50:11"},"returnParameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1366,"src":"3074:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1325,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3073:14:11"},"scope":1501,"src":"2975:407:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1391,"nodeType":"Block","src":"3621:154:11","statements":[{"assignments":[1377,1379],"declarations":[{"constant":false,"id":1377,"mutability":"mutable","name":"success","nameLocation":"3637:7:11","nodeType":"VariableDeclaration","scope":1391,"src":"3632:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1376,"name":"bool","nodeType":"ElementaryTypeName","src":"3632:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1379,"mutability":"mutable","name":"returndata","nameLocation":"3659:10:11","nodeType":"VariableDeclaration","scope":1391,"src":"3646:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1378,"name":"bytes","nodeType":"ElementaryTypeName","src":"3646:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1384,"initialValue":{"arguments":[{"id":1382,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"3691:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1380,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1369,"src":"3673:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:10:11","memberName":"staticcall","nodeType":"MemberAccess","src":"3673:17:11","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":1383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3631:65:11"},{"expression":{"arguments":[{"id":1386,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1369,"src":"3740:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1387,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1377,"src":"3748:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1388,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"3757:10:11","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":1385,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"3713:26:11","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":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1375,"id":1390,"nodeType":"Return","src":"3706:62:11"}]},"documentation":{"id":1367,"nodeType":"StructuredDocumentation","src":"3388:128:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":1392,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3530:18:11","nodeType":"FunctionDefinition","parameters":{"id":1372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1369,"mutability":"mutable","name":"target","nameLocation":"3557:6:11","nodeType":"VariableDeclaration","scope":1392,"src":"3549:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1368,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1371,"mutability":"mutable","name":"data","nameLocation":"3578:4:11","nodeType":"VariableDeclaration","scope":1392,"src":"3565:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1370,"name":"bytes","nodeType":"ElementaryTypeName","src":"3565:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3548:35:11"},"returnParameters":{"id":1375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1392,"src":"3607:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1373,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3606:14:11"},"scope":1501,"src":"3521:254:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1417,"nodeType":"Block","src":"4013:156:11","statements":[{"assignments":[1403,1405],"declarations":[{"constant":false,"id":1403,"mutability":"mutable","name":"success","nameLocation":"4029:7:11","nodeType":"VariableDeclaration","scope":1417,"src":"4024:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1402,"name":"bool","nodeType":"ElementaryTypeName","src":"4024:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1405,"mutability":"mutable","name":"returndata","nameLocation":"4051:10:11","nodeType":"VariableDeclaration","scope":1417,"src":"4038:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1404,"name":"bytes","nodeType":"ElementaryTypeName","src":"4038:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1410,"initialValue":{"arguments":[{"id":1408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"4085:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1406,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"4065:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4072:12:11","memberName":"delegatecall","nodeType":"MemberAccess","src":"4065:19:11","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":1409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4023:67:11"},{"expression":{"arguments":[{"id":1412,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"4134:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1413,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"4142:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1414,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"4151:10:11","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":1411,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"4107:26:11","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":1415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1401,"id":1416,"nodeType":"Return","src":"4100:62:11"}]},"documentation":{"id":1393,"nodeType":"StructuredDocumentation","src":"3781:130:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":1418,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3925:20:11","nodeType":"FunctionDefinition","parameters":{"id":1398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1395,"mutability":"mutable","name":"target","nameLocation":"3954:6:11","nodeType":"VariableDeclaration","scope":1418,"src":"3946:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1394,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1397,"mutability":"mutable","name":"data","nameLocation":"3975:4:11","nodeType":"VariableDeclaration","scope":1418,"src":"3962:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1396,"name":"bytes","nodeType":"ElementaryTypeName","src":"3962:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3945:35:11"},"returnParameters":{"id":1401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"3999:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1399,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:11"},"scope":1501,"src":"3916:253:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1457,"nodeType":"Block","src":"4595:424:11","statements":[{"condition":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4609:8:11","subExpression":{"id":1430,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1423,"src":"4610:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1455,"nodeType":"Block","src":"4669:344:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1437,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1425,"src":"4857:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:6:11","memberName":"length","nodeType":"MemberAccess","src":"4857:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4878:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4857:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1441,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"4883:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:4:11","memberName":"code","nodeType":"MemberAccess","src":"4883:11:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:11","memberName":"length","nodeType":"MemberAccess","src":"4883:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4883:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4857:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1452,"nodeType":"IfStatement","src":"4853:119:11","trueBody":{"id":1451,"nodeType":"Block","src":"4908:64:11","statements":[{"errorCall":{"arguments":[{"id":1448,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"4950:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1447,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"4933:16:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4933:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1450,"nodeType":"RevertStatement","src":"4926:31:11"}]}},{"expression":{"id":1453,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1425,"src":"4992:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1429,"id":1454,"nodeType":"Return","src":"4985:17:11"}]},"id":1456,"nodeType":"IfStatement","src":"4605:408:11","trueBody":{"id":1436,"nodeType":"Block","src":"4619:44:11","statements":[{"expression":{"arguments":[{"id":1433,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1425,"src":"4641:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1432,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"4633:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4633:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1435,"nodeType":"ExpressionStatement","src":"4633:19:11"}]}}]},"documentation":{"id":1419,"nodeType":"StructuredDocumentation","src":"4175:257:11","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 {Errors.FailedCall}) in case\n of an unsuccessful call."},"id":1458,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4446:26:11","nodeType":"FunctionDefinition","parameters":{"id":1426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1421,"mutability":"mutable","name":"target","nameLocation":"4490:6:11","nodeType":"VariableDeclaration","scope":1458,"src":"4482:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1420,"name":"address","nodeType":"ElementaryTypeName","src":"4482:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1423,"mutability":"mutable","name":"success","nameLocation":"4511:7:11","nodeType":"VariableDeclaration","scope":1458,"src":"4506:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1422,"name":"bool","nodeType":"ElementaryTypeName","src":"4506:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1425,"mutability":"mutable","name":"returndata","nameLocation":"4541:10:11","nodeType":"VariableDeclaration","scope":1458,"src":"4528:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1424,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4472:85:11"},"returnParameters":{"id":1429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1458,"src":"4581:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1427,"name":"bytes","nodeType":"ElementaryTypeName","src":"4581:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4580:14:11"},"scope":1501,"src":"4437:582:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1479,"nodeType":"Block","src":"5323:122:11","statements":[{"condition":{"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5337:8:11","subExpression":{"id":1468,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"5338:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1477,"nodeType":"Block","src":"5397:42:11","statements":[{"expression":{"id":1475,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"5418:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1467,"id":1476,"nodeType":"Return","src":"5411:17:11"}]},"id":1478,"nodeType":"IfStatement","src":"5333:106:11","trueBody":{"id":1474,"nodeType":"Block","src":"5347:44:11","statements":[{"expression":{"arguments":[{"id":1471,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"5369:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1470,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"5361:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5361:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1473,"nodeType":"ExpressionStatement","src":"5361:19:11"}]}}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"5025:191:11","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 {Errors.FailedCall} error."},"id":1480,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5230:16:11","nodeType":"FunctionDefinition","parameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"success","nameLocation":"5252:7:11","nodeType":"VariableDeclaration","scope":1480,"src":"5247:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1460,"name":"bool","nodeType":"ElementaryTypeName","src":"5247:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1463,"mutability":"mutable","name":"returndata","nameLocation":"5274:10:11","nodeType":"VariableDeclaration","scope":1480,"src":"5261:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1462,"name":"bytes","nodeType":"ElementaryTypeName","src":"5261:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5246:39:11"},"returnParameters":{"id":1467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1480,"src":"5309:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1465,"name":"bytes","nodeType":"ElementaryTypeName","src":"5309:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5308:14:11"},"scope":1501,"src":"5221:224:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1499,"nodeType":"Block","src":"5614:432:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1486,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"5690:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:11","memberName":"length","nodeType":"MemberAccess","src":"5690:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5690:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1497,"nodeType":"Block","src":"5989:51:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1492,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"6010:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1523_$","typeString":"type(library Errors)"}},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6017:10:11","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":1514,"src":"6010:17:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6010:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1496,"nodeType":"RevertStatement","src":"6003:26:11"}]},"id":1498,"nodeType":"IfStatement","src":"5686:354:11","trueBody":{"id":1491,"nodeType":"Block","src":"5713:270:11","statements":[{"AST":{"nativeSrc":"5840:133:11","nodeType":"YulBlock","src":"5840:133:11","statements":[{"nativeSrc":"5858:40:11","nodeType":"YulVariableDeclaration","src":"5858:40:11","value":{"arguments":[{"name":"returndata","nativeSrc":"5887:10:11","nodeType":"YulIdentifier","src":"5887:10:11"}],"functionName":{"name":"mload","nativeSrc":"5881:5:11","nodeType":"YulIdentifier","src":"5881:5:11"},"nativeSrc":"5881:17:11","nodeType":"YulFunctionCall","src":"5881:17:11"},"variables":[{"name":"returndata_size","nativeSrc":"5862:15:11","nodeType":"YulTypedName","src":"5862:15:11","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5926:2:11","nodeType":"YulLiteral","src":"5926:2:11","type":"","value":"32"},{"name":"returndata","nativeSrc":"5930:10:11","nodeType":"YulIdentifier","src":"5930:10:11"}],"functionName":{"name":"add","nativeSrc":"5922:3:11","nodeType":"YulIdentifier","src":"5922:3:11"},"nativeSrc":"5922:19:11","nodeType":"YulFunctionCall","src":"5922:19:11"},{"name":"returndata_size","nativeSrc":"5943:15:11","nodeType":"YulIdentifier","src":"5943:15:11"}],"functionName":{"name":"revert","nativeSrc":"5915:6:11","nodeType":"YulIdentifier","src":"5915:6:11"},"nativeSrc":"5915:44:11","nodeType":"YulFunctionCall","src":"5915:44:11"},"nativeSrc":"5915:44:11","nodeType":"YulExpressionStatement","src":"5915:44:11"}]},"evmVersion":"paris","externalReferences":[{"declaration":1483,"isOffset":false,"isSlot":false,"src":"5887:10:11","valueSize":1},{"declaration":1483,"isOffset":false,"isSlot":false,"src":"5930:10:11","valueSize":1}],"flags":["memory-safe"],"id":1490,"nodeType":"InlineAssembly","src":"5815:158:11"}]}}]},"documentation":{"id":1481,"nodeType":"StructuredDocumentation","src":"5451:103:11","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"id":1500,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5568:7:11","nodeType":"FunctionDefinition","parameters":{"id":1484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1483,"mutability":"mutable","name":"returndata","nameLocation":"5589:10:11","nodeType":"VariableDeclaration","scope":1500,"src":"5576:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1482,"name":"bytes","nodeType":"ElementaryTypeName","src":"5576:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5575:25:11"},"returnParameters":{"id":1485,"nodeType":"ParameterList","parameters":[],"src":"5614:0:11"},"scope":1501,"src":"5559:487:11","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1502,"src":"233:5815:11","usedErrors":[1251],"usedEvents":[]}],"src":"101:5948:11"},"id":11},"@openzeppelin/contracts/utils/Errors.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","exportedSymbols":{"Errors":[1523]},"id":1524,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1503,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"100:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"126:284:12","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"id":1523,"linearizedBaseContracts":[1523],"name":"Errors","nameLocation":"419:6:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1505,"nodeType":"StructuredDocumentation","src":"432:94:12","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","id":1511,"name":"InsufficientBalance","nameLocation":"537:19:12","nodeType":"ErrorDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1507,"mutability":"mutable","name":"balance","nameLocation":"565:7:12","nodeType":"VariableDeclaration","scope":1511,"src":"557:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1509,"mutability":"mutable","name":"needed","nameLocation":"582:6:12","nodeType":"VariableDeclaration","scope":1511,"src":"574:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1508,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:12"},"src":"531:59:12"},{"documentation":{"id":1512,"nodeType":"StructuredDocumentation","src":"596:89:12","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","id":1514,"name":"FailedCall","nameLocation":"696:10:12","nodeType":"ErrorDefinition","parameters":{"id":1513,"nodeType":"ParameterList","parameters":[],"src":"706:2:12"},"src":"690:19:12"},{"documentation":{"id":1515,"nodeType":"StructuredDocumentation","src":"715:46:12","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","id":1517,"name":"FailedDeployment","nameLocation":"772:16:12","nodeType":"ErrorDefinition","parameters":{"id":1516,"nodeType":"ParameterList","parameters":[],"src":"788:2:12"},"src":"766:25:12"},{"documentation":{"id":1518,"nodeType":"StructuredDocumentation","src":"797:58:12","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","id":1522,"name":"MissingPrecompile","nameLocation":"866:17:12","nodeType":"ErrorDefinition","parameters":{"id":1521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1520,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1522,"src":"884:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1519,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:12"},"src":"860:33:12"}],"scope":1524,"src":"411:484:12","usedErrors":[1511,1514,1517,1522],"usedEvents":[]}],"src":"100:796:12"},"id":12},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[1647]},"id":1648,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1525,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1526,"nodeType":"StructuredDocumentation","src":"219:1187:13","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 ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\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 ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":1647,"linearizedBaseContracts":[1647],"name":"StorageSlot","nameLocation":"1415:11:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1529,"members":[{"constant":false,"id":1528,"mutability":"mutable","name":"value","nameLocation":"1470:5:13","nodeType":"VariableDeclaration","scope":1529,"src":"1462:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:13","nodeType":"StructDefinition","scope":1647,"src":"1433:49:13","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1532,"members":[{"constant":false,"id":1531,"mutability":"mutable","name":"value","nameLocation":"1522:5:13","nodeType":"VariableDeclaration","scope":1532,"src":"1517:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1530,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:13","nodeType":"StructDefinition","scope":1647,"src":"1488:46:13","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1535,"members":[{"constant":false,"id":1534,"mutability":"mutable","name":"value","nameLocation":"1577:5:13","nodeType":"VariableDeclaration","scope":1535,"src":"1569:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:13","nodeType":"StructDefinition","scope":1647,"src":"1540:49:13","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1538,"members":[{"constant":false,"id":1537,"mutability":"mutable","name":"value","nameLocation":"1632:5:13","nodeType":"VariableDeclaration","scope":1538,"src":"1624:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:13","nodeType":"StructDefinition","scope":1647,"src":"1595:49:13","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":1541,"members":[{"constant":false,"id":1540,"mutability":"mutable","name":"value","nameLocation":"1685:5:13","nodeType":"VariableDeclaration","scope":1541,"src":"1678:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1539,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:13","nodeType":"StructDefinition","scope":1647,"src":"1650:47:13","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1544,"members":[{"constant":false,"id":1543,"mutability":"mutable","name":"value","nameLocation":"1738:5:13","nodeType":"VariableDeclaration","scope":1544,"src":"1731:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1542,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:13","nodeType":"StructDefinition","scope":1647,"src":"1703:47:13","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1547,"members":[{"constant":false,"id":1546,"mutability":"mutable","name":"value","nameLocation":"1789:5:13","nodeType":"VariableDeclaration","scope":1547,"src":"1783:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1545,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:13","nodeType":"StructDefinition","scope":1647,"src":"1756:45:13","visibility":"public"},{"body":{"id":1557,"nodeType":"Block","src":"1983:79:13","statements":[{"AST":{"nativeSrc":"2018:38:13","nodeType":"YulBlock","src":"2018:38:13","statements":[{"nativeSrc":"2032:14:13","nodeType":"YulAssignment","src":"2032:14:13","value":{"name":"slot","nativeSrc":"2042:4:13","nodeType":"YulIdentifier","src":"2042:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:13","nodeType":"YulIdentifier","src":"2032:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1554,"isOffset":false,"isSlot":true,"src":"2032:6:13","suffix":"slot","valueSize":1},{"declaration":1550,"isOffset":false,"isSlot":false,"src":"2042:4:13","valueSize":1}],"flags":["memory-safe"],"id":1556,"nodeType":"InlineAssembly","src":"1993:63:13"}]},"documentation":{"id":1548,"nodeType":"StructuredDocumentation","src":"1807:87:13","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1558,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:13","nodeType":"FunctionDefinition","parameters":{"id":1551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1550,"mutability":"mutable","name":"slot","nameLocation":"1931:4:13","nodeType":"VariableDeclaration","scope":1558,"src":"1923:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:13"},"returnParameters":{"id":1555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1554,"mutability":"mutable","name":"r","nameLocation":"1980:1:13","nodeType":"VariableDeclaration","scope":1558,"src":"1960:21:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1553,"nodeType":"UserDefinedTypeName","pathNode":{"id":1552,"name":"AddressSlot","nameLocations":["1960:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":1529,"src":"1960:11:13"},"referencedDeclaration":1529,"src":"1960:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1529_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:13"},"scope":1647,"src":"1899:163:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1568,"nodeType":"Block","src":"2243:79:13","statements":[{"AST":{"nativeSrc":"2278:38:13","nodeType":"YulBlock","src":"2278:38:13","statements":[{"nativeSrc":"2292:14:13","nodeType":"YulAssignment","src":"2292:14:13","value":{"name":"slot","nativeSrc":"2302:4:13","nodeType":"YulIdentifier","src":"2302:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:13","nodeType":"YulIdentifier","src":"2292:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1565,"isOffset":false,"isSlot":true,"src":"2292:6:13","suffix":"slot","valueSize":1},{"declaration":1561,"isOffset":false,"isSlot":false,"src":"2302:4:13","valueSize":1}],"flags":["memory-safe"],"id":1567,"nodeType":"InlineAssembly","src":"2253:63:13"}]},"documentation":{"id":1559,"nodeType":"StructuredDocumentation","src":"2068:86:13","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":1569,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:13","nodeType":"FunctionDefinition","parameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"slot","nameLocation":"2191:4:13","nodeType":"VariableDeclaration","scope":1569,"src":"2183:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:13"},"returnParameters":{"id":1566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1565,"mutability":"mutable","name":"r","nameLocation":"2240:1:13","nodeType":"VariableDeclaration","scope":1569,"src":"2220:21:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1532_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1564,"nodeType":"UserDefinedTypeName","pathNode":{"id":1563,"name":"BooleanSlot","nameLocations":["2220:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":1532,"src":"2220:11:13"},"referencedDeclaration":1532,"src":"2220:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1532_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:13"},"scope":1647,"src":"2159:163:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1579,"nodeType":"Block","src":"2503:79:13","statements":[{"AST":{"nativeSrc":"2538:38:13","nodeType":"YulBlock","src":"2538:38:13","statements":[{"nativeSrc":"2552:14:13","nodeType":"YulAssignment","src":"2552:14:13","value":{"name":"slot","nativeSrc":"2562:4:13","nodeType":"YulIdentifier","src":"2562:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:13","nodeType":"YulIdentifier","src":"2552:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1576,"isOffset":false,"isSlot":true,"src":"2552:6:13","suffix":"slot","valueSize":1},{"declaration":1572,"isOffset":false,"isSlot":false,"src":"2562:4:13","valueSize":1}],"flags":["memory-safe"],"id":1578,"nodeType":"InlineAssembly","src":"2513:63:13"}]},"documentation":{"id":1570,"nodeType":"StructuredDocumentation","src":"2328:86:13","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":1580,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:13","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1572,"mutability":"mutable","name":"slot","nameLocation":"2451:4:13","nodeType":"VariableDeclaration","scope":1580,"src":"2443:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:13"},"returnParameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1576,"mutability":"mutable","name":"r","nameLocation":"2500:1:13","nodeType":"VariableDeclaration","scope":1580,"src":"2480:21:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1535_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":1575,"nodeType":"UserDefinedTypeName","pathNode":{"id":1574,"name":"Bytes32Slot","nameLocations":["2480:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":1535,"src":"2480:11:13"},"referencedDeclaration":1535,"src":"2480:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1535_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:13"},"scope":1647,"src":"2419:163:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1590,"nodeType":"Block","src":"2763:79:13","statements":[{"AST":{"nativeSrc":"2798:38:13","nodeType":"YulBlock","src":"2798:38:13","statements":[{"nativeSrc":"2812:14:13","nodeType":"YulAssignment","src":"2812:14:13","value":{"name":"slot","nativeSrc":"2822:4:13","nodeType":"YulIdentifier","src":"2822:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:13","nodeType":"YulIdentifier","src":"2812:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1587,"isOffset":false,"isSlot":true,"src":"2812:6:13","suffix":"slot","valueSize":1},{"declaration":1583,"isOffset":false,"isSlot":false,"src":"2822:4:13","valueSize":1}],"flags":["memory-safe"],"id":1589,"nodeType":"InlineAssembly","src":"2773:63:13"}]},"documentation":{"id":1581,"nodeType":"StructuredDocumentation","src":"2588:86:13","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":1591,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:13","nodeType":"FunctionDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1583,"mutability":"mutable","name":"slot","nameLocation":"2711:4:13","nodeType":"VariableDeclaration","scope":1591,"src":"2703:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1582,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:13"},"returnParameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1587,"mutability":"mutable","name":"r","nameLocation":"2760:1:13","nodeType":"VariableDeclaration","scope":1591,"src":"2740:21:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1538_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":1586,"nodeType":"UserDefinedTypeName","pathNode":{"id":1585,"name":"Uint256Slot","nameLocations":["2740:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"2740:11:13"},"referencedDeclaration":1538,"src":"2740:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1538_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:13"},"scope":1647,"src":"2679:163:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1601,"nodeType":"Block","src":"3020:79:13","statements":[{"AST":{"nativeSrc":"3055:38:13","nodeType":"YulBlock","src":"3055:38:13","statements":[{"nativeSrc":"3069:14:13","nodeType":"YulAssignment","src":"3069:14:13","value":{"name":"slot","nativeSrc":"3079:4:13","nodeType":"YulIdentifier","src":"3079:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:13","nodeType":"YulIdentifier","src":"3069:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1598,"isOffset":false,"isSlot":true,"src":"3069:6:13","suffix":"slot","valueSize":1},{"declaration":1594,"isOffset":false,"isSlot":false,"src":"3079:4:13","valueSize":1}],"flags":["memory-safe"],"id":1600,"nodeType":"InlineAssembly","src":"3030:63:13"}]},"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"2848:85:13","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":1602,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:13","nodeType":"FunctionDefinition","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"slot","nameLocation":"2969:4:13","nodeType":"VariableDeclaration","scope":1602,"src":"2961:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1593,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:13"},"returnParameters":{"id":1599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"r","nameLocation":"3017:1:13","nodeType":"VariableDeclaration","scope":1602,"src":"2998:20:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$1541_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":1597,"nodeType":"UserDefinedTypeName","pathNode":{"id":1596,"name":"Int256Slot","nameLocations":["2998:10:13"],"nodeType":"IdentifierPath","referencedDeclaration":1541,"src":"2998:10:13"},"referencedDeclaration":1541,"src":"2998:10:13","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$1541_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:13"},"scope":1647,"src":"2938:161:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1612,"nodeType":"Block","src":"3277:79:13","statements":[{"AST":{"nativeSrc":"3312:38:13","nodeType":"YulBlock","src":"3312:38:13","statements":[{"nativeSrc":"3326:14:13","nodeType":"YulAssignment","src":"3326:14:13","value":{"name":"slot","nativeSrc":"3336:4:13","nodeType":"YulIdentifier","src":"3336:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:13","nodeType":"YulIdentifier","src":"3326:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1609,"isOffset":false,"isSlot":true,"src":"3326:6:13","suffix":"slot","valueSize":1},{"declaration":1605,"isOffset":false,"isSlot":false,"src":"3336:4:13","valueSize":1}],"flags":["memory-safe"],"id":1611,"nodeType":"InlineAssembly","src":"3287:63:13"}]},"documentation":{"id":1603,"nodeType":"StructuredDocumentation","src":"3105:85:13","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":1613,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:13","nodeType":"FunctionDefinition","parameters":{"id":1606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1605,"mutability":"mutable","name":"slot","nameLocation":"3226:4:13","nodeType":"VariableDeclaration","scope":1613,"src":"3218:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:13"},"returnParameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"r","nameLocation":"3274:1:13","nodeType":"VariableDeclaration","scope":1613,"src":"3255:20:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1544_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1608,"nodeType":"UserDefinedTypeName","pathNode":{"id":1607,"name":"StringSlot","nameLocations":["3255:10:13"],"nodeType":"IdentifierPath","referencedDeclaration":1544,"src":"3255:10:13"},"referencedDeclaration":1544,"src":"3255:10:13","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1544_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:13"},"scope":1647,"src":"3195:161:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1623,"nodeType":"Block","src":"3558:85:13","statements":[{"AST":{"nativeSrc":"3593:44:13","nodeType":"YulBlock","src":"3593:44:13","statements":[{"nativeSrc":"3607:20:13","nodeType":"YulAssignment","src":"3607:20:13","value":{"name":"store.slot","nativeSrc":"3617:10:13","nodeType":"YulIdentifier","src":"3617:10:13"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:13","nodeType":"YulIdentifier","src":"3607:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1620,"isOffset":false,"isSlot":true,"src":"3607:6:13","suffix":"slot","valueSize":1},{"declaration":1616,"isOffset":false,"isSlot":true,"src":"3617:10:13","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":1622,"nodeType":"InlineAssembly","src":"3568:69:13"}]},"documentation":{"id":1614,"nodeType":"StructuredDocumentation","src":"3362:101:13","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1624,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:13","nodeType":"FunctionDefinition","parameters":{"id":1617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1616,"mutability":"mutable","name":"store","nameLocation":"3506:5:13","nodeType":"VariableDeclaration","scope":1624,"src":"3491:20:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1615,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:13"},"returnParameters":{"id":1621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1620,"mutability":"mutable","name":"r","nameLocation":"3555:1:13","nodeType":"VariableDeclaration","scope":1624,"src":"3536:20:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1544_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1619,"nodeType":"UserDefinedTypeName","pathNode":{"id":1618,"name":"StringSlot","nameLocations":["3536:10:13"],"nodeType":"IdentifierPath","referencedDeclaration":1544,"src":"3536:10:13"},"referencedDeclaration":1544,"src":"3536:10:13","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1544_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:13"},"scope":1647,"src":"3468:175:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1634,"nodeType":"Block","src":"3818:79:13","statements":[{"AST":{"nativeSrc":"3853:38:13","nodeType":"YulBlock","src":"3853:38:13","statements":[{"nativeSrc":"3867:14:13","nodeType":"YulAssignment","src":"3867:14:13","value":{"name":"slot","nativeSrc":"3877:4:13","nodeType":"YulIdentifier","src":"3877:4:13"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:13","nodeType":"YulIdentifier","src":"3867:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1631,"isOffset":false,"isSlot":true,"src":"3867:6:13","suffix":"slot","valueSize":1},{"declaration":1627,"isOffset":false,"isSlot":false,"src":"3877:4:13","valueSize":1}],"flags":["memory-safe"],"id":1633,"nodeType":"InlineAssembly","src":"3828:63:13"}]},"documentation":{"id":1625,"nodeType":"StructuredDocumentation","src":"3649:84:13","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":1635,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:13","nodeType":"FunctionDefinition","parameters":{"id":1628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"slot","nameLocation":"3768:4:13","nodeType":"VariableDeclaration","scope":1635,"src":"3760:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1626,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:13"},"returnParameters":{"id":1632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1631,"mutability":"mutable","name":"r","nameLocation":"3815:1:13","nodeType":"VariableDeclaration","scope":1635,"src":"3797:19:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1547_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":1630,"nodeType":"UserDefinedTypeName","pathNode":{"id":1629,"name":"BytesSlot","nameLocations":["3797:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"3797:9:13"},"referencedDeclaration":1547,"src":"3797:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1547_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:13"},"scope":1647,"src":"3738:159:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1645,"nodeType":"Block","src":"4094:85:13","statements":[{"AST":{"nativeSrc":"4129:44:13","nodeType":"YulBlock","src":"4129:44:13","statements":[{"nativeSrc":"4143:20:13","nodeType":"YulAssignment","src":"4143:20:13","value":{"name":"store.slot","nativeSrc":"4153:10:13","nodeType":"YulIdentifier","src":"4153:10:13"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:13","nodeType":"YulIdentifier","src":"4143:6:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1642,"isOffset":false,"isSlot":true,"src":"4143:6:13","suffix":"slot","valueSize":1},{"declaration":1638,"isOffset":false,"isSlot":true,"src":"4153:10:13","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":1644,"nodeType":"InlineAssembly","src":"4104:69:13"}]},"documentation":{"id":1636,"nodeType":"StructuredDocumentation","src":"3903:99:13","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":1646,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:13","nodeType":"FunctionDefinition","parameters":{"id":1639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1638,"mutability":"mutable","name":"store","nameLocation":"4043:5:13","nodeType":"VariableDeclaration","scope":1646,"src":"4029:19:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1637,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:13"},"returnParameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"r","nameLocation":"4091:1:13","nodeType":"VariableDeclaration","scope":1646,"src":"4073:19:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1547_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":1641,"nodeType":"UserDefinedTypeName","pathNode":{"id":1640,"name":"BytesSlot","nameLocations":["4073:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"4073:9:13"},"referencedDeclaration":1547,"src":"4073:9:13","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1547_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:13"},"scope":1647,"src":"4007:172:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1648,"src":"1407:2774:13","usedErrors":[],"usedEvents":[]}],"src":"193:3989:13"},"id":13},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[1659]},"id":1660,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1649,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1650,"nodeType":"StructuredDocumentation","src":"141:280:14","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\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":1659,"linearizedBaseContracts":[1659],"name":"IERC165","nameLocation":"432:7:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"446:340:14","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[ERC 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":1658,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:14","nodeType":"FunctionDefinition","parameters":{"id":1654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1653,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:14","nodeType":"VariableDeclaration","scope":1658,"src":"818:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1652,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:14"},"returnParameters":{"id":1657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1658,"src":"861:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1655,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:14"},"scope":1659,"src":"791:76:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1660,"src":"422:447:14","usedErrors":[],"usedEvents":[]}],"src":"115:755:14"},"id":14},"contracts/VideoPayment.sol":{"ast":{"absolutePath":"contracts/VideoPayment.sol","exportedSymbols":{"ERC1967Utils":[913],"IERC1155":[1046],"IERC165":[1659],"IERC1822Proxiable":[619],"IERC20":[1124],"IERC5313":[609],"IERC721":[1241],"IVideoPayment":[4157],"Initializable":[267],"ReentrancyGuardUpgradeable":[578],"UUPSUpgradeable":[449],"VideoPayment":[3806],"VideoPaymentStorage":[4226]},"id":3807,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1661,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:15"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":1662,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":268,"src":"58:75:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":1663,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":450,"src":"134:77:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":1664,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":579,"src":"212:82:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":1665,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":1125,"src":"295:56:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":1666,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":1242,"src":"352:58:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","id":1667,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":1047,"src":"411:60:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","file":"@openzeppelin/contracts/interfaces/IERC5313.sol","id":1668,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":610,"src":"472:57:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVideoPayment.sol","file":"./interfaces/IVideoPayment.sol","id":1669,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":4158,"src":"530:40:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","file":"./libraries/VideoPaymentStorage.sol","id":1670,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3807,"sourceUnit":4227,"src":"571:45:15","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1672,"name":"Initializable","nameLocations":["745:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"745:13:15"},"id":1673,"nodeType":"InheritanceSpecifier","src":"745:13:15"},{"baseName":{"id":1674,"name":"UUPSUpgradeable","nameLocations":["764:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":449,"src":"764:15:15"},"id":1675,"nodeType":"InheritanceSpecifier","src":"764:15:15"},{"baseName":{"id":1676,"name":"ReentrancyGuardUpgradeable","nameLocations":["785:26:15"],"nodeType":"IdentifierPath","referencedDeclaration":578,"src":"785:26:15"},"id":1677,"nodeType":"InheritanceSpecifier","src":"785:26:15"},{"baseName":{"id":1678,"name":"IERC5313","nameLocations":["817:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":609,"src":"817:8:15"},"id":1679,"nodeType":"InheritanceSpecifier","src":"817:8:15"},{"baseName":{"id":1680,"name":"IVideoPayment","nameLocations":["831:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":4157,"src":"831:13:15"},"id":1681,"nodeType":"InheritanceSpecifier","src":"831:13:15"}],"canonicalName":"VideoPayment","contractDependencies":[],"contractKind":"contract","documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"618:97:15","text":" @title VideoPayment\n @dev Main contract for video content payment and access control"},"fullyImplemented":true,"id":3806,"linearizedBaseContracts":[3806,4157,609,578,449,619,267],"name":"VideoPayment","nameLocation":"725:12:15","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1685,"libraryName":{"id":1682,"name":"VideoPaymentStorage","nameLocations":["857:19:15"],"nodeType":"IdentifierPath","referencedDeclaration":4226,"src":"857:19:15"},"nodeType":"UsingForDirective","src":"851:76:15","typeName":{"id":1684,"nodeType":"UserDefinedTypeName","pathNode":{"id":1683,"name":"VideoPaymentStorage.VideoPaymentStorageStruct","nameLocations":["881:19:15","901:25:15"],"nodeType":"IdentifierPath","referencedDeclaration":4225,"src":"881:45:15"},"referencedDeclaration":4225,"src":"881:45:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage_ptr","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"}}},{"constant":false,"id":1688,"mutability":"mutable","name":"_storage","nameLocation":"1002:8:15","nodeType":"VariableDeclaration","scope":3806,"src":"948:62:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"},"typeName":{"id":1687,"nodeType":"UserDefinedTypeName","pathNode":{"id":1686,"name":"VideoPaymentStorage.VideoPaymentStorageStruct","nameLocations":["948:19:15","968:25:15"],"nodeType":"IdentifierPath","referencedDeclaration":4225,"src":"948:45:15"},"referencedDeclaration":4225,"src":"948:45:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage_ptr","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"}},"visibility":"private"},{"body":{"id":1700,"nodeType":"Block","src":"1055:79:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1069:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1073:6:15","memberName":"sender","nodeType":"MemberAccess","src":"1069:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1692,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"1083:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1092:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"1083:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1069:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1698,"nodeType":"IfStatement","src":"1065:51:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1695,"name":"NotOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"1106:8:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1106:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1697,"nodeType":"RevertStatement","src":"1099:17:15"}},{"id":1699,"nodeType":"PlaceholderStatement","src":"1126:1:15"}]},"id":1701,"name":"onlyOwner","nameLocation":"1043:9:15","nodeType":"ModifierDefinition","parameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"1052:2:15"},"src":"1034:100:15","virtual":false,"visibility":"internal"},{"body":{"id":1714,"nodeType":"Block","src":"1161:80:15","statements":[{"condition":{"id":1708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1175:29:15","subExpression":{"baseExpression":{"expression":{"id":1703,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"1176:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1185:7:15","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4187,"src":"1176:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1707,"indexExpression":{"expression":{"id":1705,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1193:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1197:6:15","memberName":"sender","nodeType":"MemberAccess","src":"1193:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1176:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1712,"nodeType":"IfStatement","src":"1171:52:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1709,"name":"NotAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"1213:8:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1213:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1711,"nodeType":"RevertStatement","src":"1206:17:15"}},{"id":1713,"nodeType":"PlaceholderStatement","src":"1233:1:15"}]},"id":1715,"name":"onlyAdmin","nameLocation":"1149:9:15","nodeType":"ModifierDefinition","parameters":{"id":1702,"nodeType":"ParameterList","parameters":[],"src":"1158:2:15"},"src":"1140:101:15","virtual":false,"visibility":"internal"},{"body":{"id":1724,"nodeType":"Block","src":"1272:72:15","statements":[{"condition":{"expression":{"id":1717,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"1286:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1295:6:15","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4216,"src":"1286:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1722,"nodeType":"IfStatement","src":"1282:44:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1719,"name":"ContractPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"1310:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1310:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1721,"nodeType":"RevertStatement","src":"1303:23:15"}},{"id":1723,"nodeType":"PlaceholderStatement","src":"1336:1:15"}]},"id":1725,"name":"whenNotPaused","nameLocation":"1256:13:15","nodeType":"ModifierDefinition","parameters":{"id":1716,"nodeType":"ParameterList","parameters":[],"src":"1269:2:15"},"src":"1247:97:15","virtual":false,"visibility":"internal"},{"body":{"id":1740,"nodeType":"Block","src":"1391:113:15","statements":[{"condition":{"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1405:44:15","subExpression":{"expression":{"baseExpression":{"expression":{"id":1729,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"1406:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1415:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"1406:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":1732,"indexExpression":{"id":1731,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"1430:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1406:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":1733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1441:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"1406:43:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1738,"nodeType":"IfStatement","src":"1401:85:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1735,"name":"InvalidContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"1470:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1470:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1737,"nodeType":"RevertStatement","src":"1463:23:15"}},{"id":1739,"nodeType":"PlaceholderStatement","src":"1496:1:15"}]},"id":1741,"name":"validContent","nameLocation":"1359:12:15","nodeType":"ModifierDefinition","parameters":{"id":1728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"contentId","nameLocation":"1380:9:15","nodeType":"VariableDeclaration","scope":1741,"src":"1372:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:19:15"},"src":"1350:154:15","virtual":false,"visibility":"internal"},{"body":{"id":1748,"nodeType":"Block","src":"1577:39:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1745,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"1587:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1587:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1747,"nodeType":"ExpressionStatement","src":"1587:22:15"}]},"documentation":{"id":1742,"nodeType":"StructuredDocumentation","src":"1510:48:15","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":1749,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1743,"nodeType":"ParameterList","parameters":[],"src":"1574:2:15"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[],"src":"1577:0:15"},"scope":3806,"src":"1563:53:15","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1964,"nodeType":"Block","src":"2026:1711:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1763,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1752,"src":"2040:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2064:1:15","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":1765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2056:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1764,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:15","typeDescriptions":{}}},"id":1767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2056:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2040:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1772,"nodeType":"IfStatement","src":"2036:52:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1769,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"2075:11:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2075:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1771,"nodeType":"RevertStatement","src":"2068:20:15"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1773,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"2099:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2099:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1775,"nodeType":"ExpressionStatement","src":"2099:24:15"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1776,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":489,"src":"2133:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1778,"nodeType":"ExpressionStatement","src":"2133:24:15"},{"expression":{"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1779,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2168:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2177:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"2168:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1782,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1752,"src":"2185:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2168:29:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1784,"nodeType":"ExpressionStatement","src":"2168:29:15"},{"expression":{"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1785,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2207:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2216:7:15","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"2207:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":1788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2226:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2207:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1790,"nodeType":"ExpressionStatement","src":"2207:20:15"},{"expression":{"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1791,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2237:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2246:6:15","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4216,"src":"2237:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2255:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2237:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1796,"nodeType":"ExpressionStatement","src":"2237:23:15"},{"body":{"id":1834,"nodeType":"Block","src":"2352:185:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1808,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"2370:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1810,"indexExpression":{"id":1809,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"2384:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2370:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2398:1:15","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":1812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2390:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1811,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:15","typeDescriptions":{}}},"id":1814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2390:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2370:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1833,"nodeType":"IfStatement","src":"2366:161:15","trueBody":{"id":1832,"nodeType":"Block","src":"2402:125:15","statements":[{"expression":{"id":1824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1816,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2420:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2429:7:15","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4187,"src":"2420:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1822,"indexExpression":{"baseExpression":{"id":1818,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"2437:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1820,"indexExpression":{"id":1819,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"2451:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2437:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2420:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2457:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2420:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1825,"nodeType":"ExpressionStatement","src":"2420:41:15"},{"eventCall":{"arguments":[{"baseExpression":{"id":1827,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"2495:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1829,"indexExpression":{"id":1828,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"2509:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2495:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1826,"name":"AdminAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"2484:10:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2484:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1831,"nodeType":"EmitStatement","src":"2479:33:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1801,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"2321:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1802,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"2325:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2339:6:15","memberName":"length","nodeType":"MemberAccess","src":"2325:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2321:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1835,"initializationExpression":{"assignments":[1798],"declarations":[{"constant":false,"id":1798,"mutability":"mutable","name":"i","nameLocation":"2314:1:15","nodeType":"VariableDeclaration","scope":1835,"src":"2306:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2306:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1800,"initialValue":{"hexValue":"30","id":1799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2318:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2306:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2347:3:15","subExpression":{"id":1805,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"2347:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1807,"nodeType":"ExpressionStatement","src":"2347:3:15"},"nodeType":"ForStatement","src":"2301:236:15"},{"body":{"id":1906,"nodeType":"Block","src":"2648:598:15","statements":[{"assignments":[1848],"declarations":[{"constant":false,"id":1848,"mutability":"mutable","name":"token","nameLocation":"2670:5:15","nodeType":"VariableDeclaration","scope":1906,"src":"2662:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1852,"initialValue":{"baseExpression":{"id":1849,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1758,"src":"2678:23:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1851,"indexExpression":{"id":1850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2702:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2678:26:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2662:42:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"2722:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2739:1:15","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":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2731:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"2731:7:15","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2731:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2722:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1905,"nodeType":"IfStatement","src":"2718:518:15","trueBody":{"id":1904,"nodeType":"Block","src":"2743:493:15","statements":[{"condition":{"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2814:28:15","subExpression":{"baseExpression":{"expression":{"id":1859,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2815:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2824:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"2815:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1862,"indexExpression":{"id":1861,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"2836:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2815:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1891,"nodeType":"IfStatement","src":"2810:307:15","trueBody":{"id":1890,"nodeType":"Block","src":"2844:273:15","statements":[{"expression":{"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1864,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2866:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2875:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"2866:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1868,"indexExpression":{"id":1866,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"2887:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2866:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2896:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2866:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1871,"nodeType":"ExpressionStatement","src":"2866:34:15"},{"expression":{"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1872,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2922:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2931:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"2922:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1876,"indexExpression":{"id":1874,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"2944:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2922:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":1877,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2953:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2987:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"2953:52:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3031:6:15","memberName":"length","nodeType":"MemberAccess","src":"2953:84:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2922:115:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1881,"nodeType":"ExpressionStatement","src":"2922:115:15"},{"expression":{"arguments":[{"id":1887,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"3092:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":1882,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3059:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3068:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"3059:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3087:4:15","memberName":"push","nodeType":"MemberAccess","src":"3059:32:15","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":1888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1889,"nodeType":"ExpressionStatement","src":"3059:39:15"}]}},{"expression":{"id":1898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1892,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3134:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3143:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"3134:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1896,"indexExpression":{"id":1894,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"3159:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3134:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3168:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3134:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1899,"nodeType":"ExpressionStatement","src":"3134:38:15"},{"eventCall":{"arguments":[{"id":1901,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"3215:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1900,"name":"SupportedTokenAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"3195:19:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3195:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1903,"nodeType":"EmitStatement","src":"3190:31:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1840,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2607:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1841,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1758,"src":"2611:23:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2635:6:15","memberName":"length","nodeType":"MemberAccess","src":"2611:30:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2607:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1907,"initializationExpression":{"assignments":[1837],"declarations":[{"constant":false,"id":1837,"mutability":"mutable","name":"i","nameLocation":"2600:1:15","nodeType":"VariableDeclaration","scope":1907,"src":"2592:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1839,"initialValue":{"hexValue":"30","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2604:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2592:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2643:3:15","subExpression":{"id":1844,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2643:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1846,"nodeType":"ExpressionStatement","src":"2643:3:15"},"nodeType":"ForStatement","src":"2587:659:15"},{"condition":{"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3341:33:15","subExpression":{"baseExpression":{"expression":{"id":1908,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3342:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3351:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"3342:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1914,"indexExpression":{"arguments":[{"hexValue":"30","id":1912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3371:1:15","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":1911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3363:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1910,"name":"address","nodeType":"ElementaryTypeName","src":"3363:7:15","typeDescriptions":{}}},"id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3363:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3342:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1952,"nodeType":"IfStatement","src":"3337:279:15","trueBody":{"id":1951,"nodeType":"Block","src":"3376:240:15","statements":[{"expression":{"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1916,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3390:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3399:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"3390:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1923,"indexExpression":{"arguments":[{"hexValue":"30","id":1920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3419:1:15","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":1919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3411:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1918,"name":"address","nodeType":"ElementaryTypeName","src":"3411:7:15","typeDescriptions":{}}},"id":1921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3411:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3390:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3425:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3390:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1926,"nodeType":"ExpressionStatement","src":"3390:39:15"},{"expression":{"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1927,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3443:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3452:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"3443:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1934,"indexExpression":{"arguments":[{"hexValue":"30","id":1931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3473:1:15","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":1930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3465:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1929,"name":"address","nodeType":"ElementaryTypeName","src":"3465:7:15","typeDescriptions":{}}},"id":1932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3465:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3443:33:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":1935,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3479:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3505:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"3479:44:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:6:15","memberName":"length","nodeType":"MemberAccess","src":"3479:68:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3443:104:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1939,"nodeType":"ExpressionStatement","src":"3443:104:15"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3602:1:15","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":1946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3594:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1945,"name":"address","nodeType":"ElementaryTypeName","src":"3594:7:15","typeDescriptions":{}}},"id":1948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":1940,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3561:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3570:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"3561:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3589:4:15","memberName":"push","nodeType":"MemberAccess","src":"3561:32:15","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":1949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1950,"nodeType":"ExpressionStatement","src":"3561:44:15"}]}},{"expression":{"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1953,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3687:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3696:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"3687:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1960,"indexExpression":{"arguments":[{"hexValue":"30","id":1957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3720:1:15","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":1956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3712:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1955,"name":"address","nodeType":"ElementaryTypeName","src":"3712:7:15","typeDescriptions":{}}},"id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3712:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3687:36:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3726:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3687:43:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1963,"nodeType":"ExpressionStatement","src":"3687:43:15"}]},"documentation":{"id":1750,"nodeType":"StructuredDocumentation","src":"1622:232:15","text":" @dev Initialize the contract\n @param initialOwner Initial owner address\n @param initialAdmins Initial admin addresses array\n @param supportedTokenAddresses Initial supported token addresses array"},"functionSelector":"4a200fa5","id":1965,"implemented":true,"kind":"function","modifiers":[{"id":1761,"kind":"modifierInvocation","modifierName":{"id":1760,"name":"initializer","nameLocations":["2014:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":107,"src":"2014:11:15"},"nodeType":"ModifierInvocation","src":"2014:11:15"}],"name":"initialize","nameLocation":"1868:10:15","nodeType":"FunctionDefinition","parameters":{"id":1759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"initialOwner","nameLocation":"1896:12:15","nodeType":"VariableDeclaration","scope":1965,"src":"1888:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1751,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1755,"mutability":"mutable","name":"initialAdmins","nameLocation":"1935:13:15","nodeType":"VariableDeclaration","scope":1965,"src":"1918:30:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1753,"name":"address","nodeType":"ElementaryTypeName","src":"1918:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1754,"nodeType":"ArrayTypeName","src":"1918:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1758,"mutability":"mutable","name":"supportedTokenAddresses","nameLocation":"1975:23:15","nodeType":"VariableDeclaration","scope":1965,"src":"1958:40:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"1958:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1757,"nodeType":"ArrayTypeName","src":"1958:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1878:126:15"},"returnParameters":{"id":1762,"nodeType":"ParameterList","parameters":[],"src":"2026:0:15"},"scope":3806,"src":"1859:1878:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4153],"body":{"id":1974,"nodeType":"Block","src":"3843:40:15","statements":[{"expression":{"expression":{"id":1971,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"3860:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3869:7:15","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":4218,"src":"3860:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1970,"id":1973,"nodeType":"Return","src":"3853:23:15"}]},"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"3743:44:15","text":" @dev Get contract version"},"functionSelector":"54fd4d50","id":1975,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"3801:7:15","nodeType":"FunctionDefinition","parameters":{"id":1967,"nodeType":"ParameterList","parameters":[],"src":"3808:2:15"},"returnParameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1975,"src":"3834:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1968,"name":"uint256","nodeType":"ElementaryTypeName","src":"3834:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3833:9:15"},"scope":3806,"src":"3792:91:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4156],"body":{"id":2009,"nodeType":"Block","src":"3994:269:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1981,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4094:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4103:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"4094:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4123:1:15","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":1984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4115:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1983,"name":"address","nodeType":"ElementaryTypeName","src":"4115:7:15","typeDescriptions":{}}},"id":1986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4115:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4094:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2008,"nodeType":"IfStatement","src":"4090:167:15","trueBody":{"id":2007,"nodeType":"Block","src":"4127:130:15","statements":[{"expression":{"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1988,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4141:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4150:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"4141:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1993,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4169:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":1994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4178:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"4169:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4161:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":1991,"name":"address","nodeType":"ElementaryTypeName","src":"4161:8:15","stateMutability":"payable","typeDescriptions":{}}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4161:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4141:43:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1997,"nodeType":"ExpressionStatement","src":"4141:43:15"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4227:1:15","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":2000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4219:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1999,"name":"address","nodeType":"ElementaryTypeName","src":"4219:7:15","typeDescriptions":{}}},"id":2002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4219:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2003,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4231:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4240:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"4231:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1998,"name":"TreasuryUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"4203:15:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4203:43:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2006,"nodeType":"EmitStatement","src":"4198:48:15"}]}}]},"documentation":{"id":1976,"nodeType":"StructuredDocumentation","src":"3889:62:15","text":" @dev Migration function for future upgrades"},"functionSelector":"8fd3ab80","id":2010,"implemented":true,"kind":"function","modifiers":[{"id":1979,"kind":"modifierInvocation","modifierName":{"id":1978,"name":"onlyOwner","nameLocations":["3984:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"3984:9:15"},"nodeType":"ModifierInvocation","src":"3984:9:15"}],"name":"migrate","nameLocation":"3965:7:15","nodeType":"FunctionDefinition","parameters":{"id":1977,"nodeType":"ParameterList","parameters":[],"src":"3972:2:15"},"returnParameters":{"id":1980,"nodeType":"ParameterList","parameters":[],"src":"3994:0:15"},"scope":3806,"src":"3956:307:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[403],"body":{"id":2019,"nodeType":"Block","src":"4441:2:15","statements":[]},"documentation":{"id":2011,"nodeType":"StructuredDocumentation","src":"4269:71:15","text":" @dev Authorize upgrade (required by UUPSUpgradeable)"},"id":2020,"implemented":true,"kind":"function","modifiers":[{"id":2017,"kind":"modifierInvocation","modifierName":{"id":2016,"name":"onlyOwner","nameLocations":["4431:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"4431:9:15"},"nodeType":"ModifierInvocation","src":"4431:9:15"}],"name":"_authorizeUpgrade","nameLocation":"4354:17:15","nodeType":"FunctionDefinition","overrides":{"id":2015,"nodeType":"OverrideSpecifier","overrides":[],"src":"4422:8:15"},"parameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2013,"mutability":"mutable","name":"newImplementation","nameLocation":"4389:17:15","nodeType":"VariableDeclaration","scope":2020,"src":"4381:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2012,"name":"address","nodeType":"ElementaryTypeName","src":"4381:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4371:41:15"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[],"src":"4441:0:15"},"scope":3806,"src":"4345:98:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[608,3947],"body":{"id":2032,"nodeType":"Block","src":"4720:38:15","statements":[{"expression":{"expression":{"id":2029,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4737:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4746:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"4737:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2028,"id":2031,"nodeType":"Return","src":"4730:21:15"}]},"documentation":{"id":2021,"nodeType":"StructuredDocumentation","src":"4510:86:15","text":" @dev Get current owner address\n @return Current owner address"},"functionSelector":"8da5cb5b","id":2033,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"4610:5:15","nodeType":"FunctionDefinition","overrides":{"id":2025,"nodeType":"OverrideSpecifier","overrides":[{"id":2023,"name":"IERC5313","nameLocations":["4665:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":609,"src":"4665:8:15"},{"id":2024,"name":"IVideoPayment","nameLocations":["4675:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":4157,"src":"4675:13:15"}],"src":"4656:33:15"},"parameters":{"id":2022,"nodeType":"ParameterList","parameters":[],"src":"4615:2:15"},"returnParameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2033,"src":"4707:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"4707:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4706:9:15"},"scope":3806,"src":"4601:157:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3954],"body":{"id":2046,"nodeType":"Block","src":"4960:49:15","statements":[{"expression":{"baseExpression":{"expression":{"id":2041,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"4977:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4986:7:15","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4187,"src":"4977:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2044,"indexExpression":{"id":2043,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2036,"src":"4994:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4977:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2040,"id":2045,"nodeType":"Return","src":"4970:32:15"}]},"documentation":{"id":2034,"nodeType":"StructuredDocumentation","src":"4764:128:15","text":" @dev Check if address is admin\n @param account Address to check\n @return Whether address is admin"},"functionSelector":"24d7806c","id":2047,"implemented":true,"kind":"function","modifiers":[],"name":"isAdmin","nameLocation":"4906:7:15","nodeType":"FunctionDefinition","parameters":{"id":2037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2036,"mutability":"mutable","name":"account","nameLocation":"4922:7:15","nodeType":"VariableDeclaration","scope":2047,"src":"4914:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2035,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4913:17:15"},"returnParameters":{"id":2040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2047,"src":"4954:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2038,"name":"bool","nodeType":"ElementaryTypeName","src":"4954:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4953:6:15"},"scope":3806,"src":"4897:112:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3959],"body":{"id":2077,"nodeType":"Block","src":"5146:134:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2055,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"5160:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5177:1:15","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":2057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5169:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2056,"name":"address","nodeType":"ElementaryTypeName","src":"5169:7:15","typeDescriptions":{}}},"id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5169:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5160:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2064,"nodeType":"IfStatement","src":"5156:45:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2061,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"5188:11:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5188:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2063,"nodeType":"RevertStatement","src":"5181:20:15"}},{"expression":{"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2065,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5211:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5220:7:15","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4187,"src":"5211:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2069,"indexExpression":{"id":2067,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"5228:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5211:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5237:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5211:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2072,"nodeType":"ExpressionStatement","src":"5211:30:15"},{"eventCall":{"arguments":[{"id":2074,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"5267:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2073,"name":"AdminAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"5256:10:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5256:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2076,"nodeType":"EmitStatement","src":"5251:22:15"}]},"documentation":{"id":2048,"nodeType":"StructuredDocumentation","src":"5015:74:15","text":" @dev Add admin\n @param admin Admin address to add"},"functionSelector":"70480275","id":2078,"implemented":true,"kind":"function","modifiers":[{"id":2053,"kind":"modifierInvocation","modifierName":{"id":2052,"name":"onlyOwner","nameLocations":["5136:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"5136:9:15"},"nodeType":"ModifierInvocation","src":"5136:9:15"}],"name":"addAdmin","nameLocation":"5103:8:15","nodeType":"FunctionDefinition","parameters":{"id":2051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"admin","nameLocation":"5120:5:15","nodeType":"VariableDeclaration","scope":2078,"src":"5112:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2049,"name":"address","nodeType":"ElementaryTypeName","src":"5112:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5111:15:15"},"returnParameters":{"id":2054,"nodeType":"ParameterList","parameters":[],"src":"5146:0:15"},"scope":3806,"src":"5094:186:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3964],"body":{"id":2108,"nodeType":"Block","src":"5426:137:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"5440:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5457:1:15","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":2088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5449:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2087,"name":"address","nodeType":"ElementaryTypeName","src":"5449:7:15","typeDescriptions":{}}},"id":2090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5449:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5440:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2095,"nodeType":"IfStatement","src":"5436:45:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2092,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"5468:11:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5468:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2094,"nodeType":"RevertStatement","src":"5461:20:15"}},{"expression":{"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2096,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5491:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5500:7:15","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4187,"src":"5491:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2100,"indexExpression":{"id":2098,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"5508:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5491:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5491:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2103,"nodeType":"ExpressionStatement","src":"5491:31:15"},{"eventCall":{"arguments":[{"id":2105,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"5550:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2104,"name":"AdminRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3912,"src":"5537:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5537:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2107,"nodeType":"EmitStatement","src":"5532:24:15"}]},"documentation":{"id":2079,"nodeType":"StructuredDocumentation","src":"5286:80:15","text":" @dev Remove admin\n @param admin Admin address to remove"},"functionSelector":"1785f53c","id":2109,"implemented":true,"kind":"function","modifiers":[{"id":2084,"kind":"modifierInvocation","modifierName":{"id":2083,"name":"onlyOwner","nameLocations":["5416:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"5416:9:15"},"nodeType":"ModifierInvocation","src":"5416:9:15"}],"name":"removeAdmin","nameLocation":"5380:11:15","nodeType":"FunctionDefinition","parameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"admin","nameLocation":"5400:5:15","nodeType":"VariableDeclaration","scope":2109,"src":"5392:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2080,"name":"address","nodeType":"ElementaryTypeName","src":"5392:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5391:15:15"},"returnParameters":{"id":2085,"nodeType":"ParameterList","parameters":[],"src":"5426:0:15"},"scope":3806,"src":"5371:192:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3969],"body":{"id":2143,"nodeType":"Block","src":"5821:214:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2117,"name":"newTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"5835:11:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5858:1:15","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":2119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5850:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2118,"name":"address","nodeType":"ElementaryTypeName","src":"5850:7:15","typeDescriptions":{}}},"id":2121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5850:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5835:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2126,"nodeType":"IfStatement","src":"5831:51:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2123,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"5869:11:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5869:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2125,"nodeType":"RevertStatement","src":"5862:20:15"}},{"assignments":[2128],"declarations":[{"constant":false,"id":2128,"mutability":"mutable","name":"oldTreasury","nameLocation":"5900:11:15","nodeType":"VariableDeclaration","scope":2143,"src":"5892:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2127,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2131,"initialValue":{"expression":{"id":2129,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5914:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5923:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"5914:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5892:39:15"},{"expression":{"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2132,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5941:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5950:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"5941:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2135,"name":"newTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"5961:11:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5941:31:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2137,"nodeType":"ExpressionStatement","src":"5941:31:15"},{"eventCall":{"arguments":[{"id":2139,"name":"oldTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2128,"src":"6003:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2140,"name":"newTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"6016:11:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2138,"name":"TreasuryUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"5987:15:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5987:41:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2142,"nodeType":"EmitStatement","src":"5982:46:15"}]},"documentation":{"id":2110,"nodeType":"StructuredDocumentation","src":"5633:114:15","text":" @dev Set treasury address for receiving payments\n @param newTreasury New treasury address"},"functionSelector":"f0f44260","id":2144,"implemented":true,"kind":"function","modifiers":[{"id":2115,"kind":"modifierInvocation","modifierName":{"id":2114,"name":"onlyOwner","nameLocations":["5811:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"5811:9:15"},"nodeType":"ModifierInvocation","src":"5811:9:15"}],"name":"setTreasury","nameLocation":"5761:11:15","nodeType":"FunctionDefinition","parameters":{"id":2113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2112,"mutability":"mutable","name":"newTreasury","nameLocation":"5789:11:15","nodeType":"VariableDeclaration","scope":2144,"src":"5773:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2111,"name":"address","nodeType":"ElementaryTypeName","src":"5773:15:15","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"5772:29:15"},"returnParameters":{"id":2116,"nodeType":"ParameterList","parameters":[],"src":"5821:0:15"},"scope":3806,"src":"5752:283:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3974],"body":{"id":2153,"nodeType":"Block","src":"6193:41:15","statements":[{"expression":{"expression":{"id":2150,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"6210:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6219:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"6210:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":2149,"id":2152,"nodeType":"Return","src":"6203:24:15"}]},"documentation":{"id":2145,"nodeType":"StructuredDocumentation","src":"6041:92:15","text":" @dev Get current treasury address\n @return Current treasury address"},"functionSelector":"3b19e84a","id":2154,"implemented":true,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"6147:11:15","nodeType":"FunctionDefinition","parameters":{"id":2146,"nodeType":"ParameterList","parameters":[],"src":"6158:2:15"},"returnParameters":{"id":2149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2154,"src":"6184:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2147,"name":"address","nodeType":"ElementaryTypeName","src":"6184:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6183:9:15"},"scope":3806,"src":"6138:96:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3987],"body":{"id":2229,"nodeType":"Block","src":"6740:503:15","statements":[{"condition":{"id":2174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6754:32:15","subExpression":{"baseExpression":{"expression":{"id":2170,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"6755:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6764:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"6755:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2173,"indexExpression":{"id":2172,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"6780:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6755:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2178,"nodeType":"IfStatement","src":"6750:63:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2175,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"6795:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6795:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2177,"nodeType":"RevertStatement","src":"6788:25:15"}},{"expression":{"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2179,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"6824:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6833:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"6824:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2183,"indexExpression":{"id":2181,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"6848:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6824:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6859:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"6824:46:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2186,"indexExpression":{"id":2185,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"6871:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6824:53:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2187,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"6880:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6824:61:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2189,"nodeType":"ExpressionStatement","src":"6824:61:15"},{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2190,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"6895:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6904:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"6895:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2194,"indexExpression":{"id":2192,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"6919:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6895:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6930:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"6895:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2196,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"6942:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6895:56:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"6895:56:15"},{"expression":{"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2199,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"6961:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6970:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"6961:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2203,"indexExpression":{"id":2201,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"6985:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6961:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6996:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"6961:43:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2205,"name":"isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"7007:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6961:54:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2207,"nodeType":"ExpressionStatement","src":"6961:54:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2208,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"7090:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7107:1:15","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":2210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7099:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2209,"name":"address","nodeType":"ElementaryTypeName","src":"7099:7:15","typeDescriptions":{}}},"id":2212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7099:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7090:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2224,"nodeType":"IfStatement","src":"7086:104:15","trueBody":{"id":2223,"nodeType":"Block","src":"7111:79:15","statements":[{"expression":{"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2214,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"7125:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7134:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"7125:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2218,"indexExpression":{"id":2216,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"7149:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7125:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7160:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"7125:46:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2220,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"7174:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7125:54:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2222,"nodeType":"ExpressionStatement","src":"7125:54:15"}]}},{"eventCall":{"arguments":[{"id":2226,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"7226:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2225,"name":"ContentConfigUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"7205:20:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7205:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2228,"nodeType":"EmitStatement","src":"7200:36:15"}]},"documentation":{"id":2155,"nodeType":"StructuredDocumentation","src":"6303:258:15","text":" @dev Set content configuration\n @param contentId Content ID\n @param token Token address (address(0) for native)\n @param price Token price\n @param viewCount View count\n @param isActive Whether content is active"},"functionSelector":"02236026","id":2230,"implemented":true,"kind":"function","modifiers":[{"id":2168,"kind":"modifierInvocation","modifierName":{"id":2167,"name":"onlyAdmin","nameLocations":["6730:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"6730:9:15"},"nodeType":"ModifierInvocation","src":"6730:9:15"}],"name":"setContentConfig","nameLocation":"6575:16:15","nodeType":"FunctionDefinition","parameters":{"id":2166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2157,"mutability":"mutable","name":"contentId","nameLocation":"6609:9:15","nodeType":"VariableDeclaration","scope":2230,"src":"6601:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2156,"name":"uint256","nodeType":"ElementaryTypeName","src":"6601:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2159,"mutability":"mutable","name":"token","nameLocation":"6636:5:15","nodeType":"VariableDeclaration","scope":2230,"src":"6628:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2158,"name":"address","nodeType":"ElementaryTypeName","src":"6628:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2161,"mutability":"mutable","name":"price","nameLocation":"6659:5:15","nodeType":"VariableDeclaration","scope":2230,"src":"6651:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"6651:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2163,"mutability":"mutable","name":"viewCount","nameLocation":"6682:9:15","nodeType":"VariableDeclaration","scope":2230,"src":"6674:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2162,"name":"uint256","nodeType":"ElementaryTypeName","src":"6674:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2165,"mutability":"mutable","name":"isActive","nameLocation":"6706:8:15","nodeType":"VariableDeclaration","scope":2230,"src":"6701:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2164,"name":"bool","nodeType":"ElementaryTypeName","src":"6701:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6591:129:15"},"returnParameters":{"id":2169,"nodeType":"ParameterList","parameters":[],"src":"6740:0:15"},"scope":3806,"src":"6566:677:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4004],"body":{"id":2361,"nodeType":"Block","src":"7756:884:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2250,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"7783:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7794:6:15","memberName":"length","nodeType":"MemberAccess","src":"7783:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2252,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"7804:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7811:6:15","memberName":"length","nodeType":"MemberAccess","src":"7804:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7783:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2255,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"7833:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7844:6:15","memberName":"length","nodeType":"MemberAccess","src":"7833:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2257,"name":"viewCounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"7854:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:6:15","memberName":"length","nodeType":"MemberAccess","src":"7854:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7833:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7783:88:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2261,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"7887:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7898:6:15","memberName":"length","nodeType":"MemberAccess","src":"7887:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2263,"name":"isActiveArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2245,"src":"7908:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7922:6:15","memberName":"length","nodeType":"MemberAccess","src":"7908:20:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7887:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7783:145:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2270,"nodeType":"IfStatement","src":"7766:201:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2267,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"7946:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7946:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2269,"nodeType":"RevertStatement","src":"7939:28:15"}},{"condition":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7981:32:15","subExpression":{"baseExpression":{"expression":{"id":2271,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"7982:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7991:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"7982:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2274,"indexExpression":{"id":2273,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"8007:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7982:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"7977:63:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2276,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"8022:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8022:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2278,"nodeType":"RevertStatement","src":"8015:25:15"}},{"body":{"id":2359,"nodeType":"Block","src":"8099:535:15","statements":[{"expression":{"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2291,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"8113:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8122:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"8113:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2297,"indexExpression":{"baseExpression":{"id":2293,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8137:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2295,"indexExpression":{"id":2294,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8148:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8137:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8113:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8152:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"8113:50:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2300,"indexExpression":{"id":2299,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"8164:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8113:57:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2301,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"8173:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2303,"indexExpression":{"id":2302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8197:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8173:39:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8113:99:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2305,"nodeType":"ExpressionStatement","src":"8113:99:15"},{"expression":{"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2306,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"8226:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8235:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"8226:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2312,"indexExpression":{"baseExpression":{"id":2308,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8250:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2310,"indexExpression":{"id":2309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8261:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8250:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8226:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8265:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"8226:48:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2314,"name":"viewCounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"8277:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2316,"indexExpression":{"id":2315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8288:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8277:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8226:64:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2318,"nodeType":"ExpressionStatement","src":"8226:64:15"},{"expression":{"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2319,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"8304:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8313:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"8304:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2325,"indexExpression":{"baseExpression":{"id":2321,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8328:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2323,"indexExpression":{"id":2322,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8339:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8328:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8304:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8343:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"8304:47:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2327,"name":"isActiveArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2245,"src":"8354:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":2329,"indexExpression":{"id":2328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8368:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8354:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8304:66:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2331,"nodeType":"ExpressionStatement","src":"8304:66:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2332,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"8453:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8470:1:15","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":2334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"8462:7:15","typeDescriptions":{}}},"id":2336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8462:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8453:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2352,"nodeType":"IfStatement","src":"8449:120:15","trueBody":{"id":2351,"nodeType":"Block","src":"8474:95:15","statements":[{"expression":{"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2338,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"8492:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8501:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"8492:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2344,"indexExpression":{"baseExpression":{"id":2340,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8516:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2342,"indexExpression":{"id":2341,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8527:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8516:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8492:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8531:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"8492:50:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2346,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"8545:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2348,"indexExpression":{"id":2347,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8552:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8545:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8492:62:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2350,"nodeType":"ExpressionStatement","src":"8492:62:15"}]}},{"eventCall":{"arguments":[{"baseExpression":{"id":2354,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8609:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2356,"indexExpression":{"id":2355,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8620:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8609:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2353,"name":"ContentConfigUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"8588:20:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8588:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2358,"nodeType":"EmitStatement","src":"8583:40:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2284,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8071:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2285,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"8075:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8086:6:15","memberName":"length","nodeType":"MemberAccess","src":"8075:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8071:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2360,"initializationExpression":{"assignments":[2281],"declarations":[{"constant":false,"id":2281,"mutability":"mutable","name":"i","nameLocation":"8064:1:15","nodeType":"VariableDeclaration","scope":2360,"src":"8056:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2280,"name":"uint256","nodeType":"ElementaryTypeName","src":"8056:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2283,"initialValue":{"hexValue":"30","id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8068:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8056:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8094:3:15","subExpression":{"id":2288,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"8094:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2290,"nodeType":"ExpressionStatement","src":"8094:3:15"},"nodeType":"ForStatement","src":"8051:583:15"}]},"documentation":{"id":2231,"nodeType":"StructuredDocumentation","src":"7249:279:15","text":" @dev Batch set content configurations\n @param contentIds Content ID array\n @param token Token address (address(0) for native)\n @param prices Price array\n @param viewCounts View count array\n @param isActiveArray Active status array"},"functionSelector":"277148e3","id":2362,"implemented":true,"kind":"function","modifiers":[{"id":2248,"kind":"modifierInvocation","modifierName":{"id":2247,"name":"onlyAdmin","nameLocations":["7746:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"7746:9:15"},"nodeType":"ModifierInvocation","src":"7746:9:15"}],"name":"batchSetContentConfig","nameLocation":"7542:21:15","nodeType":"FunctionDefinition","parameters":{"id":2246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2234,"mutability":"mutable","name":"contentIds","nameLocation":"7590:10:15","nodeType":"VariableDeclaration","scope":2362,"src":"7573:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2232,"name":"uint256","nodeType":"ElementaryTypeName","src":"7573:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2233,"nodeType":"ArrayTypeName","src":"7573:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2236,"mutability":"mutable","name":"token","nameLocation":"7618:5:15","nodeType":"VariableDeclaration","scope":2362,"src":"7610:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2235,"name":"address","nodeType":"ElementaryTypeName","src":"7610:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"prices","nameLocation":"7650:6:15","nodeType":"VariableDeclaration","scope":2362,"src":"7633:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2237,"name":"uint256","nodeType":"ElementaryTypeName","src":"7633:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2238,"nodeType":"ArrayTypeName","src":"7633:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2242,"mutability":"mutable","name":"viewCounts","nameLocation":"7683:10:15","nodeType":"VariableDeclaration","scope":2362,"src":"7666:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2240,"name":"uint256","nodeType":"ElementaryTypeName","src":"7666:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2241,"nodeType":"ArrayTypeName","src":"7666:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2245,"mutability":"mutable","name":"isActiveArray","nameLocation":"7717:13:15","nodeType":"VariableDeclaration","scope":2362,"src":"7703:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":2243,"name":"bool","nodeType":"ElementaryTypeName","src":"7703:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2244,"nodeType":"ArrayTypeName","src":"7703:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"7563:173:15"},"returnParameters":{"id":2249,"nodeType":"ParameterList","parameters":[],"src":"7756:0:15"},"scope":3806,"src":"7533:1107:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4011],"body":{"id":2376,"nodeType":"Block","src":"8850:67:15","statements":[{"expression":{"expression":{"baseExpression":{"expression":{"id":2370,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"8867:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8876:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"8867:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2373,"indexExpression":{"id":2372,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"8891:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8867:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8902:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"8867:43:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2369,"id":2375,"nodeType":"Return","src":"8860:50:15"}]},"documentation":{"id":2363,"nodeType":"StructuredDocumentation","src":"8646:126:15","text":" @dev Check if content is active\n @param contentId Content ID\n @return Whether content is active"},"functionSelector":"40033b3d","id":2377,"implemented":true,"kind":"function","modifiers":[],"name":"isContentActive","nameLocation":"8786:15:15","nodeType":"FunctionDefinition","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2365,"mutability":"mutable","name":"contentId","nameLocation":"8810:9:15","nodeType":"VariableDeclaration","scope":2377,"src":"8802:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"8802:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8801:19:15"},"returnParameters":{"id":2369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2377,"src":"8844:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2367,"name":"bool","nodeType":"ElementaryTypeName","src":"8844:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8843:6:15"},"scope":3806,"src":"8777:140:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4020],"body":{"id":2432,"nodeType":"Block","src":"9325:384:15","statements":[{"condition":{"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9339:32:15","subExpression":{"baseExpression":{"expression":{"id":2389,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9340:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9349:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"9340:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2392,"indexExpression":{"id":2391,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"9365:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9340:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2397,"nodeType":"IfStatement","src":"9335:63:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2394,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"9380:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9380:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2396,"nodeType":"RevertStatement","src":"9373:25:15"}},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2398,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9409:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9418:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"9409:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2402,"indexExpression":{"id":2400,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"9433:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9409:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9444:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"9409:46:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2405,"indexExpression":{"id":2404,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"9456:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9409:53:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2406,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"9465:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:61:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"9409:61:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2409,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"9545:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9562:1:15","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":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9554:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"9554:7:15","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9554:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9545:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2425,"nodeType":"IfStatement","src":"9541:104:15","trueBody":{"id":2424,"nodeType":"Block","src":"9566:79:15","statements":[{"expression":{"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2415,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9580:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9589:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"9580:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2419,"indexExpression":{"id":2417,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"9604:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9580:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9615:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"9580:46:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2421,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"9629:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9580:54:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2423,"nodeType":"ExpressionStatement","src":"9580:54:15"}]}},{"eventCall":{"arguments":[{"id":2427,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"9678:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2428,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"9689:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2429,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"9696:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2426,"name":"TokenPriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"9660:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":2430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9660:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2431,"nodeType":"EmitStatement","src":"9655:47:15"}]},"documentation":{"id":2378,"nodeType":"StructuredDocumentation","src":"8984:213:15","text":" @dev Set content price for specific token (address(0) for native token)\n @param contentId Content ID\n @param token Token address (address(0) for native)\n @param price New price"},"functionSelector":"9981007b","id":2433,"implemented":true,"kind":"function","modifiers":[{"id":2387,"kind":"modifierInvocation","modifierName":{"id":2386,"name":"onlyAdmin","nameLocations":["9315:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"9315:9:15"},"nodeType":"ModifierInvocation","src":"9315:9:15"}],"name":"setContentPrice","nameLocation":"9211:15:15","nodeType":"FunctionDefinition","parameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"contentId","nameLocation":"9244:9:15","nodeType":"VariableDeclaration","scope":2433,"src":"9236:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"9236:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"token","nameLocation":"9271:5:15","nodeType":"VariableDeclaration","scope":2433,"src":"9263:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2381,"name":"address","nodeType":"ElementaryTypeName","src":"9263:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2384,"mutability":"mutable","name":"price","nameLocation":"9294:5:15","nodeType":"VariableDeclaration","scope":2433,"src":"9286:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"9286:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9226:79:15"},"returnParameters":{"id":2388,"nodeType":"ParameterList","parameters":[],"src":"9325:0:15"},"scope":3806,"src":"9202:507:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4031],"body":{"id":2524,"nodeType":"Block","src":"10101:608:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2447,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"10115:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10126:6:15","memberName":"length","nodeType":"MemberAccess","src":"10115:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2449,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"10136:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10143:6:15","memberName":"length","nodeType":"MemberAccess","src":"10136:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10115:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"IfStatement","src":"10111:68:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2452,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"10158:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10158:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2454,"nodeType":"RevertStatement","src":"10151:28:15"}},{"condition":{"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10193:32:15","subExpression":{"baseExpression":{"expression":{"id":2456,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"10194:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10203:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"10194:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2459,"indexExpression":{"id":2458,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"10219:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10194:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2464,"nodeType":"IfStatement","src":"10189:63:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2461,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"10234:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2463,"nodeType":"RevertStatement","src":"10227:25:15"}},{"body":{"id":2522,"nodeType":"Block","src":"10311:392:15","statements":[{"expression":{"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2476,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"10325:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10334:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"10325:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2482,"indexExpression":{"baseExpression":{"id":2478,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"10349:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2480,"indexExpression":{"id":2479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10360:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10349:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10325:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10364:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"10325:50:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2485,"indexExpression":{"id":2484,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"10376:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10325:57:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2486,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"10385:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2488,"indexExpression":{"id":2487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10409:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10385:39:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10325:99:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2490,"nodeType":"ExpressionStatement","src":"10325:99:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2491,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"10507:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10524:1:15","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":2493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10516:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2492,"name":"address","nodeType":"ElementaryTypeName","src":"10516:7:15","typeDescriptions":{}}},"id":2495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10516:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10507:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2511,"nodeType":"IfStatement","src":"10503:120:15","trueBody":{"id":2510,"nodeType":"Block","src":"10528:95:15","statements":[{"expression":{"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2497,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"10546:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10555:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"10546:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2503,"indexExpression":{"baseExpression":{"id":2499,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"10570:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2501,"indexExpression":{"id":2500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10581:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10570:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10546:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10585:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"10546:50:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2505,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"10599:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2507,"indexExpression":{"id":2506,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10606:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10599:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10546:62:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2509,"nodeType":"ExpressionStatement","src":"10546:62:15"}]}},{"eventCall":{"arguments":[{"baseExpression":{"id":2513,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"10660:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2515,"indexExpression":{"id":2514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10671:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10660:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2516,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"10675:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2517,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"10682:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2519,"indexExpression":{"id":2518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10689:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10682:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2512,"name":"TokenPriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"10642:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:50:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2521,"nodeType":"EmitStatement","src":"10637:55:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2469,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10283:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2470,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"10287:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:6:15","memberName":"length","nodeType":"MemberAccess","src":"10287:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10283:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2523,"initializationExpression":{"assignments":[2466],"declarations":[{"constant":false,"id":2466,"mutability":"mutable","name":"i","nameLocation":"10276:1:15","nodeType":"VariableDeclaration","scope":2523,"src":"10268:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2465,"name":"uint256","nodeType":"ElementaryTypeName","src":"10268:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2468,"initialValue":{"hexValue":"30","id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10280:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10268:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10306:3:15","subExpression":{"id":2473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"10306:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2475,"nodeType":"ExpressionStatement","src":"10306:3:15"},"nodeType":"ForStatement","src":"10263:440:15"}]},"documentation":{"id":2434,"nodeType":"StructuredDocumentation","src":"9715:233:15","text":" @dev Batch set content prices for multiple contents (address(0) for native token)\n @param contentIds Content ID array\n @param token Token address (address(0) for native)\n @param prices Price array"},"functionSelector":"b6f4fe98","id":2525,"implemented":true,"kind":"function","modifiers":[{"id":2445,"kind":"modifierInvocation","modifierName":{"id":2444,"name":"onlyAdmin","nameLocations":["10091:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"10091:9:15"},"nodeType":"ModifierInvocation","src":"10091:9:15"}],"name":"batchSetContentPrice","nameLocation":"9962:20:15","nodeType":"FunctionDefinition","parameters":{"id":2443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"contentIds","nameLocation":"10009:10:15","nodeType":"VariableDeclaration","scope":2525,"src":"9992:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2435,"name":"uint256","nodeType":"ElementaryTypeName","src":"9992:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2436,"nodeType":"ArrayTypeName","src":"9992:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"token","nameLocation":"10037:5:15","nodeType":"VariableDeclaration","scope":2525,"src":"10029:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"10029:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2442,"mutability":"mutable","name":"prices","nameLocation":"10069:6:15","nodeType":"VariableDeclaration","scope":2525,"src":"10052:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"10052:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2441,"nodeType":"ArrayTypeName","src":"10052:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9982:99:15"},"returnParameters":{"id":2446,"nodeType":"ParameterList","parameters":[],"src":"10101:0:15"},"scope":3806,"src":"9953:756:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4042],"body":{"id":2578,"nodeType":"Block","src":"10988:330:15","statements":[{"condition":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11002:28:15","subExpression":{"baseExpression":{"expression":{"id":2533,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11003:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11012:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"11003:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2536,"indexExpression":{"id":2535,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11024:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11003:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2565,"nodeType":"IfStatement","src":"10998:225:15","trueBody":{"id":2564,"nodeType":"Block","src":"11032:191:15","statements":[{"expression":{"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2538,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11046:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11055:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"11046:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2542,"indexExpression":{"id":2540,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11067:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11046:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11076:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11046:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2545,"nodeType":"ExpressionStatement","src":"11046:34:15"},{"expression":{"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2546,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11094:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11103:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"11094:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2550,"indexExpression":{"id":2548,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11116:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11094:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":2551,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11125:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11134:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"11125:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11153:6:15","memberName":"length","nodeType":"MemberAccess","src":"11125:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11094:65:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2555,"nodeType":"ExpressionStatement","src":"11094:65:15"},{"expression":{"arguments":[{"id":2561,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11206:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":2556,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11173:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11182:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"11173:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11201:4:15","memberName":"push","nodeType":"MemberAccess","src":"11173:32:15","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":2562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11173:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2563,"nodeType":"ExpressionStatement","src":"11173:39:15"}]}},{"expression":{"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2566,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11232:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11241:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"11232:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2570,"indexExpression":{"id":2568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11257:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11232:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11266:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11232:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2573,"nodeType":"ExpressionStatement","src":"11232:38:15"},{"eventCall":{"arguments":[{"id":2575,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"11305:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2574,"name":"SupportedTokenAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"11285:19:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11285:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2577,"nodeType":"EmitStatement","src":"11280:31:15"}]},"documentation":{"id":2526,"nodeType":"StructuredDocumentation","src":"10784:138:15","text":" @dev Add supported token (address(0) for native token)\n @param token Token address to add (address(0) for native)"},"functionSelector":"6d69fcaf","id":2579,"implemented":true,"kind":"function","modifiers":[{"id":2531,"kind":"modifierInvocation","modifierName":{"id":2530,"name":"onlyAdmin","nameLocations":["10978:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"10978:9:15"},"nodeType":"ModifierInvocation","src":"10978:9:15"}],"name":"addSupportedToken","nameLocation":"10936:17:15","nodeType":"FunctionDefinition","parameters":{"id":2529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2528,"mutability":"mutable","name":"token","nameLocation":"10962:5:15","nodeType":"VariableDeclaration","scope":2579,"src":"10954:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2527,"name":"address","nodeType":"ElementaryTypeName","src":"10954:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10953:15:15"},"returnParameters":{"id":2532,"nodeType":"ParameterList","parameters":[],"src":"10988:0:15"},"scope":3806,"src":"10927:391:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4047],"body":{"id":2667,"nodeType":"Block","src":"11537:813:15","statements":[{"expression":{"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2587,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11547:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11556:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"11547:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2591,"indexExpression":{"id":2589,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"11572:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11547:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11581:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11547:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2594,"nodeType":"ExpressionStatement","src":"11547:39:15"},{"condition":{"baseExpression":{"expression":{"id":2595,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11601:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11610:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"11601:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2598,"indexExpression":{"id":2597,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"11622:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11601:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2662,"nodeType":"IfStatement","src":"11597:703:15","trueBody":{"id":2661,"nodeType":"Block","src":"11630:670:15","statements":[{"assignments":[2600],"declarations":[{"constant":false,"id":2600,"mutability":"mutable","name":"tokenIndex","nameLocation":"11652:10:15","nodeType":"VariableDeclaration","scope":2661,"src":"11644:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2599,"name":"uint256","nodeType":"ElementaryTypeName","src":"11644:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2605,"initialValue":{"baseExpression":{"expression":{"id":2601,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11665:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11674:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"11665:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2604,"indexExpression":{"id":2603,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"11687:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11665:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11644:49:15"},{"assignments":[2607],"declarations":[{"constant":false,"id":2607,"mutability":"mutable","name":"lastIndex","nameLocation":"11715:9:15","nodeType":"VariableDeclaration","scope":2661,"src":"11707:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2606,"name":"uint256","nodeType":"ElementaryTypeName","src":"11707:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2613,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2608,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11727:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11736:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"11727:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11755:6:15","memberName":"length","nodeType":"MemberAccess","src":"11727:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11764:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11727:38:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11707:58:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2614,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"11858:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2615,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"11872:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11858:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2641,"nodeType":"IfStatement","src":"11854:252:15","trueBody":{"id":2640,"nodeType":"Block","src":"11883:223:15","statements":[{"assignments":[2618],"declarations":[{"constant":false,"id":2618,"mutability":"mutable","name":"lastToken","nameLocation":"11909:9:15","nodeType":"VariableDeclaration","scope":2640,"src":"11901:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2617,"name":"address","nodeType":"ElementaryTypeName","src":"11901:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2623,"initialValue":{"baseExpression":{"expression":{"id":2619,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11921:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11930:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"11921:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2622,"indexExpression":{"id":2621,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"11949:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11921:38:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11901:58:15"},{"expression":{"id":2630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2624,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11977:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11986:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"11977:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2628,"indexExpression":{"id":2626,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"12005:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11977:39:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2629,"name":"lastToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"12019:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11977:51:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2631,"nodeType":"ExpressionStatement","src":"11977:51:15"},{"expression":{"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2632,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12046:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12055:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"12046:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2636,"indexExpression":{"id":2634,"name":"lastToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"12068:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12046:32:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2637,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"12081:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12046:45:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2639,"nodeType":"ExpressionStatement","src":"12046:45:15"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":2642,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12159:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12168:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"12159:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":2646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12187:3:15","memberName":"pop","nodeType":"MemberAccess","src":"12159:31:15","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":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12159:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2648,"nodeType":"ExpressionStatement","src":"12159:33:15"},{"expression":{"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12206:34:15","subExpression":{"baseExpression":{"expression":{"id":2649,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12213:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12222:11:15","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":4210,"src":"12213:20:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2652,"indexExpression":{"id":2651,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"12234:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12213:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2654,"nodeType":"ExpressionStatement","src":"12206:34:15"},{"expression":{"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12254:35:15","subExpression":{"baseExpression":{"expression":{"id":2655,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12261:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12270:12:15","memberName":"tokenIndexes","nodeType":"MemberAccess","referencedDeclaration":4214,"src":"12261:21:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2658,"indexExpression":{"id":2657,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"12283:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12261:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2660,"nodeType":"ExpressionStatement","src":"12254:35:15"}]}},{"eventCall":{"arguments":[{"id":2664,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"12337:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2663,"name":"SupportedTokenRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"12315:21:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12315:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2666,"nodeType":"EmitStatement","src":"12310:33:15"}]},"documentation":{"id":2580,"nodeType":"StructuredDocumentation","src":"11324:144:15","text":" @dev Remove supported token (address(0) for native token)\n @param token Token address to remove (address(0) for native)"},"functionSelector":"76319190","id":2668,"implemented":true,"kind":"function","modifiers":[{"id":2585,"kind":"modifierInvocation","modifierName":{"id":2584,"name":"onlyAdmin","nameLocations":["11527:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"11527:9:15"},"nodeType":"ModifierInvocation","src":"11527:9:15"}],"name":"removeSupportedToken","nameLocation":"11482:20:15","nodeType":"FunctionDefinition","parameters":{"id":2583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2582,"mutability":"mutable","name":"token","nameLocation":"11511:5:15","nodeType":"VariableDeclaration","scope":2668,"src":"11503:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2581,"name":"address","nodeType":"ElementaryTypeName","src":"11503:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11502:15:15"},"returnParameters":{"id":2586,"nodeType":"ParameterList","parameters":[],"src":"11537:0:15"},"scope":3806,"src":"11473:877:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4054],"body":{"id":2681,"nodeType":"Block","src":"12567:55:15","statements":[{"expression":{"baseExpression":{"expression":{"id":2676,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12584:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12593:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"12584:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2679,"indexExpression":{"id":2678,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"12609:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12584:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2675,"id":2680,"nodeType":"Return","src":"12577:38:15"}]},"documentation":{"id":2669,"nodeType":"StructuredDocumentation","src":"12356:136:15","text":" @dev Check if token is supported\n @param token Token address to check\n @return Whether token is supported"},"functionSelector":"240028e8","id":2682,"implemented":true,"kind":"function","modifiers":[],"name":"isSupportedToken","nameLocation":"12506:16:15","nodeType":"FunctionDefinition","parameters":{"id":2672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2671,"mutability":"mutable","name":"token","nameLocation":"12531:5:15","nodeType":"VariableDeclaration","scope":2682,"src":"12523:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2670,"name":"address","nodeType":"ElementaryTypeName","src":"12523:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12522:15:15"},"returnParameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2682,"src":"12561:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2673,"name":"bool","nodeType":"ElementaryTypeName","src":"12561:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12560:6:15"},"scope":3806,"src":"12497:125:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4037],"body":{"id":2692,"nodeType":"Block","src":"12862:51:15","statements":[{"expression":{"expression":{"id":2689,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"12879:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12888:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"12879:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":2688,"id":2691,"nodeType":"Return","src":"12872:34:15"}]},"documentation":{"id":2683,"nodeType":"StructuredDocumentation","src":"12690:93:15","text":" @dev Get all supported tokens\n @return All supported token addresses"},"functionSelector":"0107e472","id":2693,"implemented":true,"kind":"function","modifiers":[],"name":"getAllSupportedTokens","nameLocation":"12797:21:15","nodeType":"FunctionDefinition","parameters":{"id":2684,"nodeType":"ParameterList","parameters":[],"src":"12818:2:15"},"returnParameters":{"id":2688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2687,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2693,"src":"12844:16:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2685,"name":"address","nodeType":"ElementaryTypeName","src":"12844:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2686,"nodeType":"ArrayTypeName","src":"12844:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12843:18:15"},"scope":3806,"src":"12788:125:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4063],"body":{"id":2827,"nodeType":"Block","src":"13382:1456:15","statements":[{"condition":{"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13396:39:15","subExpression":{"baseExpression":{"expression":{"id":2710,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"13397:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13406:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"13397:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2713,"indexExpression":{"id":2712,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"13422:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13397:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2718,"nodeType":"IfStatement","src":"13392:70:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2715,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"13444:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13444:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2717,"nodeType":"RevertStatement","src":"13437:25:15"}},{"assignments":[2720],"declarations":[{"constant":false,"id":2720,"mutability":"mutable","name":"expectedPrice","nameLocation":"13481:13:15","nodeType":"VariableDeclaration","scope":2827,"src":"13473:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"13473:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2721,"nodeType":"VariableDeclarationStatement","src":"13473:21:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2722,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"13508:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13532:1:15","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":2724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13524:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2723,"name":"address","nodeType":"ElementaryTypeName","src":"13524:7:15","typeDescriptions":{}}},"id":2726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13524:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13508:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2806,"nodeType":"Block","src":"13993:509:15","statements":[{"expression":{"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2770,"name":"expectedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"14042:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2771,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"14058:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14067:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"14058:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2774,"indexExpression":{"id":2773,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"14082:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14058:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14093:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"14058:46:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2777,"indexExpression":{"id":2776,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"14122:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14058:90:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14042:106:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2779,"nodeType":"ExpressionStatement","src":"14042:106:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2780,"name":"expectedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"14166:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2781,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"14183:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14166:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2786,"nodeType":"IfStatement","src":"14162:57:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2783,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"14198:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14198:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2785,"nodeType":"RevertStatement","src":"14191:28:15"}},{"assignments":[2788],"declarations":[{"constant":false,"id":2788,"mutability":"mutable","name":"success","nameLocation":"14296:7:15","nodeType":"VariableDeclaration","scope":2806,"src":"14291:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2787,"name":"bool","nodeType":"ElementaryTypeName","src":"14291:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2799,"initialValue":{"arguments":[{"expression":{"id":2793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14357:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14361:6:15","memberName":"sender","nodeType":"MemberAccess","src":"14357:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2795,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"14385:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14394:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"14385:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2797,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"14420:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2790,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"14313:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2789,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"14306:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1124_$","typeString":"type(contract IERC20)"}},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14306:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1124","typeString":"contract IERC20"}},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14327:12:15","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1123,"src":"14306:33:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14306:134:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"14291:149:15"},{"condition":{"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14458:8:15","subExpression":{"id":2800,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"14459:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2805,"nodeType":"IfStatement","src":"14454:37:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2802,"name":"TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"14475:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14475:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2804,"nodeType":"RevertStatement","src":"14468:23:15"}}]},"id":2807,"nodeType":"IfStatement","src":"13504:998:15","trueBody":{"id":2769,"nodeType":"Block","src":"13536:451:15","statements":[{"expression":{"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"expectedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"13586:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":2729,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"13602:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13611:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"13602:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2732,"indexExpression":{"id":2731,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"13626:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13602:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13637:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"13602:46:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13586:62:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2735,"nodeType":"ExpressionStatement","src":"13586:62:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2736,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13666:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13670:5:15","memberName":"value","nodeType":"MemberAccess","src":"13666:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2738,"name":"expectedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"13679:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13666:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2743,"nodeType":"IfStatement","src":"13662:60:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2740,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"13701:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13701:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2742,"nodeType":"RevertStatement","src":"13694:28:15"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2744,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"13740:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2745,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13750:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13754:5:15","memberName":"value","nodeType":"MemberAccess","src":"13750:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13740:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2751,"nodeType":"IfStatement","src":"13736:53:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2748,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"13768:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13768:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2750,"nodeType":"RevertStatement","src":"13761:28:15"}},{"assignments":[2753,null],"declarations":[{"constant":false,"id":2753,"mutability":"mutable","name":"success","nameLocation":"13868:7:15","nodeType":"VariableDeclaration","scope":2769,"src":"13863:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2752,"name":"bool","nodeType":"ElementaryTypeName","src":"13863:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2762,"initialValue":{"arguments":[{"hexValue":"","id":2760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13922: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":{"expression":{"id":2754,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"13881:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13890:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"13881:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13899:4:15","memberName":"call","nodeType":"MemberAccess","src":"13881:22: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":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":2757,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13911:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13915:5:15","memberName":"value","nodeType":"MemberAccess","src":"13911:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"13881:40: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":2761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13881:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"13862:63:15"},{"condition":{"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13943:8:15","subExpression":{"id":2763,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"13944:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2768,"nodeType":"IfStatement","src":"13939:37:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2765,"name":"TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"13960:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13960:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2767,"nodeType":"RevertStatement","src":"13953:23:15"}}]}},{"expression":{"arguments":[{"expression":{"id":2809,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14568:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14572:6:15","memberName":"sender","nodeType":"MemberAccess","src":"14568:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2811,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"14580:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2808,"name":"_updateViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"14546:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14546:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2813,"nodeType":"ExpressionStatement","src":"14546:44:15"},{"eventCall":{"arguments":[{"expression":{"id":2815,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14684:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14688:6:15","memberName":"sender","nodeType":"MemberAccess","src":"14684:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2817,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"14708:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2818,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"14731:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2819,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"14757:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"id":2820,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"14777:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14786:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"14777:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2823,"indexExpression":{"id":2822,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"14801:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14777:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14812:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"14777:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"ContentPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3859,"src":"14654:16:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256,uint256)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14654:177:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2826,"nodeType":"EmitStatement","src":"14649:182:15"}]},"documentation":{"id":2694,"nodeType":"StructuredDocumentation","src":"12972:225:15","text":" @dev Purchase content with token (address(0) for native token)\n @param contentId Content ID\n @param paymentToken Payment token address (address(0) for native)\n @param amount Payment amount"},"functionSelector":"b6f1d140","id":2828,"implemented":true,"kind":"function","modifiers":[{"id":2703,"kind":"modifierInvocation","modifierName":{"id":2702,"name":"nonReentrant","nameLocations":["13331:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"13331:12:15"},"nodeType":"ModifierInvocation","src":"13331:12:15"},{"id":2705,"kind":"modifierInvocation","modifierName":{"id":2704,"name":"whenNotPaused","nameLocations":["13344:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":1725,"src":"13344:13:15"},"nodeType":"ModifierInvocation","src":"13344:13:15"},{"arguments":[{"id":2707,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"13371:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2708,"kind":"modifierInvocation","modifierName":{"id":2706,"name":"validContent","nameLocations":["13358:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":1741,"src":"13358:12:15"},"nodeType":"ModifierInvocation","src":"13358:23:15"}],"name":"purchaseContent","nameLocation":"13211:15:15","nodeType":"FunctionDefinition","parameters":{"id":2701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"contentId","nameLocation":"13244:9:15","nodeType":"VariableDeclaration","scope":2828,"src":"13236:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"13236:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"paymentToken","nameLocation":"13271:12:15","nodeType":"VariableDeclaration","scope":2828,"src":"13263:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2697,"name":"address","nodeType":"ElementaryTypeName","src":"13263:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2700,"mutability":"mutable","name":"amount","nameLocation":"13301:6:15","nodeType":"VariableDeclaration","scope":2828,"src":"13293:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2699,"name":"uint256","nodeType":"ElementaryTypeName","src":"13293:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13226:87:15"},"returnParameters":{"id":2709,"nodeType":"ParameterList","parameters":[],"src":"13382:0:15"},"scope":3806,"src":"13202:1636:15","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4073],"body":{"id":3001,"nodeType":"Block","src":"15267:1609:15","statements":[{"condition":{"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15281:39:15","subExpression":{"baseExpression":{"expression":{"id":2843,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"15282:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15291:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"15282:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2846,"indexExpression":{"id":2845,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"15307:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15282:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2851,"nodeType":"IfStatement","src":"15277:70:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2848,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"15329:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15329:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2850,"nodeType":"RevertStatement","src":"15322:25:15"}},{"assignments":[2853],"declarations":[{"constant":false,"id":2853,"mutability":"mutable","name":"expectedTotal","nameLocation":"15366:13:15","nodeType":"VariableDeclaration","scope":3001,"src":"15358:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2852,"name":"uint256","nodeType":"ElementaryTypeName","src":"15358:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2855,"initialValue":{"hexValue":"30","id":2854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15382:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15358:25:15"},{"body":{"id":2910,"nodeType":"Block","src":"15441:468:15","statements":[{"condition":{"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15459:48:15","subExpression":{"expression":{"baseExpression":{"expression":{"id":2867,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"15460:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15469:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"15460:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2872,"indexExpression":{"baseExpression":{"id":2869,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"15484:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2871,"indexExpression":{"id":2870,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"15495:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15484:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15460:38:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15499:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"15460:47:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2878,"nodeType":"IfStatement","src":"15455:93:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2875,"name":"InvalidContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"15532:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15532:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2877,"nodeType":"RevertStatement","src":"15525:23:15"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2879,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"15567:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15591:1:15","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":2881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15583:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2880,"name":"address","nodeType":"ElementaryTypeName","src":"15583:7:15","typeDescriptions":{}}},"id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15583:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15567:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2908,"nodeType":"Block","src":"15743:156:15","statements":[{"expression":{"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2896,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"15761:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2897,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"15778:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15808:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"15778:44:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2902,"indexExpression":{"baseExpression":{"id":2899,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"15823:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2901,"indexExpression":{"id":2900,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"15834:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15823:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15778:59:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15859:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"15778:92:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2905,"indexExpression":{"id":2904,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"15871:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15778:106:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15761:123:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2907,"nodeType":"ExpressionStatement","src":"15761:123:15"}]},"id":2909,"nodeType":"IfStatement","src":"15563:336:15","trueBody":{"id":2895,"nodeType":"Block","src":"15595:142:15","statements":[{"expression":{"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2885,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"15613:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":2886,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"15630:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15660:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"15630:44:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2891,"indexExpression":{"baseExpression":{"id":2888,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"15675:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2890,"indexExpression":{"id":2889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"15686:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15675:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15630:59:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15711:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"15630:92:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15613:109:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2894,"nodeType":"ExpressionStatement","src":"15613:109:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"15413:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2861,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"15417:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15428:6:15","memberName":"length","nodeType":"MemberAccess","src":"15417:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15413:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2911,"initializationExpression":{"assignments":[2857],"declarations":[{"constant":false,"id":2857,"mutability":"mutable","name":"i","nameLocation":"15406:1:15","nodeType":"VariableDeclaration","scope":2911,"src":"15398:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2856,"name":"uint256","nodeType":"ElementaryTypeName","src":"15398:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2859,"initialValue":{"hexValue":"30","id":2858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15410:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15398:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15436:3:15","subExpression":{"id":2864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"15436:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2866,"nodeType":"ExpressionStatement","src":"15436:3:15"},"nodeType":"ForStatement","src":"15393:516:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2912,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"15923:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2913,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"15938:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15923:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2918,"nodeType":"IfStatement","src":"15919:62:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2915,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"15960:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15960:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2917,"nodeType":"RevertStatement","src":"15953:28:15"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2919,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"15996:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16020:1:15","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":2921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16012:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2920,"name":"address","nodeType":"ElementaryTypeName","src":"16012:7:15","typeDescriptions":{}}},"id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16012:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15996:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2970,"nodeType":"Block","src":"16336:265:15","statements":[{"assignments":[2952],"declarations":[{"constant":false,"id":2952,"mutability":"mutable","name":"success","nameLocation":"16390:7:15","nodeType":"VariableDeclaration","scope":2970,"src":"16385:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2951,"name":"bool","nodeType":"ElementaryTypeName","src":"16385:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2963,"initialValue":{"arguments":[{"expression":{"id":2957,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16451:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16455:6:15","memberName":"sender","nodeType":"MemberAccess","src":"16451:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2959,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"16479:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16488:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"16479:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2961,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"16514:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2954,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"16407:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2953,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"16400:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1124_$","typeString":"type(contract IERC20)"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16400:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1124","typeString":"contract IERC20"}},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16421:12:15","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1123,"src":"16400:33:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16400:139:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"16385:154:15"},{"condition":{"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16557:8:15","subExpression":{"id":2964,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"16558:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2969,"nodeType":"IfStatement","src":"16553:37:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2966,"name":"TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"16574:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16574:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2968,"nodeType":"RevertStatement","src":"16567:23:15"}}]},"id":2971,"nodeType":"IfStatement","src":"15992:609:15","trueBody":{"id":2950,"nodeType":"Block","src":"16024:306:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2925,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16078:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16082:5:15","memberName":"value","nodeType":"MemberAccess","src":"16078:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2927,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"16091:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16078:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2932,"nodeType":"IfStatement","src":"16074:58:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2929,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"16111:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2931,"nodeType":"RevertStatement","src":"16104:28:15"}},{"assignments":[2934,null],"declarations":[{"constant":false,"id":2934,"mutability":"mutable","name":"success","nameLocation":"16211:7:15","nodeType":"VariableDeclaration","scope":2950,"src":"16206:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2933,"name":"bool","nodeType":"ElementaryTypeName","src":"16206:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2943,"initialValue":{"arguments":[{"hexValue":"","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16265: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":{"expression":{"id":2935,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"16224:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16233:8:15","memberName":"treasury","nodeType":"MemberAccess","referencedDeclaration":4220,"src":"16224:17:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16242:4:15","memberName":"call","nodeType":"MemberAccess","src":"16224:22: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":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":2938,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16254:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16258:5:15","memberName":"value","nodeType":"MemberAccess","src":"16254:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"16224:40: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":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16224:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"16205:63:15"},{"condition":{"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16286:8:15","subExpression":{"id":2944,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"16287:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2949,"nodeType":"IfStatement","src":"16282:37:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2946,"name":"TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"16303:14:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16303:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2948,"nodeType":"RevertStatement","src":"16296:23:15"}}]}},{"body":{"id":2991,"nodeType":"Block","src":"16694:73:15","statements":[{"expression":{"arguments":[{"expression":{"id":2984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16730:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16734:6:15","memberName":"sender","nodeType":"MemberAccess","src":"16730:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2986,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"16742:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2988,"indexExpression":{"id":2987,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"16753:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16742:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2983,"name":"_updateViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"16708:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16708:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2990,"nodeType":"ExpressionStatement","src":"16708:48:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"16666:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2977,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"16670:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16681:6:15","memberName":"length","nodeType":"MemberAccess","src":"16670:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16666:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2992,"initializationExpression":{"assignments":[2973],"declarations":[{"constant":false,"id":2973,"mutability":"mutable","name":"i","nameLocation":"16659:1:15","nodeType":"VariableDeclaration","scope":2992,"src":"16651:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2972,"name":"uint256","nodeType":"ElementaryTypeName","src":"16651:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2975,"initialValue":{"hexValue":"30","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16663:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16651:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16689:3:15","subExpression":{"id":2980,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"16689:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2982,"nodeType":"ExpressionStatement","src":"16689:3:15"},"nodeType":"ForStatement","src":"16646:121:15"},{"eventCall":{"arguments":[{"expression":{"id":2994,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16819:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16823:6:15","memberName":"sender","nodeType":"MemberAccess","src":"16819:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2996,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"16831:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2997,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"16843:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2998,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"16857:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2993,"name":"BatchPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"16804:14:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256[] memory,address,uint256)"}},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16804:65:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3000,"nodeType":"EmitStatement","src":"16799:70:15"}]},"documentation":{"id":2829,"nodeType":"StructuredDocumentation","src":"14844:249:15","text":" @dev Batch purchase content with token (address(0) for native token)\n @param contentIds Content ID array\n @param paymentToken Payment token address (address(0) for native)\n @param totalAmount Total payment amount"},"functionSelector":"99ea24fe","id":3002,"implemented":true,"kind":"function","modifiers":[{"id":2839,"kind":"modifierInvocation","modifierName":{"id":2838,"name":"nonReentrant","nameLocations":["15240:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"15240:12:15"},"nodeType":"ModifierInvocation","src":"15240:12:15"},{"id":2841,"kind":"modifierInvocation","modifierName":{"id":2840,"name":"whenNotPaused","nameLocations":["15253:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":1725,"src":"15253:13:15"},"nodeType":"ModifierInvocation","src":"15253:13:15"}],"name":"batchPurchase","nameLocation":"15107:13:15","nodeType":"FunctionDefinition","parameters":{"id":2837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2832,"mutability":"mutable","name":"contentIds","nameLocation":"15147:10:15","nodeType":"VariableDeclaration","scope":3002,"src":"15130:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2830,"name":"uint256","nodeType":"ElementaryTypeName","src":"15130:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2831,"nodeType":"ArrayTypeName","src":"15130:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2834,"mutability":"mutable","name":"paymentToken","nameLocation":"15175:12:15","nodeType":"VariableDeclaration","scope":3002,"src":"15167:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2833,"name":"address","nodeType":"ElementaryTypeName","src":"15167:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2836,"mutability":"mutable","name":"totalAmount","nameLocation":"15205:11:15","nodeType":"VariableDeclaration","scope":3002,"src":"15197:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2835,"name":"uint256","nodeType":"ElementaryTypeName","src":"15197:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15120:102:15"},"returnParameters":{"id":2842,"nodeType":"ParameterList","parameters":[],"src":"15267:0:15"},"scope":3806,"src":"15098:1778:15","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4082],"body":{"id":3059,"nodeType":"Block","src":"17225:474:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3023,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3009,"src":"17299:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3020,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"17278:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3019,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"17270:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1241_$","typeString":"type(contract IERC721)"}},"id":3021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17270:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1241","typeString":"contract IERC721"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17291:7:15","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1174,"src":"17270:28:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17270:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17311:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17315:6:15","memberName":"sender","nodeType":"MemberAccess","src":"17311:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17270:51:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3031,"nodeType":"IfStatement","src":"17266:95:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3028,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"17342:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17342:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3030,"nodeType":"RevertStatement","src":"17335:26:15"}},{"expression":{"arguments":[{"expression":{"id":3036,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17473:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17477:6:15","memberName":"sender","nodeType":"MemberAccess","src":"17473:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3040,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17493:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_VideoPayment_$3806","typeString":"contract VideoPayment"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VideoPayment_$3806","typeString":"contract VideoPayment"}],"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17485:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3038,"name":"address","nodeType":"ElementaryTypeName","src":"17485:7:15","typeDescriptions":{}}},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17485:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3042,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3009,"src":"17500:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3033,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"17447:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3032,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"17439:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1241_$","typeString":"type(contract IERC721)"}},"id":3034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17439:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1241","typeString":"contract IERC721"}},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17460:12:15","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1206,"src":"17439:33:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":3043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17439:69:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3044,"nodeType":"ExpressionStatement","src":"17439:69:15"},{"expression":{"arguments":[{"expression":{"id":3046,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17575:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17579:6:15","memberName":"sender","nodeType":"MemberAccess","src":"17575:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3048,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"17587:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3045,"name":"_updateViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"17553:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17553:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3050,"nodeType":"ExpressionStatement","src":"17553:44:15"},{"eventCall":{"arguments":[{"expression":{"id":3052,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17648:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17652:6:15","memberName":"sender","nodeType":"MemberAccess","src":"17648:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3054,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"17660:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3055,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"17671:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3056,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3009,"src":"17684:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3051,"name":"NFTPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"17635:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256)"}},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17635:57:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3058,"nodeType":"EmitStatement","src":"17630:62:15"}]},"documentation":{"id":3003,"nodeType":"StructuredDocumentation","src":"16882:166:15","text":" @dev Purchase content with NFT\n @param contentId Content ID\n @param nftContract NFT contract address\n @param tokenId NFT token ID"},"functionSelector":"86778641","id":3060,"implemented":true,"kind":"function","modifiers":[{"id":3012,"kind":"modifierInvocation","modifierName":{"id":3011,"name":"nonReentrant","nameLocations":["17174:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"17174:12:15"},"nodeType":"ModifierInvocation","src":"17174:12:15"},{"id":3014,"kind":"modifierInvocation","modifierName":{"id":3013,"name":"whenNotPaused","nameLocations":["17187:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":1725,"src":"17187:13:15"},"nodeType":"ModifierInvocation","src":"17187:13:15"},{"arguments":[{"id":3016,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"17214:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3017,"kind":"modifierInvocation","modifierName":{"id":3015,"name":"validContent","nameLocations":["17201:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":1741,"src":"17201:12:15"},"nodeType":"ModifierInvocation","src":"17201:23:15"}],"name":"purchaseWithNFT","nameLocation":"17062:15:15","nodeType":"FunctionDefinition","parameters":{"id":3010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3005,"mutability":"mutable","name":"contentId","nameLocation":"17095:9:15","nodeType":"VariableDeclaration","scope":3060,"src":"17087:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3004,"name":"uint256","nodeType":"ElementaryTypeName","src":"17087:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"nftContract","nameLocation":"17122:11:15","nodeType":"VariableDeclaration","scope":3060,"src":"17114:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3006,"name":"address","nodeType":"ElementaryTypeName","src":"17114:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3009,"mutability":"mutable","name":"tokenId","nameLocation":"17151:7:15","nodeType":"VariableDeclaration","scope":3060,"src":"17143:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3008,"name":"uint256","nodeType":"ElementaryTypeName","src":"17143:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17077:87:15"},"returnParameters":{"id":3018,"nodeType":"ParameterList","parameters":[],"src":"17225:0:15"},"scope":3806,"src":"17053:646:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3156,"nodeType":"Block","src":"17917:1419:15","statements":[{"assignments":[3072],"declarations":[{"constant":false,"id":3072,"mutability":"mutable","name":"existing","nameLocation":"17970:8:15","nodeType":"VariableDeclaration","scope":3156,"src":"17927:51:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3071,"nodeType":"UserDefinedTypeName","pathNode":{"id":3070,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["17927:19:15","17947:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"17927:34:15"},"referencedDeclaration":4181,"src":"17927:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3079,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3073,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"17981:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18003:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"17981:37:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3076,"indexExpression":{"id":3075,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"18019:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17981:43:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3078,"indexExpression":{"id":3077,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"18025:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17981:54:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17927:108:15"},{"assignments":[3081],"declarations":[{"constant":false,"id":3081,"mutability":"mutable","name":"viewCount","nameLocation":"18053:9:15","nodeType":"VariableDeclaration","scope":3156,"src":"18045:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3080,"name":"uint256","nodeType":"ElementaryTypeName","src":"18045:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3087,"initialValue":{"expression":{"baseExpression":{"expression":{"id":3082,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"18065:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18074:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"18065:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3085,"indexExpression":{"id":3084,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"18089:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18065:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18100:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"18065:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18045:64:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3088,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"18124:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18137:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18124:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3154,"nodeType":"Block","src":"18661:669:15","statements":[{"condition":{"expression":{"id":3116,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18742:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18751:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"18742:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3152,"nodeType":"Block","src":"19100:220:15","statements":[{"expression":{"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3133,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"19172:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19181:12:15","memberName":"purchaseTime","nodeType":"MemberAccess","referencedDeclaration":4176,"src":"19172:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3136,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19196:5:15","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19202:9:15","memberName":"timestamp","nodeType":"MemberAccess","src":"19196:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19172:39:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3139,"nodeType":"ExpressionStatement","src":"19172:39:15"},{"expression":{"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3140,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"19229:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19238:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"19229:23:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3143,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"19255:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19229:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3145,"nodeType":"ExpressionStatement","src":"19229:35:15"},{"expression":{"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3146,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"19282:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19291:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"19282:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19301:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19282:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3151,"nodeType":"ExpressionStatement","src":"19282:23:15"}]},"id":3153,"nodeType":"IfStatement","src":"18738:582:15","trueBody":{"id":3132,"nodeType":"Block","src":"18760:334:15","statements":[{"expression":{"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3118,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18855:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18864:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"18855:23:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3121,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"18882:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18855:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3123,"nodeType":"ExpressionStatement","src":"18855:36:15"},{"eventCall":{"arguments":[{"id":3125,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"18950:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3126,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"18976:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3127,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"19007:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3128,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"19038:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19047:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"19038:23:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3124,"name":"ViewCountAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3904,"src":"18914:14:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18914:165:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3131,"nodeType":"EmitStatement","src":"18909:170:15"}]}}]},"id":3155,"nodeType":"IfStatement","src":"18120:1210:15","trueBody":{"id":3115,"nodeType":"Block","src":"18140:515:15","statements":[{"condition":{"expression":{"id":3091,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18219:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18228:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"18219:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3095,"nodeType":"IfStatement","src":"18215:219:15","trueBody":{"id":3094,"nodeType":"Block","src":"18237:197:15","statements":[{"functionReturnParameters":3067,"id":3093,"nodeType":"Return","src":"18413:7:15"}]}},{"expression":{"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3096,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18506:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18515:12:15","memberName":"purchaseTime","nodeType":"MemberAccess","referencedDeclaration":4176,"src":"18506:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3099,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18530:5:15","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18536:9:15","memberName":"timestamp","nodeType":"MemberAccess","src":"18530:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18506:39:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3102,"nodeType":"ExpressionStatement","src":"18506:39:15"},{"expression":{"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3103,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18559:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18568:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"18559:23:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18585:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18559:27:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3108,"nodeType":"ExpressionStatement","src":"18559:27:15"},{"expression":{"id":3113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3109,"name":"existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"18621:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18630:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"18621:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18640:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18621:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3114,"nodeType":"ExpressionStatement","src":"18621:23:15"}]}}]},"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"17705:134:15","text":" @dev Internal function to update view permission\n @param user User address\n @param contentId Content ID"},"id":3157,"implemented":true,"kind":"function","modifiers":[],"name":"_updateViewPermission","nameLocation":"17853:21:15","nodeType":"FunctionDefinition","parameters":{"id":3066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"user","nameLocation":"17883:4:15","nodeType":"VariableDeclaration","scope":3157,"src":"17875:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3062,"name":"address","nodeType":"ElementaryTypeName","src":"17875:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3065,"mutability":"mutable","name":"contentId","nameLocation":"17897:9:15","nodeType":"VariableDeclaration","scope":3157,"src":"17889:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3064,"name":"uint256","nodeType":"ElementaryTypeName","src":"17889:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17874:33:15"},"returnParameters":{"id":3067,"nodeType":"ParameterList","parameters":[],"src":"17917:0:15"},"scope":3806,"src":"17844:1492:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4091],"body":{"id":3207,"nodeType":"Block","src":"19705:594:15","statements":[{"assignments":[3171],"declarations":[{"constant":false,"id":3171,"mutability":"mutable","name":"permission","nameLocation":"19757:10:15","nodeType":"VariableDeclaration","scope":3207,"src":"19715:52:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3170,"nodeType":"UserDefinedTypeName","pathNode":{"id":3169,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["19715:19:15","19735:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"19715:34:15"},"referencedDeclaration":4181,"src":"19715:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3178,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3172,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"19770:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19792:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"19770:37:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3175,"indexExpression":{"id":3174,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"19808:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19770:43:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3177,"indexExpression":{"id":3176,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"19814:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19770:54:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19715:109:15"},{"condition":{"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19839:19:15","subExpression":{"expression":{"id":3179,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"19840:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19851:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"19840:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3185,"nodeType":"IfStatement","src":"19835:62:15","trueBody":{"id":3184,"nodeType":"Block","src":"19860:37:15","statements":[{"expression":{"hexValue":"66616c7365","id":3182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19881:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3166,"id":3183,"nodeType":"Return","src":"19874:12:15"}]}},{"assignments":[3187],"declarations":[{"constant":false,"id":3187,"mutability":"mutable","name":"viewCount","nameLocation":"19967:9:15","nodeType":"VariableDeclaration","scope":3207,"src":"19959:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3186,"name":"uint256","nodeType":"ElementaryTypeName","src":"19959:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3193,"initialValue":{"expression":{"baseExpression":{"expression":{"id":3188,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"19979:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19988:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"19979:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3191,"indexExpression":{"id":3190,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"20003:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19979:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20014:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"19979:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19959:64:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3194,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"20038:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20051:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20038:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3205,"nodeType":"Block","src":"20164:129:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3200,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"20253:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20264:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"20253:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20281:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20253:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3166,"id":3204,"nodeType":"Return","src":"20246:36:15"}]},"id":3206,"nodeType":"IfStatement","src":"20034:259:15","trueBody":{"id":3199,"nodeType":"Block","src":"20054:104:15","statements":[{"expression":{"hexValue":"74727565","id":3197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20143:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3166,"id":3198,"nodeType":"Return","src":"20136:11:15"}]}}]},"documentation":{"id":3158,"nodeType":"StructuredDocumentation","src":"19410:179:15","text":" @dev Check if user has valid view permission\n @param user User address\n @param contentId Content ID\n @return Whether user has valid permission"},"functionSelector":"caae24b3","id":3208,"implemented":true,"kind":"function","modifiers":[],"name":"hasViewPermission","nameLocation":"19603:17:15","nodeType":"FunctionDefinition","parameters":{"id":3163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3160,"mutability":"mutable","name":"user","nameLocation":"19638:4:15","nodeType":"VariableDeclaration","scope":3208,"src":"19630:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3159,"name":"address","nodeType":"ElementaryTypeName","src":"19630:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3162,"mutability":"mutable","name":"contentId","nameLocation":"19660:9:15","nodeType":"VariableDeclaration","scope":3208,"src":"19652:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3161,"name":"uint256","nodeType":"ElementaryTypeName","src":"19652:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19620:55:15"},"returnParameters":{"id":3166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3208,"src":"19699:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3164,"name":"bool","nodeType":"ElementaryTypeName","src":"19699:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19698:6:15"},"scope":3806,"src":"19594:705:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4103],"body":{"id":3263,"nodeType":"Block","src":"20643:350:15","statements":[{"assignments":[3226],"declarations":[{"constant":false,"id":3226,"mutability":"mutable","name":"permissions","nameLocation":"20709:11:15","nodeType":"VariableDeclaration","scope":3263,"src":"20653:67:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":3224,"nodeType":"UserDefinedTypeName","pathNode":{"id":3223,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["20653:19:15","20673:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"20653:34:15"},"referencedDeclaration":4181,"src":"20653:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3225,"nodeType":"ArrayTypeName","src":"20653:36:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"id":3234,"initialValue":{"arguments":[{"expression":{"id":3231,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"20781:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20792:6:15","memberName":"length","nodeType":"MemberAccess","src":"20781:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20723:40:15","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct VideoPaymentStorage.ViewPermission memory[] memory)"},"typeName":{"baseType":{"id":3228,"nodeType":"UserDefinedTypeName","pathNode":{"id":3227,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["20727:19:15","20747:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"20727:34:15"},"referencedDeclaration":4181,"src":"20727:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3229,"nodeType":"ArrayTypeName","src":"20727:36:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}}},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20723:89:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"20653:159:15"},{"body":{"id":3259,"nodeType":"Block","src":"20871:87:15","statements":[{"expression":{"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3246,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3226,"src":"20885:11:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"id":3248,"indexExpression":{"id":3247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"20897:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20885:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":3249,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"20902:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20911:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"20902:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3252,"indexExpression":{"id":3251,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3211,"src":"20927:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20902:30:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3256,"indexExpression":{"baseExpression":{"id":3253,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"20933:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3255,"indexExpression":{"id":3254,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"20944:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20933:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20902:45:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"src":"20885:62:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3258,"nodeType":"ExpressionStatement","src":"20885:62:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"20843:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3240,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"20847:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20858:6:15","memberName":"length","nodeType":"MemberAccess","src":"20847:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20843:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3260,"initializationExpression":{"assignments":[3236],"declarations":[{"constant":false,"id":3236,"mutability":"mutable","name":"i","nameLocation":"20836:1:15","nodeType":"VariableDeclaration","scope":3260,"src":"20828:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3235,"name":"uint256","nodeType":"ElementaryTypeName","src":"20828:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3238,"initialValue":{"hexValue":"30","id":3237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20840:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20828:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20866:3:15","subExpression":{"id":3243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"20866:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3245,"nodeType":"ExpressionStatement","src":"20866:3:15"},"nodeType":"ForStatement","src":"20823:135:15"},{"expression":{"id":3261,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3226,"src":"20975:11:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"functionReturnParameters":3220,"id":3262,"nodeType":"Return","src":"20968:18:15"}]},"documentation":{"id":3209,"nodeType":"StructuredDocumentation","src":"20305:172:15","text":" @dev Get user permissions for multiple contents\n @param user User address\n @param contentIds Content ID array\n @return Permission array"},"functionSelector":"b303f53f","id":3264,"implemented":true,"kind":"function","modifiers":[],"name":"getUserPermissions","nameLocation":"20491:18:15","nodeType":"FunctionDefinition","parameters":{"id":3215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3211,"mutability":"mutable","name":"user","nameLocation":"20527:4:15","nodeType":"VariableDeclaration","scope":3264,"src":"20519:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3210,"name":"address","nodeType":"ElementaryTypeName","src":"20519:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3214,"mutability":"mutable","name":"contentIds","nameLocation":"20558:10:15","nodeType":"VariableDeclaration","scope":3264,"src":"20541:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3212,"name":"uint256","nodeType":"ElementaryTypeName","src":"20541:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3213,"nodeType":"ArrayTypeName","src":"20541:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"20509:65:15"},"returnParameters":{"id":3220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3219,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3264,"src":"20598:43:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":3217,"nodeType":"UserDefinedTypeName","pathNode":{"id":3216,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["20598:19:15","20618:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"20598:34:15"},"referencedDeclaration":4181,"src":"20598:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3218,"nodeType":"ArrayTypeName","src":"20598:36:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"src":"20597:45:15"},"scope":3806,"src":"20482:511:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4113],"body":{"id":3282,"nodeType":"Block","src":"21308:65:15","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":3275,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"21325:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21334:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"21325:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3278,"indexExpression":{"id":3277,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3267,"src":"21350:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21325:30:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3280,"indexExpression":{"id":3279,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3269,"src":"21356:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21325:41:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"functionReturnParameters":3274,"id":3281,"nodeType":"Return","src":"21318:48:15"}]},"documentation":{"id":3265,"nodeType":"StructuredDocumentation","src":"20999:153:15","text":" @dev Get detailed permission info\n @param user User address\n @param contentId Content ID\n @return Permission details"},"functionSelector":"8d13660e","id":3283,"implemented":true,"kind":"function","modifiers":[],"name":"getPermissionDetails","nameLocation":"21166:20:15","nodeType":"FunctionDefinition","parameters":{"id":3270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3267,"mutability":"mutable","name":"user","nameLocation":"21204:4:15","nodeType":"VariableDeclaration","scope":3283,"src":"21196:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3266,"name":"address","nodeType":"ElementaryTypeName","src":"21196:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3269,"mutability":"mutable","name":"contentId","nameLocation":"21226:9:15","nodeType":"VariableDeclaration","scope":3283,"src":"21218:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3268,"name":"uint256","nodeType":"ElementaryTypeName","src":"21218:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21186:55:15"},"returnParameters":{"id":3274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3273,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3283,"src":"21265:41:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3272,"nodeType":"UserDefinedTypeName","pathNode":{"id":3271,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["21265:19:15","21285:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"21265:34:15"},"referencedDeclaration":4181,"src":"21265:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"src":"21264:43:15"},"scope":3806,"src":"21157:216:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4122],"body":{"id":3377,"nodeType":"Block","src":"21640:1162:15","statements":[{"assignments":[3299],"declarations":[{"constant":false,"id":3299,"mutability":"mutable","name":"permission","nameLocation":"21693:10:15","nodeType":"VariableDeclaration","scope":3377,"src":"21650:53:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3298,"nodeType":"UserDefinedTypeName","pathNode":{"id":3297,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["21650:19:15","21670:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"21650:34:15"},"referencedDeclaration":4181,"src":"21650:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3306,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3300,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"21706:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21728:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"21706:37:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3303,"indexExpression":{"id":3302,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"21744:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21706:43:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3305,"indexExpression":{"id":3304,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"21750:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21706:54:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"21650:110:15"},{"condition":{"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21775:19:15","subExpression":{"expression":{"id":3307,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"21776:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21787:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"21776:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3314,"nodeType":"IfStatement","src":"21771:76:15","trueBody":{"id":3313,"nodeType":"Block","src":"21796:51:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3310,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"21817:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21817:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3312,"nodeType":"RevertStatement","src":"21810:26:15"}]}},{"assignments":[3316],"declarations":[{"constant":false,"id":3316,"mutability":"mutable","name":"viewCount","nameLocation":"21940:9:15","nodeType":"VariableDeclaration","scope":3377,"src":"21932:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3315,"name":"uint256","nodeType":"ElementaryTypeName","src":"21932:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3322,"initialValue":{"expression":{"baseExpression":{"expression":{"id":3317,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"21952:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3318,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21961:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"21952:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3320,"indexExpression":{"id":3319,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"21976:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21952:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21987:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"21952:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21932:64:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3323,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3316,"src":"22011:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22024:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22011:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3375,"nodeType":"Block","src":"22219:577:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3335,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"22300:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22311:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"22300:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22329:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22300:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3343,"nodeType":"IfStatement","src":"22296:95:15","trueBody":{"id":3342,"nodeType":"Block","src":"22332:59:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3339,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"22357:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22357:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3341,"nodeType":"RevertStatement","src":"22350:26:15"}]}},{"expression":{"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"22437:27:15","subExpression":{"expression":{"id":3344,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"22437:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22448:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"22437:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3348,"nodeType":"ExpressionStatement","src":"22437:27:15"},{"eventCall":{"arguments":[{"id":3350,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"22497:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3351,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"22503:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3352,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"22514:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22525:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"22514:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3349,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"22484:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22484:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3355,"nodeType":"EmitStatement","src":"22479:61:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3356,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"22612:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22623:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"22612:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22641:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22612:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3372,"nodeType":"IfStatement","src":"22608:152:15","trueBody":{"id":3371,"nodeType":"Block","src":"22644:116:15","statements":[{"expression":{"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3360,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"22662:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22673:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"22662:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22683:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"22662:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3365,"nodeType":"ExpressionStatement","src":"22662:26:15"},{"eventCall":{"arguments":[{"id":3367,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"22729:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3368,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"22735:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3366,"name":"PermissionExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"22711:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22711:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3370,"nodeType":"EmitStatement","src":"22706:39:15"}]}},{"expression":{"hexValue":"74727565","id":3373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22781:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3294,"id":3374,"nodeType":"Return","src":"22774:11:15"}]},"id":3376,"nodeType":"IfStatement","src":"22007:789:15","trueBody":{"id":3334,"nodeType":"Block","src":"22027:186:15","statements":[{"eventCall":{"arguments":[{"id":3327,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3286,"src":"22133:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3328,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"22139:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":3329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22150:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3326,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"22120:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22120:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3331,"nodeType":"EmitStatement","src":"22115:37:15"},{"expression":{"hexValue":"74727565","id":3332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22198:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3294,"id":3333,"nodeType":"Return","src":"22191:11:15"}]}}]},"documentation":{"id":3284,"nodeType":"StructuredDocumentation","src":"21379:146:15","text":" @dev Consume one view for user\n @param user User address\n @param contentId Content ID\n @return Success status"},"functionSelector":"05059571","id":3378,"implemented":true,"kind":"function","modifiers":[{"id":3291,"kind":"modifierInvocation","modifierName":{"id":3290,"name":"onlyAdmin","nameLocations":["21615:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"21615:9:15"},"nodeType":"ModifierInvocation","src":"21615:9:15"}],"name":"consumeView","nameLocation":"21539:11:15","nodeType":"FunctionDefinition","parameters":{"id":3289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3286,"mutability":"mutable","name":"user","nameLocation":"21568:4:15","nodeType":"VariableDeclaration","scope":3378,"src":"21560:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3285,"name":"address","nodeType":"ElementaryTypeName","src":"21560:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3288,"mutability":"mutable","name":"contentId","nameLocation":"21590:9:15","nodeType":"VariableDeclaration","scope":3378,"src":"21582:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3287,"name":"uint256","nodeType":"ElementaryTypeName","src":"21582:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21550:55:15"},"returnParameters":{"id":3294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3378,"src":"21634:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3292,"name":"bool","nodeType":"ElementaryTypeName","src":"21634:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21633:6:15"},"scope":3806,"src":"21530:1272:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4134],"body":{"id":3545,"nodeType":"Block","src":"23136:1690:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3393,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"23150:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23156:6:15","memberName":"length","nodeType":"MemberAccess","src":"23150:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3395,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"23166:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23177:6:15","memberName":"length","nodeType":"MemberAccess","src":"23166:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23150:33:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3401,"nodeType":"IfStatement","src":"23146:67:15","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3398,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"23192:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23192:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3400,"nodeType":"RevertStatement","src":"23185:28:15"}},{"assignments":[3406],"declarations":[{"constant":false,"id":3406,"mutability":"mutable","name":"results","nameLocation":"23238:7:15","nodeType":"VariableDeclaration","scope":3545,"src":"23224:21:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3404,"name":"bool","nodeType":"ElementaryTypeName","src":"23224:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3405,"nodeType":"ArrayTypeName","src":"23224:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":3413,"initialValue":{"arguments":[{"expression":{"id":3410,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"23259:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23265:6:15","memberName":"length","nodeType":"MemberAccess","src":"23259:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23248:10:15","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":3407,"name":"bool","nodeType":"ElementaryTypeName","src":"23252:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3408,"nodeType":"ArrayTypeName","src":"23252:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":3412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23248:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"23224:48:15"},{"body":{"id":3541,"nodeType":"Block","src":"23326:1469:15","statements":[{"assignments":[3429],"declarations":[{"constant":false,"id":3429,"mutability":"mutable","name":"permission","nameLocation":"23383:10:15","nodeType":"VariableDeclaration","scope":3541,"src":"23340:53:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3428,"nodeType":"UserDefinedTypeName","pathNode":{"id":3427,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["23340:19:15","23360:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"23340:34:15"},"referencedDeclaration":4181,"src":"23340:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3440,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3430,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"23396:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23422:15:15","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"23396:41:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3435,"indexExpression":{"baseExpression":{"id":3432,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"23438:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3434,"indexExpression":{"id":3433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23444:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23438:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23396:51:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3439,"indexExpression":{"baseExpression":{"id":3436,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"23448:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3438,"indexExpression":{"id":3437,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23459:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23448:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23396:66:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"23340:122:15"},{"condition":{"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23481:19:15","subExpression":{"expression":{"id":3441,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"23482:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23493:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"23482:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3452,"nodeType":"IfStatement","src":"23477:102:15","trueBody":{"id":3451,"nodeType":"Block","src":"23502:77:15","statements":[{"expression":{"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3444,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"23520:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3446,"indexExpression":{"id":3445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23528:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23520:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23533:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"23520:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3449,"nodeType":"ExpressionStatement","src":"23520:18:15"},{"id":3450,"nodeType":"Continue","src":"23556:8:15"}]}},{"assignments":[3454],"declarations":[{"constant":false,"id":3454,"mutability":"mutable","name":"viewCount","nameLocation":"23680:9:15","nodeType":"VariableDeclaration","scope":3541,"src":"23672:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3453,"name":"uint256","nodeType":"ElementaryTypeName","src":"23672:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3462,"initialValue":{"expression":{"baseExpression":{"expression":{"id":3455,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"23692:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23718:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"23692:40:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3460,"indexExpression":{"baseExpression":{"id":3457,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"23733:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3459,"indexExpression":{"id":3458,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23744:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23733:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23692:55:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23765:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"23692:82:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23672:102:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3463,"name":"viewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3454,"src":"23793:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23806:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23793:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3539,"nodeType":"Block","src":"24031:754:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3483,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"24120:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24131:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"24120:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24149:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24120:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3495,"nodeType":"IfStatement","src":"24116:125:15","trueBody":{"id":3494,"nodeType":"Block","src":"24152:89:15","statements":[{"expression":{"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3487,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"24174:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3489,"indexExpression":{"id":3488,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24182:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24174:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24187:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"24174:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3492,"nodeType":"ExpressionStatement","src":"24174:18:15"},{"id":3493,"nodeType":"Continue","src":"24214:8:15"}]}},{"expression":{"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"24295:27:15","subExpression":{"expression":{"id":3496,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"24295:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"24306:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"24295:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3500,"nodeType":"ExpressionStatement","src":"24295:27:15"},{"eventCall":{"arguments":[{"baseExpression":{"id":3502,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"24379:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3504,"indexExpression":{"id":3503,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24385:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24379:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3505,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"24409:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3507,"indexExpression":{"id":3506,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24420:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24409:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3508,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"24444:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24455:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"24444:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3501,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"24345:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24345:142:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3511,"nodeType":"EmitStatement","src":"24340:147:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3512,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"24567:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3513,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24578:14:15","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4178,"src":"24567:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24596:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24567:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3532,"nodeType":"IfStatement","src":"24563:172:15","trueBody":{"id":3531,"nodeType":"Block","src":"24599:136:15","statements":[{"expression":{"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3516,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"24621:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"24632:7:15","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"24621:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24642:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"24621:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3521,"nodeType":"ExpressionStatement","src":"24621:26:15"},{"eventCall":{"arguments":[{"baseExpression":{"id":3523,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"24692:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3525,"indexExpression":{"id":3524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24698:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24692:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3526,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"24702:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3528,"indexExpression":{"id":3527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24713:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24702:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3522,"name":"PermissionExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"24674:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24674:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3530,"nodeType":"EmitStatement","src":"24669:47:15"}]}},{"expression":{"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3533,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"24753:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3535,"indexExpression":{"id":3534,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24761:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24753:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24766:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"24753:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3538,"nodeType":"ExpressionStatement","src":"24753:17:15"}]},"id":3540,"nodeType":"IfStatement","src":"23789:996:15","trueBody":{"id":3482,"nodeType":"Block","src":"23809:216:15","statements":[{"eventCall":{"arguments":[{"baseExpression":{"id":3467,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"23923:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3469,"indexExpression":{"id":3468,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23929:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23923:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3470,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3385,"src":"23933:10:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3472,"indexExpression":{"id":3471,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23944:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23933:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23948:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3466,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"23910:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23910:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3475,"nodeType":"EmitStatement","src":"23905:45:15"},{"expression":{"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3476,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"23993:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3478,"indexExpression":{"id":3477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"24001:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23993:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24006:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"23993:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3481,"nodeType":"ExpressionStatement","src":"23993:17:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3418,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23303:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3419,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"23307:5:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23313:6:15","memberName":"length","nodeType":"MemberAccess","src":"23307:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23303:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3542,"initializationExpression":{"assignments":[3415],"declarations":[{"constant":false,"id":3415,"mutability":"mutable","name":"i","nameLocation":"23296:1:15","nodeType":"VariableDeclaration","scope":3542,"src":"23288:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3414,"name":"uint256","nodeType":"ElementaryTypeName","src":"23288:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3417,"initialValue":{"hexValue":"30","id":3416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23300:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23288:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23321:3:15","subExpression":{"id":3422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"23321:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3424,"nodeType":"ExpressionStatement","src":"23321:3:15"},"nodeType":"ForStatement","src":"23283:1512:15"},{"expression":{"id":3543,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"24812:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":3392,"id":3544,"nodeType":"Return","src":"24805:14:15"}]},"documentation":{"id":3379,"nodeType":"StructuredDocumentation","src":"22808:179:15","text":" @dev Batch consume views for multiple users\n @param users User address array\n @param contentIds Content ID array\n @return Success status array"},"functionSelector":"529e2b32","id":3546,"implemented":true,"kind":"function","modifiers":[{"id":3388,"kind":"modifierInvocation","modifierName":{"id":3387,"name":"onlyAdmin","nameLocations":["23102:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1715,"src":"23102:9:15"},"nodeType":"ModifierInvocation","src":"23102:9:15"}],"name":"batchConsumeView","nameLocation":"23001:16:15","nodeType":"FunctionDefinition","parameters":{"id":3386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3382,"mutability":"mutable","name":"users","nameLocation":"23044:5:15","nodeType":"VariableDeclaration","scope":3546,"src":"23027:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3380,"name":"address","nodeType":"ElementaryTypeName","src":"23027:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3381,"nodeType":"ArrayTypeName","src":"23027:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3385,"mutability":"mutable","name":"contentIds","nameLocation":"23076:10:15","nodeType":"VariableDeclaration","scope":3546,"src":"23059:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"23059:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3384,"nodeType":"ArrayTypeName","src":"23059:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"23017:75:15"},"returnParameters":{"id":3392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3546,"src":"23121:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3389,"name":"bool","nodeType":"ElementaryTypeName","src":"23121:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3390,"nodeType":"ArrayTypeName","src":"23121:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"23120:15:15"},"scope":3806,"src":"22992:1834:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4148],"body":{"id":3591,"nodeType":"Block","src":"25190:624:15","statements":[{"assignments":[3559],"declarations":[{"constant":false,"id":3559,"mutability":"mutable","name":"config","nameLocation":"25242:6:15","nodeType":"VariableDeclaration","scope":3591,"src":"25200:48:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig"},"typeName":{"id":3558,"nodeType":"UserDefinedTypeName","pathNode":{"id":3557,"name":"VideoPaymentStorage.ContentConfig","nameLocations":["25200:19:15","25220:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":4174,"src":"25200:33:15"},"referencedDeclaration":4174,"src":"25200:33:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig"}},"visibility":"internal"}],"id":3564,"initialValue":{"baseExpression":{"expression":{"id":3560,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"25251:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25273:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"25251:36:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3563,"indexExpression":{"id":3562,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"25288:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25251:47:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25200:98:15"},{"assignments":[3569,3572],"declarations":[{"constant":false,"id":3569,"mutability":"mutable","name":"supportedTokens","nameLocation":"25389:15:15","nodeType":"VariableDeclaration","scope":3591,"src":"25372:32:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3567,"name":"address","nodeType":"ElementaryTypeName","src":"25372:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3568,"nodeType":"ArrayTypeName","src":"25372:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3572,"mutability":"mutable","name":"prices","nameLocation":"25435:6:15","nodeType":"VariableDeclaration","scope":3591,"src":"25418:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3570,"name":"uint256","nodeType":"ElementaryTypeName","src":"25418:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3571,"nodeType":"ArrayTypeName","src":"25418:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":3576,"initialValue":{"arguments":[{"id":3574,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"25484:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3573,"name":"_getSupportedTokensForContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"25454:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) view returns (address[] memory,uint256[] memory)"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25454:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"25358:136:15"},{"expression":{"arguments":[{"expression":{"id":3579,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25587:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig storage pointer"}},"id":3580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25594:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"25587:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3581,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25631:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig storage pointer"}},"id":3582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25638:8:15","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4173,"src":"25631:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3583,"name":"supportedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"25681:15:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":3584,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"25727:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3585,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"25771:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig storage pointer"}},"id":3586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25778:9:15","memberName":"viewCount","nodeType":"MemberAccess","referencedDeclaration":4171,"src":"25771:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25791:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25771:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3577,"name":"IVideoPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"25524:13:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVideoPayment_$4157_$","typeString":"type(contract IVideoPayment)"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25538:19:15","memberName":"ContentPurchaseInfo","nodeType":"MemberAccess","referencedDeclaration":3823,"src":"25524:33:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ContentPurchaseInfo_$3823_storage_ptr_$","typeString":"type(struct IVideoPayment.ContentPurchaseInfo storage pointer)"}},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["25576:9:15","25621:8:15","25664:15:15","25714:11:15","25751:18:15"],"names":["viewCount","isActive","supportedTokens","tokenPrices","isUnlimitedViewing"],"nodeType":"FunctionCall","src":"25524:283:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ContentPurchaseInfo_$3823_memory_ptr","typeString":"struct IVideoPayment.ContentPurchaseInfo memory"}},"functionReturnParameters":3554,"id":3590,"nodeType":"Return","src":"25505:302:15"}]},"documentation":{"id":3547,"nodeType":"StructuredDocumentation","src":"24890:165:15","text":" @dev Get content purchase information\n @param contentId Content ID\n @return Purchase information including supported tokens and prices"},"functionSelector":"b8e8f98e","id":3592,"implemented":true,"kind":"function","modifiers":[],"name":"getContentPurchaseInfo","nameLocation":"25069:22:15","nodeType":"FunctionDefinition","parameters":{"id":3550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3549,"mutability":"mutable","name":"contentId","nameLocation":"25109:9:15","nodeType":"VariableDeclaration","scope":3592,"src":"25101:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3548,"name":"uint256","nodeType":"ElementaryTypeName","src":"25101:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25091:33:15"},"returnParameters":{"id":3554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3592,"src":"25148:40:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ContentPurchaseInfo_$3823_memory_ptr","typeString":"struct IVideoPayment.ContentPurchaseInfo"},"typeName":{"id":3552,"nodeType":"UserDefinedTypeName","pathNode":{"id":3551,"name":"IVideoPayment.ContentPurchaseInfo","nameLocations":["25148:13:15","25162:19:15"],"nodeType":"IdentifierPath","referencedDeclaration":3823,"src":"25148:33:15"},"referencedDeclaration":3823,"src":"25148:33:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentPurchaseInfo_$3823_storage_ptr","typeString":"struct IVideoPayment.ContentPurchaseInfo"}},"visibility":"internal"}],"src":"25147:42:15"},"scope":3806,"src":"25060:754:15","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3772,"nodeType":"Block","src":"26248:1718:15","statements":[{"assignments":[3605],"declarations":[{"constant":false,"id":3605,"mutability":"mutable","name":"count","nameLocation":"26333:5:15","nodeType":"VariableDeclaration","scope":3772,"src":"26325:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3604,"name":"uint256","nodeType":"ElementaryTypeName","src":"26325:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3607,"initialValue":{"hexValue":"30","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26341:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26325:17:15"},{"assignments":[3609],"declarations":[{"constant":false,"id":3609,"mutability":"mutable","name":"totalTokens","nameLocation":"26360:11:15","nodeType":"VariableDeclaration","scope":3772,"src":"26352:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3608,"name":"uint256","nodeType":"ElementaryTypeName","src":"26352:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3613,"initialValue":{"expression":{"expression":{"id":3610,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"26374:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26383:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"26374:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26402:6:15","memberName":"length","nodeType":"MemberAccess","src":"26374:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26352:56:15"},{"body":{"id":3675,"nodeType":"Block","src":"26524:538:15","statements":[{"assignments":[3625],"declarations":[{"constant":false,"id":3625,"mutability":"mutable","name":"token","nameLocation":"26546:5:15","nodeType":"VariableDeclaration","scope":3675,"src":"26538:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3624,"name":"address","nodeType":"ElementaryTypeName","src":"26538:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3630,"initialValue":{"baseExpression":{"expression":{"id":3626,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"26554:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26563:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"26554:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3629,"indexExpression":{"id":3628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"26582:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26554:30:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"26538:46:15"},{"condition":{"baseExpression":{"expression":{"id":3631,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"26602:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26611:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"26602:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3634,"indexExpression":{"id":3633,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"26627:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26602:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3674,"nodeType":"IfStatement","src":"26598:454:15","trueBody":{"id":3673,"nodeType":"Block","src":"26635:417:15","statements":[{"assignments":[3636],"declarations":[{"constant":false,"id":3636,"mutability":"mutable","name":"price","nameLocation":"26661:5:15","nodeType":"VariableDeclaration","scope":3673,"src":"26653:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3635,"name":"uint256","nodeType":"ElementaryTypeName","src":"26653:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3637,"nodeType":"VariableDeclarationStatement","src":"26653:13:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3638,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"26688:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26705:1:15","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":3640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26697:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3639,"name":"address","nodeType":"ElementaryTypeName","src":"26697:7:15","typeDescriptions":{}}},"id":3642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26697:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"26688:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3663,"nodeType":"Block","src":"26810:148:15","statements":[{"expression":{"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3653,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"26832:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":3654,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"26840:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26849:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"26840:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3657,"indexExpression":{"id":3656,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"26864:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26840:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26875:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"26840:46:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3660,"indexExpression":{"id":3659,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"26912:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26840:99:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26832:107:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3662,"nodeType":"ExpressionStatement","src":"26832:107:15"}]},"id":3664,"nodeType":"IfStatement","src":"26684:274:15","trueBody":{"id":3652,"nodeType":"Block","src":"26709:95:15","statements":[{"expression":{"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3644,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"26731:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":3645,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"26739:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26748:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"26739:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3648,"indexExpression":{"id":3647,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"26763:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26739:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26774:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"26739:46:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26731:54:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3651,"nodeType":"ExpressionStatement","src":"26731:54:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3665,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"26979:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26987:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26979:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3672,"nodeType":"IfStatement","src":"26975:63:15","trueBody":{"id":3671,"nodeType":"Block","src":"26990:48:15","statements":[{"expression":{"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27012:7:15","subExpression":{"id":3668,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"27012:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3670,"nodeType":"ExpressionStatement","src":"27012:7:15"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3618,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"26502:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3619,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"26506:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26502:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3676,"initializationExpression":{"assignments":[3615],"declarations":[{"constant":false,"id":3615,"mutability":"mutable","name":"i","nameLocation":"26495:1:15","nodeType":"VariableDeclaration","scope":3676,"src":"26487:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3614,"name":"uint256","nodeType":"ElementaryTypeName","src":"26487:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3617,"initialValue":{"hexValue":"30","id":3616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26499:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26487:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26519:3:15","subExpression":{"id":3621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"26519:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3623,"nodeType":"ExpressionStatement","src":"26519:3:15"},"nodeType":"ForStatement","src":"26482:580:15"},{"expression":{"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3677,"name":"supportedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"27113:15:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3681,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"27145:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"27131:13:15","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":3678,"name":"address","nodeType":"ElementaryTypeName","src":"27135:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3679,"nodeType":"ArrayTypeName","src":"27135:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":3682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27131:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"27113:38:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3684,"nodeType":"ExpressionStatement","src":"27113:38:15"},{"expression":{"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3685,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"27161:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3689,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"27184:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"27170:13:15","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":3686,"name":"uint256","nodeType":"ElementaryTypeName","src":"27174:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3687,"nodeType":"ArrayTypeName","src":"27174:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27170:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"27161:29:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3692,"nodeType":"ExpressionStatement","src":"27161:29:15"},{"assignments":[3694],"declarations":[{"constant":false,"id":3694,"mutability":"mutable","name":"index","nameLocation":"27209:5:15","nodeType":"VariableDeclaration","scope":3772,"src":"27201:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3693,"name":"uint256","nodeType":"ElementaryTypeName","src":"27201:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3696,"initialValue":{"hexValue":"30","id":3695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27217:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27201:17:15"},{"body":{"id":3770,"nodeType":"Block","src":"27327:633:15","statements":[{"assignments":[3708],"declarations":[{"constant":false,"id":3708,"mutability":"mutable","name":"token","nameLocation":"27349:5:15","nodeType":"VariableDeclaration","scope":3770,"src":"27341:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3707,"name":"address","nodeType":"ElementaryTypeName","src":"27341:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3713,"initialValue":{"baseExpression":{"expression":{"id":3709,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"27357:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27366:18:15","memberName":"allSupportedTokens","nodeType":"MemberAccess","referencedDeclaration":4206,"src":"27357:27:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3712,"indexExpression":{"id":3711,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"27385:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27357:30:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"27341:46:15"},{"condition":{"baseExpression":{"expression":{"id":3714,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"27405:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27414:15:15","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4203,"src":"27405:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3717,"indexExpression":{"id":3716,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"27430:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27405:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3769,"nodeType":"IfStatement","src":"27401:549:15","trueBody":{"id":3768,"nodeType":"Block","src":"27438:512:15","statements":[{"assignments":[3719],"declarations":[{"constant":false,"id":3719,"mutability":"mutable","name":"price","nameLocation":"27464:5:15","nodeType":"VariableDeclaration","scope":3768,"src":"27456:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"27456:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3720,"nodeType":"VariableDeclarationStatement","src":"27456:13:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3721,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"27491:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27508:1:15","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":3723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27500:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3722,"name":"address","nodeType":"ElementaryTypeName","src":"27500:7:15","typeDescriptions":{}}},"id":3725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27500:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27491:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3746,"nodeType":"Block","src":"27613:148:15","statements":[{"expression":{"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3736,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"27635:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":3737,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"27643:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27652:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"27643:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3740,"indexExpression":{"id":3739,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"27667:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27643:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27678:11:15","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4167,"src":"27643:46:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3743,"indexExpression":{"id":3742,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"27715:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27643:99:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27635:107:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3745,"nodeType":"ExpressionStatement","src":"27635:107:15"}]},"id":3747,"nodeType":"IfStatement","src":"27487:274:15","trueBody":{"id":3735,"nodeType":"Block","src":"27512:95:15","statements":[{"expression":{"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3727,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"27534:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":3728,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"27542:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27551:14:15","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4192,"src":"27542:23:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3731,"indexExpression":{"id":3730,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"27566:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27542:34:15","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27577:11:15","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4169,"src":"27542:46:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27534:54:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3734,"nodeType":"ExpressionStatement","src":"27534:54:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3748,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"27782:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27790:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27782:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3767,"nodeType":"IfStatement","src":"27778:158:15","trueBody":{"id":3766,"nodeType":"Block","src":"27793:143:15","statements":[{"expression":{"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3751,"name":"supportedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"27815:15:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3753,"indexExpression":{"id":3752,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"27831:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27815:22:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3754,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"27840:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27815:30:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3756,"nodeType":"ExpressionStatement","src":"27815:30:15"},{"expression":{"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3757,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"27867:6:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3759,"indexExpression":{"id":3758,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"27874:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27867:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3760,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"27883:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27867:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3762,"nodeType":"ExpressionStatement","src":"27867:21:15"},{"expression":{"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27910:7:15","subExpression":{"id":3763,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"27910:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3765,"nodeType":"ExpressionStatement","src":"27910:7:15"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3701,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"27305:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3702,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"27309:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27305:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3771,"initializationExpression":{"assignments":[3698],"declarations":[{"constant":false,"id":3698,"mutability":"mutable","name":"i","nameLocation":"27298:1:15","nodeType":"VariableDeclaration","scope":3771,"src":"27290:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3697,"name":"uint256","nodeType":"ElementaryTypeName","src":"27290:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3700,"initialValue":{"hexValue":"30","id":3699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27302:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27290:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27322:3:15","subExpression":{"id":3704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"27322:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3706,"nodeType":"ExpressionStatement","src":"27322:3:15"},"nodeType":"ForStatement","src":"27285:675:15"}]},"documentation":{"id":3593,"nodeType":"StructuredDocumentation","src":"25820:241:15","text":" @dev Internal function to get supported tokens and prices for content\n @param contentId Content ID\n @return supportedTokens Array of supported token addresses\n @return prices Array of corresponding prices"},"id":3773,"implemented":true,"kind":"function","modifiers":[],"name":"_getSupportedTokensForContent","nameLocation":"26075:29:15","nodeType":"FunctionDefinition","parameters":{"id":3596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3595,"mutability":"mutable","name":"contentId","nameLocation":"26122:9:15","nodeType":"VariableDeclaration","scope":3773,"src":"26114:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3594,"name":"uint256","nodeType":"ElementaryTypeName","src":"26114:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26104:33:15"},"returnParameters":{"id":3603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3599,"mutability":"mutable","name":"supportedTokens","nameLocation":"26202:15:15","nodeType":"VariableDeclaration","scope":3773,"src":"26185:32:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3597,"name":"address","nodeType":"ElementaryTypeName","src":"26185:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3598,"nodeType":"ArrayTypeName","src":"26185:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3602,"mutability":"mutable","name":"prices","nameLocation":"26236:6:15","nodeType":"VariableDeclaration","scope":3773,"src":"26219:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3600,"name":"uint256","nodeType":"ElementaryTypeName","src":"26219:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3601,"nodeType":"ArrayTypeName","src":"26219:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"26184:59:15"},"scope":3806,"src":"26066:1900:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4137],"body":{"id":3788,"nodeType":"Block","src":"28113:62:15","statements":[{"expression":{"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3779,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"28123:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"28132:6:15","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4216,"src":"28123:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28141:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"28123:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3784,"nodeType":"ExpressionStatement","src":"28123:22:15"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3785,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"28160:6:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28160:8:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3787,"nodeType":"EmitStatement","src":"28155:13:15"}]},"documentation":{"id":3774,"nodeType":"StructuredDocumentation","src":"28034:38:15","text":" @dev Pause contract"},"functionSelector":"8456cb59","id":3789,"implemented":true,"kind":"function","modifiers":[{"id":3777,"kind":"modifierInvocation","modifierName":{"id":3776,"name":"onlyOwner","nameLocations":["28103:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"28103:9:15"},"nodeType":"ModifierInvocation","src":"28103:9:15"}],"name":"pause","nameLocation":"28086:5:15","nodeType":"FunctionDefinition","parameters":{"id":3775,"nodeType":"ParameterList","parameters":[],"src":"28091:2:15"},"returnParameters":{"id":3778,"nodeType":"ParameterList","parameters":[],"src":"28113:0:15"},"scope":3806,"src":"28077:98:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4140],"body":{"id":3804,"nodeType":"Block","src":"28264:65:15","statements":[{"expression":{"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3795,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"28274:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4225_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"28283:6:15","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4216,"src":"28274:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28292:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"28274:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3800,"nodeType":"ExpressionStatement","src":"28274:23:15"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3801,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"28312:8:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28312:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3803,"nodeType":"EmitStatement","src":"28307:15:15"}]},"documentation":{"id":3790,"nodeType":"StructuredDocumentation","src":"28181:40:15","text":" @dev Unpause contract"},"functionSelector":"3f4ba83a","id":3805,"implemented":true,"kind":"function","modifiers":[{"id":3793,"kind":"modifierInvocation","modifierName":{"id":3792,"name":"onlyOwner","nameLocations":["28254:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1701,"src":"28254:9:15"},"nodeType":"ModifierInvocation","src":"28254:9:15"}],"name":"unpause","nameLocation":"28235:7:15","nodeType":"FunctionDefinition","parameters":{"id":3791,"nodeType":"ParameterList","parameters":[],"src":"28242:2:15"},"returnParameters":{"id":3794,"nodeType":"ParameterList","parameters":[],"src":"28264:0:15"},"scope":3806,"src":"28226:103:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3807,"src":"716:27615:15","usedErrors":[16,19,294,299,480,639,652,1251,1514,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847],"usedEvents":[24,586,3859,3870,3880,3888,3894,3904,3908,3912,3916,3924,3928,3932,3934,3936,3942]}],"src":"32:28300:15"},"id":15},"contracts/interfaces/IVideoPayment.sol":{"ast":{"absolutePath":"contracts/interfaces/IVideoPayment.sol","exportedSymbols":{"IVideoPayment":[4157],"VideoPaymentStorage":[4226]},"id":4158,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3808,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:16"},{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","file":"../libraries/VideoPaymentStorage.sol","id":3809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4158,"sourceUnit":4227,"src":"58:46:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVideoPayment","contractDependencies":[],"contractKind":"interface","documentation":{"id":3810,"nodeType":"StructuredDocumentation","src":"106:75:16","text":" @title IVideoPayment\n @dev Interface for VideoPayment contract"},"fullyImplemented":false,"id":4157,"linearizedBaseContracts":[4157],"name":"IVideoPayment","nameLocation":"192:13:16","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IVideoPayment.ContentPurchaseInfo","id":3823,"members":[{"constant":false,"id":3812,"mutability":"mutable","name":"viewCount","nameLocation":"303:9:16","nodeType":"VariableDeclaration","scope":3823,"src":"295:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3811,"name":"uint256","nodeType":"ElementaryTypeName","src":"295:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3814,"mutability":"mutable","name":"isActive","nameLocation":"367:8:16","nodeType":"VariableDeclaration","scope":3823,"src":"362:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3813,"name":"bool","nodeType":"ElementaryTypeName","src":"362:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3817,"mutability":"mutable","name":"supportedTokens","nameLocation":"429:15:16","nodeType":"VariableDeclaration","scope":3823,"src":"419:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3815,"name":"address","nodeType":"ElementaryTypeName","src":"419:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3816,"nodeType":"ArrayTypeName","src":"419:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3820,"mutability":"mutable","name":"tokenPrices","nameLocation":"512:11:16","nodeType":"VariableDeclaration","scope":3823,"src":"502:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3818,"name":"uint256","nodeType":"ElementaryTypeName","src":"502:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3819,"nodeType":"ArrayTypeName","src":"502:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3822,"mutability":"mutable","name":"isUnlimitedViewing","nameLocation":"568:18:16","nodeType":"VariableDeclaration","scope":3823,"src":"563:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3821,"name":"bool","nodeType":"ElementaryTypeName","src":"563:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ContentPurchaseInfo","nameLocation":"265:19:16","nodeType":"StructDefinition","scope":4157,"src":"258:375:16","visibility":"public"},{"errorSelector":"30cd7471","id":3825,"name":"NotOwner","nameLocation":"665:8:16","nodeType":"ErrorDefinition","parameters":{"id":3824,"nodeType":"ParameterList","parameters":[],"src":"673:2:16"},"src":"659:17:16"},{"errorSelector":"7bfa4b9f","id":3827,"name":"NotAdmin","nameLocation":"687:8:16","nodeType":"ErrorDefinition","parameters":{"id":3826,"nodeType":"ParameterList","parameters":[],"src":"695:2:16"},"src":"681:17:16"},{"errorSelector":"ab35696f","id":3829,"name":"ContractPaused","nameLocation":"709:14:16","nodeType":"ErrorDefinition","parameters":{"id":3828,"nodeType":"ParameterList","parameters":[],"src":"723:2:16"},"src":"703:23:16"},{"errorSelector":"ab4142cf","id":3831,"name":"InvalidContent","nameLocation":"737:14:16","nodeType":"ErrorDefinition","parameters":{"id":3830,"nodeType":"ParameterList","parameters":[],"src":"751:2:16"},"src":"731:23:16"},{"errorSelector":"6a172882","id":3833,"name":"UnsupportedToken","nameLocation":"765:16:16","nodeType":"ErrorDefinition","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[],"src":"781:2:16"},"src":"759:25:16"},{"errorSelector":"cd1c8867","id":3835,"name":"InsufficientPayment","nameLocation":"795:19:16","nodeType":"ErrorDefinition","parameters":{"id":3834,"nodeType":"ParameterList","parameters":[],"src":"814:2:16"},"src":"789:28:16"},{"errorSelector":"fcd7a1b5","id":3837,"name":"NoValidPermission","nameLocation":"828:17:16","nodeType":"ErrorDefinition","parameters":{"id":3836,"nodeType":"ParameterList","parameters":[],"src":"845:2:16"},"src":"822:26:16"},{"errorSelector":"a24a13a6","id":3839,"name":"ArrayLengthMismatch","nameLocation":"859:19:16","nodeType":"ErrorDefinition","parameters":{"id":3838,"nodeType":"ParameterList","parameters":[],"src":"878:2:16"},"src":"853:28:16"},{"errorSelector":"d92e233d","id":3841,"name":"ZeroAddress","nameLocation":"892:11:16","nodeType":"ErrorDefinition","parameters":{"id":3840,"nodeType":"ParameterList","parameters":[],"src":"903:2:16"},"src":"886:20:16"},{"errorSelector":"2c5211c6","id":3843,"name":"InvalidAmount","nameLocation":"917:13:16","nodeType":"ErrorDefinition","parameters":{"id":3842,"nodeType":"ParameterList","parameters":[],"src":"930:2:16"},"src":"911:22:16"},{"errorSelector":"3367b554","id":3845,"name":"AlreadyPurchased","nameLocation":"944:16:16","nodeType":"ErrorDefinition","parameters":{"id":3844,"nodeType":"ParameterList","parameters":[],"src":"960:2:16"},"src":"938:25:16"},{"errorSelector":"90b8ec18","id":3847,"name":"TransferFailed","nameLocation":"974:14:16","nodeType":"ErrorDefinition","parameters":{"id":3846,"nodeType":"ParameterList","parameters":[],"src":"988:2:16"},"src":"968:23:16"},{"anonymous":false,"eventSelector":"b46dc51df9908947f62607b9c4761b3ab411f6da0bb32c44477b87ac8775d8be","id":3859,"name":"ContentPurchased","nameLocation":"1036:16:16","nodeType":"EventDefinition","parameters":{"id":3858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1078:4:16","nodeType":"VariableDeclaration","scope":3859,"src":"1062:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3848,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3851,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1108:9:16","nodeType":"VariableDeclaration","scope":3859,"src":"1092:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1092:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3853,"indexed":false,"mutability":"mutable","name":"paymentToken","nameLocation":"1135:12:16","nodeType":"VariableDeclaration","scope":3859,"src":"1127:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3852,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3855,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1165:6:16","nodeType":"VariableDeclaration","scope":3859,"src":"1157:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3857,"indexed":false,"mutability":"mutable","name":"viewCount","nameLocation":"1189:9:16","nodeType":"VariableDeclaration","scope":3859,"src":"1181:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1052:152:16"},"src":"1030:175:16"},{"anonymous":false,"eventSelector":"2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d","id":3870,"name":"BatchPurchased","nameLocation":"1217:14:16","nodeType":"EventDefinition","parameters":{"id":3869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3861,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1257:4:16","nodeType":"VariableDeclaration","scope":3870,"src":"1241:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3860,"name":"address","nodeType":"ElementaryTypeName","src":"1241:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3864,"indexed":false,"mutability":"mutable","name":"contentIds","nameLocation":"1281:10:16","nodeType":"VariableDeclaration","scope":3870,"src":"1271:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3863,"nodeType":"ArrayTypeName","src":"1271:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3866,"indexed":false,"mutability":"mutable","name":"paymentToken","nameLocation":"1309:12:16","nodeType":"VariableDeclaration","scope":3870,"src":"1301:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3865,"name":"address","nodeType":"ElementaryTypeName","src":"1301:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3868,"indexed":false,"mutability":"mutable","name":"totalAmount","nameLocation":"1339:11:16","nodeType":"VariableDeclaration","scope":3870,"src":"1331:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1231:125:16"},"src":"1211:146:16"},{"anonymous":false,"eventSelector":"d0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70","id":3880,"name":"NFTPurchased","nameLocation":"1369:12:16","nodeType":"EventDefinition","parameters":{"id":3879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3872,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1407:4:16","nodeType":"VariableDeclaration","scope":3880,"src":"1391:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3871,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3874,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1437:9:16","nodeType":"VariableDeclaration","scope":3880,"src":"1421:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1421:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3876,"indexed":false,"mutability":"mutable","name":"nftContract","nameLocation":"1464:11:16","nodeType":"VariableDeclaration","scope":3880,"src":"1456:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3875,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3878,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"1493:7:16","nodeType":"VariableDeclaration","scope":3880,"src":"1485:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1485:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1381:125:16"},"src":"1363:144:16"},{"anonymous":false,"eventSelector":"2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42","id":3888,"name":"ViewConsumed","nameLocation":"1554:12:16","nodeType":"EventDefinition","parameters":{"id":3887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3882,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1592:4:16","nodeType":"VariableDeclaration","scope":3888,"src":"1576:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3881,"name":"address","nodeType":"ElementaryTypeName","src":"1576:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3884,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1622:9:16","nodeType":"VariableDeclaration","scope":3888,"src":"1606:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1606:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3886,"indexed":false,"mutability":"mutable","name":"remainingViews","nameLocation":"1649:14:16","nodeType":"VariableDeclaration","scope":3888,"src":"1641:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1641:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1566:103:16"},"src":"1548:122:16"},{"anonymous":false,"eventSelector":"294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e","id":3894,"name":"PermissionExpired","nameLocation":"1682:17:16","nodeType":"EventDefinition","parameters":{"id":3893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3890,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1716:4:16","nodeType":"VariableDeclaration","scope":3894,"src":"1700:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3889,"name":"address","nodeType":"ElementaryTypeName","src":"1700:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3892,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1738:9:16","nodeType":"VariableDeclaration","scope":3894,"src":"1722:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1722:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1699:49:16"},"src":"1676:73:16"},{"anonymous":false,"eventSelector":"b76abe3c068fccae7ac0f9377f48f7261dcf952179a37060c5de877a493e67b7","id":3904,"name":"ViewCountAdded","nameLocation":"1761:14:16","nodeType":"EventDefinition","parameters":{"id":3903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3896,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1801:4:16","nodeType":"VariableDeclaration","scope":3904,"src":"1785:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3895,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3898,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1831:9:16","nodeType":"VariableDeclaration","scope":3904,"src":"1815:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3900,"indexed":false,"mutability":"mutable","name":"addedCount","nameLocation":"1858:10:16","nodeType":"VariableDeclaration","scope":3904,"src":"1850:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3899,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3902,"indexed":false,"mutability":"mutable","name":"totalRemaining","nameLocation":"1886:14:16","nodeType":"VariableDeclaration","scope":3904,"src":"1878:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1775:131:16"},"src":"1755:152:16"},{"anonymous":false,"eventSelector":"44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339","id":3908,"name":"AdminAdded","nameLocation":"1954:10:16","nodeType":"EventDefinition","parameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"1981:5:16","nodeType":"VariableDeclaration","scope":3908,"src":"1965:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3905,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1964:23:16"},"src":"1948:40:16"},{"anonymous":false,"eventSelector":"a3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f","id":3912,"name":"AdminRemoved","nameLocation":"1999:12:16","nodeType":"EventDefinition","parameters":{"id":3911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3910,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"2028:5:16","nodeType":"VariableDeclaration","scope":3912,"src":"2012:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3909,"name":"address","nodeType":"ElementaryTypeName","src":"2012:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2011:23:16"},"src":"1993:42:16"},{"anonymous":false,"eventSelector":"a7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e44266","id":3916,"name":"ContentConfigUpdated","nameLocation":"2046:20:16","nodeType":"EventDefinition","parameters":{"id":3915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3914,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"2083:9:16","nodeType":"VariableDeclaration","scope":3916,"src":"2067:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3913,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:27:16"},"src":"2040:54:16"},{"anonymous":false,"eventSelector":"376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca9","id":3924,"name":"TokenPriceUpdated","nameLocation":"2105:17:16","nodeType":"EventDefinition","parameters":{"id":3923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3918,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"2148:9:16","nodeType":"VariableDeclaration","scope":3924,"src":"2132:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3917,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3920,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2183:5:16","nodeType":"VariableDeclaration","scope":3924,"src":"2167:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3919,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3922,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"2206:5:16","nodeType":"VariableDeclaration","scope":3924,"src":"2198:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2122:95:16"},"src":"2099:119:16"},{"anonymous":false,"eventSelector":"d1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d7","id":3928,"name":"SupportedTokenAdded","nameLocation":"2229:19:16","nodeType":"EventDefinition","parameters":{"id":3927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3926,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2265:5:16","nodeType":"VariableDeclaration","scope":3928,"src":"2249:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3925,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2248:23:16"},"src":"2223:49:16"},{"anonymous":false,"eventSelector":"bea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a306","id":3932,"name":"SupportedTokenRemoved","nameLocation":"2283:21:16","nodeType":"EventDefinition","parameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2321:5:16","nodeType":"VariableDeclaration","scope":3932,"src":"2305:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3929,"name":"address","nodeType":"ElementaryTypeName","src":"2305:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2304:23:16"},"src":"2277:51:16"},{"anonymous":false,"eventSelector":"9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752","id":3934,"name":"Paused","nameLocation":"2339:6:16","nodeType":"EventDefinition","parameters":{"id":3933,"nodeType":"ParameterList","parameters":[],"src":"2345:2:16"},"src":"2333:15:16"},{"anonymous":false,"eventSelector":"a45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933","id":3936,"name":"Unpaused","nameLocation":"2359:8:16","nodeType":"EventDefinition","parameters":{"id":3935,"nodeType":"ParameterList","parameters":[],"src":"2367:2:16"},"src":"2353:17:16"},{"anonymous":false,"eventSelector":"4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a","id":3942,"name":"TreasuryUpdated","nameLocation":"2415:15:16","nodeType":"EventDefinition","parameters":{"id":3941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"indexed":true,"mutability":"mutable","name":"oldTreasury","nameLocation":"2456:11:16","nodeType":"VariableDeclaration","scope":3942,"src":"2440:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3937,"name":"address","nodeType":"ElementaryTypeName","src":"2440:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3940,"indexed":true,"mutability":"mutable","name":"newTreasury","nameLocation":"2493:11:16","nodeType":"VariableDeclaration","scope":3942,"src":"2477:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3939,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:80:16"},"src":"2409:102:16"},{"functionSelector":"8da5cb5b","id":3947,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2560:5:16","nodeType":"FunctionDefinition","parameters":{"id":3943,"nodeType":"ParameterList","parameters":[],"src":"2565:2:16"},"returnParameters":{"id":3946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3947,"src":"2591:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3944,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2590:9:16"},"scope":4157,"src":"2551:49:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"24d7806c","id":3954,"implemented":false,"kind":"function","modifiers":[],"name":"isAdmin","nameLocation":"2614:7:16","nodeType":"FunctionDefinition","parameters":{"id":3950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3949,"mutability":"mutable","name":"account","nameLocation":"2630:7:16","nodeType":"VariableDeclaration","scope":3954,"src":"2622:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"2622:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2621:17:16"},"returnParameters":{"id":3953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3954,"src":"2662:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3951,"name":"bool","nodeType":"ElementaryTypeName","src":"2662:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2661:6:16"},"scope":4157,"src":"2605:63:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70480275","id":3959,"implemented":false,"kind":"function","modifiers":[],"name":"addAdmin","nameLocation":"2682:8:16","nodeType":"FunctionDefinition","parameters":{"id":3957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"admin","nameLocation":"2699:5:16","nodeType":"VariableDeclaration","scope":3959,"src":"2691:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3955,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2690:15:16"},"returnParameters":{"id":3958,"nodeType":"ParameterList","parameters":[],"src":"2714:0:16"},"scope":4157,"src":"2673:42:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1785f53c","id":3964,"implemented":false,"kind":"function","modifiers":[],"name":"removeAdmin","nameLocation":"2729:11:16","nodeType":"FunctionDefinition","parameters":{"id":3962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3961,"mutability":"mutable","name":"admin","nameLocation":"2749:5:16","nodeType":"VariableDeclaration","scope":3964,"src":"2741:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3960,"name":"address","nodeType":"ElementaryTypeName","src":"2741:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2740:15:16"},"returnParameters":{"id":3963,"nodeType":"ParameterList","parameters":[],"src":"2764:0:16"},"scope":4157,"src":"2720:45:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f0f44260","id":3969,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"2817:11:16","nodeType":"FunctionDefinition","parameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3966,"mutability":"mutable","name":"newTreasury","nameLocation":"2845:11:16","nodeType":"VariableDeclaration","scope":3969,"src":"2829:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3965,"name":"address","nodeType":"ElementaryTypeName","src":"2829:15:16","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"2828:29:16"},"returnParameters":{"id":3968,"nodeType":"ParameterList","parameters":[],"src":"2866:0:16"},"scope":4157,"src":"2808:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3b19e84a","id":3974,"implemented":false,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"2881:11:16","nodeType":"FunctionDefinition","parameters":{"id":3970,"nodeType":"ParameterList","parameters":[],"src":"2892:2:16"},"returnParameters":{"id":3973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3974,"src":"2918:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3971,"name":"address","nodeType":"ElementaryTypeName","src":"2918:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2917:9:16"},"scope":4157,"src":"2872:55:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"02236026","id":3987,"implemented":false,"kind":"function","modifiers":[],"name":"setContentConfig","nameLocation":"2978:16:16","nodeType":"FunctionDefinition","parameters":{"id":3985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3976,"mutability":"mutable","name":"contentId","nameLocation":"3012:9:16","nodeType":"VariableDeclaration","scope":3987,"src":"3004:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3975,"name":"uint256","nodeType":"ElementaryTypeName","src":"3004:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3978,"mutability":"mutable","name":"token","nameLocation":"3039:5:16","nodeType":"VariableDeclaration","scope":3987,"src":"3031:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3977,"name":"address","nodeType":"ElementaryTypeName","src":"3031:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3980,"mutability":"mutable","name":"price","nameLocation":"3062:5:16","nodeType":"VariableDeclaration","scope":3987,"src":"3054:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3979,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3982,"mutability":"mutable","name":"viewCount","nameLocation":"3085:9:16","nodeType":"VariableDeclaration","scope":3987,"src":"3077:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3981,"name":"uint256","nodeType":"ElementaryTypeName","src":"3077:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3984,"mutability":"mutable","name":"isActive","nameLocation":"3109:8:16","nodeType":"VariableDeclaration","scope":3987,"src":"3104:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3983,"name":"bool","nodeType":"ElementaryTypeName","src":"3104:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2994:129:16"},"returnParameters":{"id":3986,"nodeType":"ParameterList","parameters":[],"src":"3132:0:16"},"scope":4157,"src":"2969:164:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"277148e3","id":4004,"implemented":false,"kind":"function","modifiers":[],"name":"batchSetContentConfig","nameLocation":"3147:21:16","nodeType":"FunctionDefinition","parameters":{"id":4002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"contentIds","nameLocation":"3195:10:16","nodeType":"VariableDeclaration","scope":4004,"src":"3178:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3988,"name":"uint256","nodeType":"ElementaryTypeName","src":"3178:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3989,"nodeType":"ArrayTypeName","src":"3178:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3992,"mutability":"mutable","name":"token","nameLocation":"3223:5:16","nodeType":"VariableDeclaration","scope":4004,"src":"3215:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3991,"name":"address","nodeType":"ElementaryTypeName","src":"3215:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3995,"mutability":"mutable","name":"prices","nameLocation":"3255:6:16","nodeType":"VariableDeclaration","scope":4004,"src":"3238:23:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"3238:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3994,"nodeType":"ArrayTypeName","src":"3238:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3998,"mutability":"mutable","name":"viewCounts","nameLocation":"3288:10:16","nodeType":"VariableDeclaration","scope":4004,"src":"3271:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3996,"name":"uint256","nodeType":"ElementaryTypeName","src":"3271:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3997,"nodeType":"ArrayTypeName","src":"3271:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4001,"mutability":"mutable","name":"isActiveArray","nameLocation":"3322:13:16","nodeType":"VariableDeclaration","scope":4004,"src":"3308:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3999,"name":"bool","nodeType":"ElementaryTypeName","src":"3308:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4000,"nodeType":"ArrayTypeName","src":"3308:6:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"3168:173:16"},"returnParameters":{"id":4003,"nodeType":"ParameterList","parameters":[],"src":"3350:0:16"},"scope":4157,"src":"3138:213:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40033b3d","id":4011,"implemented":false,"kind":"function","modifiers":[],"name":"isContentActive","nameLocation":"3365:15:16","nodeType":"FunctionDefinition","parameters":{"id":4007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4006,"mutability":"mutable","name":"contentId","nameLocation":"3389:9:16","nodeType":"VariableDeclaration","scope":4011,"src":"3381:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4005,"name":"uint256","nodeType":"ElementaryTypeName","src":"3381:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3380:19:16"},"returnParameters":{"id":4010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4011,"src":"3423:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4008,"name":"bool","nodeType":"ElementaryTypeName","src":"3423:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3422:6:16"},"scope":4157,"src":"3356:73:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9981007b","id":4020,"implemented":false,"kind":"function","modifiers":[],"name":"setContentPrice","nameLocation":"3478:15:16","nodeType":"FunctionDefinition","parameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"contentId","nameLocation":"3511:9:16","nodeType":"VariableDeclaration","scope":4020,"src":"3503:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4015,"mutability":"mutable","name":"token","nameLocation":"3538:5:16","nodeType":"VariableDeclaration","scope":4020,"src":"3530:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4014,"name":"address","nodeType":"ElementaryTypeName","src":"3530:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"price","nameLocation":"3561:5:16","nodeType":"VariableDeclaration","scope":4020,"src":"3553:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4016,"name":"uint256","nodeType":"ElementaryTypeName","src":"3553:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3493:79:16"},"returnParameters":{"id":4019,"nodeType":"ParameterList","parameters":[],"src":"3581:0:16"},"scope":4157,"src":"3469:113:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6f4fe98","id":4031,"implemented":false,"kind":"function","modifiers":[],"name":"batchSetContentPrice","nameLocation":"3596:20:16","nodeType":"FunctionDefinition","parameters":{"id":4029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"contentIds","nameLocation":"3643:10:16","nodeType":"VariableDeclaration","scope":4031,"src":"3626:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3626:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4022,"nodeType":"ArrayTypeName","src":"3626:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4025,"mutability":"mutable","name":"token","nameLocation":"3671:5:16","nodeType":"VariableDeclaration","scope":4031,"src":"3663:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4024,"name":"address","nodeType":"ElementaryTypeName","src":"3663:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"prices","nameLocation":"3703:6:16","nodeType":"VariableDeclaration","scope":4031,"src":"3686:23:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4026,"name":"uint256","nodeType":"ElementaryTypeName","src":"3686:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4027,"nodeType":"ArrayTypeName","src":"3686:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3616:99:16"},"returnParameters":{"id":4030,"nodeType":"ParameterList","parameters":[],"src":"3724:0:16"},"scope":4157,"src":"3587:138:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0107e472","id":4037,"implemented":false,"kind":"function","modifiers":[],"name":"getAllSupportedTokens","nameLocation":"3774:21:16","nodeType":"FunctionDefinition","parameters":{"id":4032,"nodeType":"ParameterList","parameters":[],"src":"3795:2:16"},"returnParameters":{"id":4036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4037,"src":"3821:16:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4033,"name":"address","nodeType":"ElementaryTypeName","src":"3821:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4034,"nodeType":"ArrayTypeName","src":"3821:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3820:18:16"},"scope":4157,"src":"3765:74:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6d69fcaf","id":4042,"implemented":false,"kind":"function","modifiers":[],"name":"addSupportedToken","nameLocation":"3896:17:16","nodeType":"FunctionDefinition","parameters":{"id":4040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4039,"mutability":"mutable","name":"token","nameLocation":"3922:5:16","nodeType":"VariableDeclaration","scope":4042,"src":"3914:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4038,"name":"address","nodeType":"ElementaryTypeName","src":"3914:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3913:15:16"},"returnParameters":{"id":4041,"nodeType":"ParameterList","parameters":[],"src":"3937:0:16"},"scope":4157,"src":"3887:51:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"76319190","id":4047,"implemented":false,"kind":"function","modifiers":[],"name":"removeSupportedToken","nameLocation":"3952:20:16","nodeType":"FunctionDefinition","parameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"token","nameLocation":"3981:5:16","nodeType":"VariableDeclaration","scope":4047,"src":"3973:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4043,"name":"address","nodeType":"ElementaryTypeName","src":"3973:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3972:15:16"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[],"src":"3996:0:16"},"scope":4157,"src":"3943:54:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"240028e8","id":4054,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedToken","nameLocation":"4011:16:16","nodeType":"FunctionDefinition","parameters":{"id":4050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4049,"mutability":"mutable","name":"token","nameLocation":"4036:5:16","nodeType":"VariableDeclaration","scope":4054,"src":"4028:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4048,"name":"address","nodeType":"ElementaryTypeName","src":"4028:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4027:15:16"},"returnParameters":{"id":4053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4054,"src":"4066:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4051,"name":"bool","nodeType":"ElementaryTypeName","src":"4066:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4065:6:16"},"scope":4157,"src":"4002:70:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b6f1d140","id":4063,"implemented":false,"kind":"function","modifiers":[],"name":"purchaseContent","nameLocation":"4113:15:16","nodeType":"FunctionDefinition","parameters":{"id":4061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"contentId","nameLocation":"4146:9:16","nodeType":"VariableDeclaration","scope":4063,"src":"4138:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4055,"name":"uint256","nodeType":"ElementaryTypeName","src":"4138:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4058,"mutability":"mutable","name":"paymentToken","nameLocation":"4173:12:16","nodeType":"VariableDeclaration","scope":4063,"src":"4165:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4057,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4060,"mutability":"mutable","name":"amount","nameLocation":"4203:6:16","nodeType":"VariableDeclaration","scope":4063,"src":"4195:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4059,"name":"uint256","nodeType":"ElementaryTypeName","src":"4195:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4128:87:16"},"returnParameters":{"id":4062,"nodeType":"ParameterList","parameters":[],"src":"4232:0:16"},"scope":4157,"src":"4104:129:16","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"99ea24fe","id":4073,"implemented":false,"kind":"function","modifiers":[],"name":"batchPurchase","nameLocation":"4247:13:16","nodeType":"FunctionDefinition","parameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4066,"mutability":"mutable","name":"contentIds","nameLocation":"4287:10:16","nodeType":"VariableDeclaration","scope":4073,"src":"4270:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4064,"name":"uint256","nodeType":"ElementaryTypeName","src":"4270:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4065,"nodeType":"ArrayTypeName","src":"4270:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4068,"mutability":"mutable","name":"paymentToken","nameLocation":"4315:12:16","nodeType":"VariableDeclaration","scope":4073,"src":"4307:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4067,"name":"address","nodeType":"ElementaryTypeName","src":"4307:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4070,"mutability":"mutable","name":"totalAmount","nameLocation":"4345:11:16","nodeType":"VariableDeclaration","scope":4073,"src":"4337:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4069,"name":"uint256","nodeType":"ElementaryTypeName","src":"4337:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4260:102:16"},"returnParameters":{"id":4072,"nodeType":"ParameterList","parameters":[],"src":"4379:0:16"},"scope":4157,"src":"4238:142:16","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"86778641","id":4082,"implemented":false,"kind":"function","modifiers":[],"name":"purchaseWithNFT","nameLocation":"4394:15:16","nodeType":"FunctionDefinition","parameters":{"id":4080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4075,"mutability":"mutable","name":"contentId","nameLocation":"4427:9:16","nodeType":"VariableDeclaration","scope":4082,"src":"4419:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4074,"name":"uint256","nodeType":"ElementaryTypeName","src":"4419:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4077,"mutability":"mutable","name":"nftContract","nameLocation":"4454:11:16","nodeType":"VariableDeclaration","scope":4082,"src":"4446:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4076,"name":"address","nodeType":"ElementaryTypeName","src":"4446:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4079,"mutability":"mutable","name":"tokenId","nameLocation":"4483:7:16","nodeType":"VariableDeclaration","scope":4082,"src":"4475:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4078,"name":"uint256","nodeType":"ElementaryTypeName","src":"4475:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4409:87:16"},"returnParameters":{"id":4081,"nodeType":"ParameterList","parameters":[],"src":"4505:0:16"},"scope":4157,"src":"4385:121:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"caae24b3","id":4091,"implemented":false,"kind":"function","modifiers":[],"name":"hasViewPermission","nameLocation":"4562:17:16","nodeType":"FunctionDefinition","parameters":{"id":4087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"user","nameLocation":"4597:4:16","nodeType":"VariableDeclaration","scope":4091,"src":"4589:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4083,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4086,"mutability":"mutable","name":"contentId","nameLocation":"4619:9:16","nodeType":"VariableDeclaration","scope":4091,"src":"4611:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4085,"name":"uint256","nodeType":"ElementaryTypeName","src":"4611:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4579:55:16"},"returnParameters":{"id":4090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4091,"src":"4658:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4088,"name":"bool","nodeType":"ElementaryTypeName","src":"4658:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4657:6:16"},"scope":4157,"src":"4553:111:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b303f53f","id":4103,"implemented":false,"kind":"function","modifiers":[],"name":"getUserPermissions","nameLocation":"4678:18:16","nodeType":"FunctionDefinition","parameters":{"id":4097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4093,"mutability":"mutable","name":"user","nameLocation":"4714:4:16","nodeType":"VariableDeclaration","scope":4103,"src":"4706:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4092,"name":"address","nodeType":"ElementaryTypeName","src":"4706:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4096,"mutability":"mutable","name":"contentIds","nameLocation":"4745:10:16","nodeType":"VariableDeclaration","scope":4103,"src":"4728:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4094,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4095,"nodeType":"ArrayTypeName","src":"4728:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4696:65:16"},"returnParameters":{"id":4102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4103,"src":"4785:43:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":4099,"nodeType":"UserDefinedTypeName","pathNode":{"id":4098,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["4785:19:16","4805:14:16"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"4785:34:16"},"referencedDeclaration":4181,"src":"4785:34:16","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":4100,"nodeType":"ArrayTypeName","src":"4785:36:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4181_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"src":"4784:45:16"},"scope":4157,"src":"4669:161:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d13660e","id":4113,"implemented":false,"kind":"function","modifiers":[],"name":"getPermissionDetails","nameLocation":"4844:20:16","nodeType":"FunctionDefinition","parameters":{"id":4108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4105,"mutability":"mutable","name":"user","nameLocation":"4882:4:16","nodeType":"VariableDeclaration","scope":4113,"src":"4874:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4104,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4107,"mutability":"mutable","name":"contentId","nameLocation":"4904:9:16","nodeType":"VariableDeclaration","scope":4113,"src":"4896:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4106,"name":"uint256","nodeType":"ElementaryTypeName","src":"4896:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4864:55:16"},"returnParameters":{"id":4112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4113,"src":"4943:41:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":4110,"nodeType":"UserDefinedTypeName","pathNode":{"id":4109,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["4943:19:16","4963:14:16"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"4943:34:16"},"referencedDeclaration":4181,"src":"4943:34:16","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"src":"4942:43:16"},"scope":4157,"src":"4835:151:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"05059571","id":4122,"implemented":false,"kind":"function","modifiers":[],"name":"consumeView","nameLocation":"5000:11:16","nodeType":"FunctionDefinition","parameters":{"id":4118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4115,"mutability":"mutable","name":"user","nameLocation":"5029:4:16","nodeType":"VariableDeclaration","scope":4122,"src":"5021:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4114,"name":"address","nodeType":"ElementaryTypeName","src":"5021:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4117,"mutability":"mutable","name":"contentId","nameLocation":"5051:9:16","nodeType":"VariableDeclaration","scope":4122,"src":"5043:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4116,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5011:55:16"},"returnParameters":{"id":4121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4122,"src":"5085:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4119,"name":"bool","nodeType":"ElementaryTypeName","src":"5085:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5084:6:16"},"scope":4157,"src":"4991:100:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"529e2b32","id":4134,"implemented":false,"kind":"function","modifiers":[],"name":"batchConsumeView","nameLocation":"5105:16:16","nodeType":"FunctionDefinition","parameters":{"id":4129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4125,"mutability":"mutable","name":"users","nameLocation":"5148:5:16","nodeType":"VariableDeclaration","scope":4134,"src":"5131:22:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4123,"name":"address","nodeType":"ElementaryTypeName","src":"5131:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4124,"nodeType":"ArrayTypeName","src":"5131:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4128,"mutability":"mutable","name":"contentIds","nameLocation":"5180:10:16","nodeType":"VariableDeclaration","scope":4134,"src":"5163:27:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4126,"name":"uint256","nodeType":"ElementaryTypeName","src":"5163:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4127,"nodeType":"ArrayTypeName","src":"5163:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5121:75:16"},"returnParameters":{"id":4133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4134,"src":"5215:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":4130,"name":"bool","nodeType":"ElementaryTypeName","src":"5215:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4131,"nodeType":"ArrayTypeName","src":"5215:6:16","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"5214:15:16"},"scope":4157,"src":"5096:134:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":4137,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"5280:5:16","nodeType":"FunctionDefinition","parameters":{"id":4135,"nodeType":"ParameterList","parameters":[],"src":"5285:2:16"},"returnParameters":{"id":4136,"nodeType":"ParameterList","parameters":[],"src":"5296:0:16"},"scope":4157,"src":"5271:26:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":4140,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"5311:7:16","nodeType":"FunctionDefinition","parameters":{"id":4138,"nodeType":"ParameterList","parameters":[],"src":"5318:2:16"},"returnParameters":{"id":4139,"nodeType":"ParameterList","parameters":[],"src":"5329:0:16"},"scope":4157,"src":"5302:28:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b8e8f98e","id":4148,"implemented":false,"kind":"function","modifiers":[],"name":"getContentPurchaseInfo","nameLocation":"5376:22:16","nodeType":"FunctionDefinition","parameters":{"id":4143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4142,"mutability":"mutable","name":"contentId","nameLocation":"5416:9:16","nodeType":"VariableDeclaration","scope":4148,"src":"5408:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4141,"name":"uint256","nodeType":"ElementaryTypeName","src":"5408:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5398:33:16"},"returnParameters":{"id":4147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4148,"src":"5455:26:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ContentPurchaseInfo_$3823_memory_ptr","typeString":"struct IVideoPayment.ContentPurchaseInfo"},"typeName":{"id":4145,"nodeType":"UserDefinedTypeName","pathNode":{"id":4144,"name":"ContentPurchaseInfo","nameLocations":["5455:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":3823,"src":"5455:19:16"},"referencedDeclaration":3823,"src":"5455:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_ContentPurchaseInfo_$3823_storage_ptr","typeString":"struct IVideoPayment.ContentPurchaseInfo"}},"visibility":"internal"}],"src":"5454:28:16"},"scope":4157,"src":"5367:116:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":4153,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"5523:7:16","nodeType":"FunctionDefinition","parameters":{"id":4149,"nodeType":"ParameterList","parameters":[],"src":"5530:2:16"},"returnParameters":{"id":4152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4153,"src":"5556:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4150,"name":"uint256","nodeType":"ElementaryTypeName","src":"5556:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5555:9:16"},"scope":4157,"src":"5514:51:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8fd3ab80","id":4156,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nameLocation":"5579:7:16","nodeType":"FunctionDefinition","parameters":{"id":4154,"nodeType":"ParameterList","parameters":[],"src":"5586:2:16"},"returnParameters":{"id":4155,"nodeType":"ParameterList","parameters":[],"src":"5597:0:16"},"scope":4157,"src":"5570:28:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4158,"src":"182:5418:16","usedErrors":[3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847],"usedEvents":[3859,3870,3880,3888,3894,3904,3908,3912,3916,3924,3928,3932,3934,3936,3942]}],"src":"32:5569:16"},"id":16},"contracts/libraries/VideoPaymentStorage.sol":{"ast":{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","exportedSymbols":{"VideoPaymentStorage":[4226]},"id":4227,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4159,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"VideoPaymentStorage","contractDependencies":[],"contractKind":"library","documentation":{"id":4160,"nodeType":"StructuredDocumentation","src":"58:118:17","text":" @title VideoPaymentStorage\n @dev Storage layout for VideoPayment contract to ensure upgrade compatibility"},"fullyImplemented":true,"id":4226,"linearizedBaseContracts":[4226],"name":"VideoPaymentStorage","nameLocation":"185:19:17","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4163,"mutability":"constant","name":"STORAGE_VERSION","nameLocation":"284:15:17","nodeType":"VariableDeclaration","scope":4226,"src":"267:36:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4161,"name":"uint256","nodeType":"ElementaryTypeName","src":"267:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":4162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"302:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"canonicalName":"VideoPaymentStorage.ContentConfig","id":4174,"members":[{"constant":false,"id":4167,"mutability":"mutable","name":"tokenPrices","nameLocation":"369:11:17","nodeType":"VariableDeclaration","scope":4174,"src":"341:39:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4166,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4164,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"341:27:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4165,"name":"uint256","nodeType":"ElementaryTypeName","src":"360:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":4169,"mutability":"mutable","name":"nativePrice","nameLocation":"420:11:17","nodeType":"VariableDeclaration","scope":4174,"src":"412:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4168,"name":"uint256","nodeType":"ElementaryTypeName","src":"412:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4171,"mutability":"mutable","name":"viewCount","nameLocation":"470:9:17","nodeType":"VariableDeclaration","scope":4174,"src":"462:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4170,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4173,"mutability":"mutable","name":"isActive","nameLocation":"523:8:17","nodeType":"VariableDeclaration","scope":4174,"src":"518:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4172,"name":"bool","nodeType":"ElementaryTypeName","src":"518:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ContentConfig","nameLocation":"317:13:17","nodeType":"StructDefinition","scope":4226,"src":"310:262:17","visibility":"public"},{"canonicalName":"VideoPaymentStorage.ViewPermission","id":4181,"members":[{"constant":false,"id":4176,"mutability":"mutable","name":"purchaseTime","nameLocation":"618:12:17","nodeType":"VariableDeclaration","scope":4181,"src":"610:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4175,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4178,"mutability":"mutable","name":"remainingViews","nameLocation":"670:14:17","nodeType":"VariableDeclaration","scope":4181,"src":"662:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4177,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4180,"mutability":"mutable","name":"isValid","nameLocation":"723:7:17","nodeType":"VariableDeclaration","scope":4181,"src":"718:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4179,"name":"bool","nodeType":"ElementaryTypeName","src":"718:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ViewPermission","nameLocation":"585:14:17","nodeType":"StructDefinition","scope":4226,"src":"578:190:17","visibility":"public"},{"canonicalName":"VideoPaymentStorage.VideoPaymentStorageStruct","id":4225,"members":[{"constant":false,"id":4183,"mutability":"mutable","name":"owner","nameLocation":"863:5:17","nodeType":"VariableDeclaration","scope":4225,"src":"855:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4182,"name":"address","nodeType":"ElementaryTypeName","src":"855:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4187,"mutability":"mutable","name":"isAdmin","nameLocation":"903:7:17","nodeType":"VariableDeclaration","scope":4225,"src":"878:32:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4186,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4184,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"878:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4185,"name":"bool","nodeType":"ElementaryTypeName","src":"897:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4192,"mutability":"mutable","name":"contentConfigs","nameLocation":"984:14:17","nodeType":"VariableDeclaration","scope":4225,"src":"950:48:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)"},"typeName":{"id":4191,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"958:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"950:33:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4174_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4190,"nodeType":"UserDefinedTypeName","pathNode":{"id":4189,"name":"ContentConfig","nameLocations":["969:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":4174,"src":"969:13:17"},"referencedDeclaration":4174,"src":"969:13:17","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4174_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig"}}},"visibility":"internal"},{"constant":false,"id":4199,"mutability":"mutable","name":"userPermissions","nameLocation":"1091:15:17","nodeType":"VariableDeclaration","scope":4225,"src":"1036:70:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))"},"typeName":{"id":4198,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4193,"name":"address","nodeType":"ElementaryTypeName","src":"1044:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1036:54:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4197,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4194,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1055:34:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4181_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4196,"nodeType":"UserDefinedTypeName","pathNode":{"id":4195,"name":"ViewPermission","nameLocations":["1074:14:17"],"nodeType":"IdentifierPath","referencedDeclaration":4181,"src":"1074:14:17"},"referencedDeclaration":4181,"src":"1074:14:17","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4181_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}}}},"visibility":"internal"},{"constant":false,"id":4203,"mutability":"mutable","name":"supportedTokens","nameLocation":"1177:15:17","nodeType":"VariableDeclaration","scope":4225,"src":"1152:40:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4202,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4200,"name":"address","nodeType":"ElementaryTypeName","src":"1160:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1152:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4201,"name":"bool","nodeType":"ElementaryTypeName","src":"1171:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4206,"mutability":"mutable","name":"allSupportedTokens","nameLocation":"1249:18:17","nodeType":"VariableDeclaration","scope":4225,"src":"1239:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4204,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4205,"nodeType":"ArrayTypeName","src":"1239:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4210,"mutability":"mutable","name":"tokenExists","nameLocation":"1302:11:17","nodeType":"VariableDeclaration","scope":4225,"src":"1277:36:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4209,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4207,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1277:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4208,"name":"bool","nodeType":"ElementaryTypeName","src":"1296:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"tokenIndexes","nameLocation":"1351:12:17","nodeType":"VariableDeclaration","scope":4225,"src":"1323:40:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4213,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4211,"name":"address","nodeType":"ElementaryTypeName","src":"1331:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1323:27:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4212,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":4216,"mutability":"mutable","name":"paused","nameLocation":"1430:6:17","nodeType":"VariableDeclaration","scope":4225,"src":"1425:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4215,"name":"bool","nodeType":"ElementaryTypeName","src":"1425:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4218,"mutability":"mutable","name":"version","nameLocation":"1482:7:17","nodeType":"VariableDeclaration","scope":4225,"src":"1474:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4217,"name":"uint256","nodeType":"ElementaryTypeName","src":"1474:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4220,"mutability":"mutable","name":"treasury","nameLocation":"1546:8:17","nodeType":"VariableDeclaration","scope":4225,"src":"1530:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4219,"name":"address","nodeType":"ElementaryTypeName","src":"1530:15:17","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":4224,"mutability":"mutable","name":"__gap","nameLocation":"1630:5:17","nodeType":"VariableDeclaration","scope":4225,"src":"1618:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage_ptr","typeString":"uint256[47]"},"typeName":{"baseType":{"id":4221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1618:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4223,"length":{"hexValue":"3437","id":4222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1626:2:17","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"nodeType":"ArrayTypeName","src":"1618:11:17","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage_ptr","typeString":"uint256[47]"}},"visibility":"internal"}],"name":"VideoPaymentStorageStruct","nameLocation":"781:25:17","nodeType":"StructDefinition","scope":4226,"src":"774:868:17","visibility":"public"}],"scope":4227,"src":"177:1467:17","usedErrors":[],"usedEvents":[]}],"src":"32:1613:17"},"id":17}},"contracts":{"@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"}],"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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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":"FailedCall","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."}],"FailedCall()":[{"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 ERC-1822 {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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"FailedCall\",\"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.\"}],\"FailedCall()\":[{\"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 ERC-1822 {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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.22;\\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\\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 ERC-1967.\\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\",\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\",\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\",\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@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\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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"}],"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 EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. 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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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 EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. 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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\\n * consider using {ReentrancyGuardTransient} instead.\\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\",\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"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":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.","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":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"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\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"IERC5313":{"abi":[{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract","kind":"dev","methods":{"owner()":{"details":"Gets the address of the owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Gets the address of the owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":\"IERC5313\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5313.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface for the Light Contract Ownership Standard.\\n *\\n * A standardized minimal interface required to identify an account that controls a contract\\n */\\ninterface IERC5313 {\\n    /**\\n     * @dev Gets the address of the owner.\\n     */\\n    function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x22412c268e74cc3cbf550aecc2f7456f6ac40783058e219cfe09f26f4d396621\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC-1822: 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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: 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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\",\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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"}],"devdoc":{"details":"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] 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."}]},"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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022847971b68d3f02ab2706ccb72ce50431612c2868d671241bc78f865e79703964736f6c634300081c0033","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 0x22 DUP5 PUSH26 0x71B68D3F02AB2706CCB72CE50431612C2868D671241BC78F865E PUSH26 0x703964736F6C634300081C003300000000000000000000000000 ","sourceMap":"496:5741:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022847971b68d3f02ab2706ccb72ce50431612c2868d671241bc78f865e79703964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 DUP5 PUSH26 0x71B68D3F02AB2706CCB72CE50431612C2868D671241BC78F865E PUSH26 0x703964736F6C634300081C003300000000000000000000000000 ","sourceMap":"496:5741:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_checkNonPayable()":"infinite","_setAdmin(address)":"infinite","_setBeacon(address)":"infinite","_setImplementation(address)":"infinite","changeAdmin(address)":"infinite","getAdmin()":"infinite","getBeacon()":"infinite","getImplementation()":"infinite","upgradeBeaconToAndCall(address,bytes memory)":"infinite","upgradeToAndCall(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] 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.\"}]},\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\",\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@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\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@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\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"IERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","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"}],"devdoc":{"details":"Required interface of an ERC-1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[ERC].","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the value of tokens of token type `id` owned by `account`."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. Requirements: - `ids` and `values` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers a `value` amount of tokens of type `id` from `from` to `to`. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `value` amount. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address."},"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"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\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[ERC].\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the value of tokens of token type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. Requirements: - `ids` and `values` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers a `value` amount of tokens of type `id` from `from` to `to`. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `value` amount. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address.\"},\"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[ERC 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/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(\\n        address[] calldata accounts,\\n        uint256[] calldata ids\\n    ) external view returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the zero address.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `values` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1d7a05b3219532ea5ece50a80cf390cac9109dc74e07763adfa463ab5a3af0dc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\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[ERC 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\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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"}],"devdoc":{"details":"Interface of the ERC-20 standard as defined in the ERC.","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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"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.28+commit.7893614a\"},\"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 ERC-20 standard as defined in the ERC.\",\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\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\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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"}],"devdoc":{"details":"Required interface of an ERC-721 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 ERC-721 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[ERC 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 ERC-721 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},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"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.28+commit.7893614a\"},\"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 ERC-721 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 ERC-721 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[ERC 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 ERC-721 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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-721 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 ERC-721 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 ERC-721\\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\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\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[ERC 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\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","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)."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032abaa8d7f9526098c687a0eb3385187e3092d2f49acaf84971fc5d33e5af8fc64736f6c634300081c0033","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 ORIGIN 0xAB 0xAA DUP14 PUSH32 0x9526098C687A0EB3385187E3092D2F49ACAF84971FC5D33E5AF8FC64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5815:11;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032abaa8d7f9526098c687a0eb3385187e3092d2f49acaf84971fc5d33e5af8fc64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xAB 0xAA DUP14 PUSH32 0x9526098C687A0EB3385187E3092D2F49ACAF84971FC5D33E5AF8FC64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:11:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_revert(bytes memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"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).\"}]},\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Errors.sol":{"Errors":{"abi":[{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MissingPrecompile","type":"error"}],"devdoc":{"details":"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._","errors":{"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"FailedDeployment()":[{"details":"The deployment failed."}],"InsufficientBalance(uint256,uint256)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"MissingPrecompile(address)":[{"details":"A necessary precompile is missing."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220259c4ceb6c173d6d4c4529438df318e4897f957e032daec1447fd0731f0fefd164736f6c634300081c0033","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 0x25 SWAP13 0x4C 0xEB PUSH13 0x173D6D4C4529438DF318E4897F SWAP6 PUSH31 0x32DAEC1447FD0731F0FEFD164736F6C634300081C00330000000000000000 ","sourceMap":"411:484:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:12;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220259c4ceb6c173d6d4c4529438df318e4897f957e032daec1447fd0731f0fefd164736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 SWAP13 0x4C 0xEB PUSH13 0x173D6D4C4529438DF318E4897F SWAP6 PUSH31 0x32DAEC1447FD0731F0FEFD164736F6C634300081C00330000000000000000 ","sourceMap":"411:484:12:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"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 ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     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;     } } ``` TIP: Consider using this library along with {SlotDerivation}.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dff66893ddc142b9d665aaff4e4b6f8fc32de1de1024d2f2e2f2d73d2c6bab664736f6c634300081c0033","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 TSTORE SELFDESTRUCT PUSH7 0x893DDC142B9D66 GAS 0xAF DELEGATECALL 0xE4 0xB6 0xF8 0xFC ORIGIN 0xDE SAR 0xE1 MUL 0x4D 0x2F 0x2E 0x2F 0x2D PUSH20 0xD2C6BAB664736F6C634300081C00330000000000 ","sourceMap":"1407:2774:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dff66893ddc142b9d665aaff4e4b6f8fc32de1de1024d2f2e2f2d73d2c6bab664736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TSTORE SELFDESTRUCT PUSH7 0x893DDC142B9D66 GAS 0xAF DELEGATECALL 0xE4 0xB6 0xF8 0xFC ORIGIN 0xDE SAR 0xE1 MUL 0x4D 0x2F 0x2E 0x2F 0x2D PUSH20 0xD2C6BAB664736F6C634300081C00330000000000 ","sourceMap":"1407:2774:13:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getInt256Slot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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 ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     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;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"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"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. 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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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 ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. 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[ERC 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\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\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[ERC 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\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/VideoPayment.sol":{"VideoPayment":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"AlreadyPurchased","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContent","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NoValidPermission","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","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":"UnsupportedToken","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"ContentConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"}],"name":"ContentPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTPurchased","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"PermissionExpired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryUpdated","type":"event"},{"anonymous":false,"inputs":[],"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":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingViews","type":"uint256"}],"name":"ViewConsumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"addedCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRemaining","type":"uint256"}],"name":"ViewCountAdded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchConsumeView","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"batchPurchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"},{"internalType":"uint256[]","name":"viewCounts","type":"uint256[]"},{"internalType":"bool[]","name":"isActiveArray","type":"bool[]"}],"name":"batchSetContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchSetContentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"consumeView","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllSupportedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getContentPurchaseInfo","outputs":[{"components":[{"internalType":"uint256","name":"viewCount","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"address[]","name":"supportedTokens","type":"address[]"},{"internalType":"uint256[]","name":"tokenPrices","type":"uint256[]"},{"internalType":"bool","name":"isUnlimitedViewing","type":"bool"}],"internalType":"struct IVideoPayment.ContentPurchaseInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getPermissionDetails","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"getUserPermissions","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"hasViewPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address[]","name":"initialAdmins","type":"address[]"},{"internalType":"address[]","name":"supportedTokenAddresses","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"isContentActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isSupportedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseContent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"purchaseWithNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"viewCount","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"name":"setContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setContentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTreasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Main contract for video content payment and access control","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."}],"FailedCall()":[{"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."}],"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":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"addAdmin(address)":{"details":"Add admin","params":{"admin":"Admin address to add"}},"addSupportedToken(address)":{"details":"Add supported token (address(0) for native token)","params":{"token":"Token address to add (address(0) for native)"}},"batchConsumeView(address[],uint256[])":{"details":"Batch consume views for multiple users","params":{"contentIds":"Content ID array","users":"User address array"},"returns":{"_0":"Success status array"}},"batchPurchase(uint256[],address,uint256)":{"details":"Batch purchase content with token (address(0) for native token)","params":{"contentIds":"Content ID array","paymentToken":"Payment token address (address(0) for native)","totalAmount":"Total payment amount"}},"batchSetContentConfig(uint256[],address,uint256[],uint256[],bool[])":{"details":"Batch set content configurations","params":{"contentIds":"Content ID array","isActiveArray":"Active status array","prices":"Price array","token":"Token address (address(0) for native)","viewCounts":"View count array"}},"batchSetContentPrice(uint256[],address,uint256[])":{"details":"Batch set content prices for multiple contents (address(0) for native token)","params":{"contentIds":"Content ID array","prices":"Price array","token":"Token address (address(0) for native)"}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"consumeView(address,uint256)":{"details":"Consume one view for user","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Success status"}},"getAllSupportedTokens()":{"details":"Get all supported tokens","returns":{"_0":"All supported token addresses"}},"getContentPurchaseInfo(uint256)":{"details":"Get content purchase information","params":{"contentId":"Content ID"},"returns":{"_0":"Purchase information including supported tokens and prices"}},"getPermissionDetails(address,uint256)":{"details":"Get detailed permission info","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Permission details"}},"getTreasury()":{"details":"Get current treasury address","returns":{"_0":"Current treasury address"}},"getUserPermissions(address,uint256[])":{"details":"Get user permissions for multiple contents","params":{"contentIds":"Content ID array","user":"User address"},"returns":{"_0":"Permission array"}},"hasViewPermission(address,uint256)":{"details":"Check if user has valid view permission","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Whether user has valid permission"}},"initialize(address,address[],address[])":{"details":"Initialize the contract","params":{"initialAdmins":"Initial admin addresses array","initialOwner":"Initial owner address","supportedTokenAddresses":"Initial supported token addresses array"}},"isAdmin(address)":{"details":"Check if address is admin","params":{"account":"Address to check"},"returns":{"_0":"Whether address is admin"}},"isContentActive(uint256)":{"details":"Check if content is active","params":{"contentId":"Content ID"},"returns":{"_0":"Whether content is active"}},"isSupportedToken(address)":{"details":"Check if token is supported","params":{"token":"Token address to check"},"returns":{"_0":"Whether token is supported"}},"migrate()":{"details":"Migration function for future upgrades"},"owner()":{"details":"Get current owner address","returns":{"_0":"Current owner address"}},"pause()":{"details":"Pause contract"},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {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."},"purchaseContent(uint256,address,uint256)":{"details":"Purchase content with token (address(0) for native token)","params":{"amount":"Payment amount","contentId":"Content ID","paymentToken":"Payment token address (address(0) for native)"}},"purchaseWithNFT(uint256,address,uint256)":{"details":"Purchase content with NFT","params":{"contentId":"Content ID","nftContract":"NFT contract address","tokenId":"NFT token ID"}},"removeAdmin(address)":{"details":"Remove admin","params":{"admin":"Admin address to remove"}},"removeSupportedToken(address)":{"details":"Remove supported token (address(0) for native token)","params":{"token":"Token address to remove (address(0) for native)"}},"setContentConfig(uint256,address,uint256,uint256,bool)":{"details":"Set content configuration","params":{"contentId":"Content ID","isActive":"Whether content is active","price":"Token price","token":"Token address (address(0) for native)","viewCount":"View count"}},"setContentPrice(uint256,address,uint256)":{"details":"Set content price for specific token (address(0) for native token)","params":{"contentId":"Content ID","price":"New price","token":"Token address (address(0) for native)"}},"setTreasury(address)":{"details":"Set treasury address for receiving payments","params":{"newTreasury":"New treasury address"}},"unpause()":{"details":"Unpause contract"},"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()":{"details":"Get contract version"}},"title":"VideoPayment","version":1},"evm":{"bytecode":{"functionDebugData":{"@_1749":{"entryPoint":null,"id":1749,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_221":{"entryPoint":34,"id":221,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_266":{"entryPoint":null,"id":266,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:216:18","nodeType":"YulBlock","src":"0:216:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"113:101:18","nodeType":"YulBlock","src":"113:101:18","statements":[{"nativeSrc":"123:26:18","nodeType":"YulAssignment","src":"123:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:18","nodeType":"YulIdentifier","src":"135:9:18"},{"kind":"number","nativeSrc":"146:2:18","nodeType":"YulLiteral","src":"146:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:18","nodeType":"YulIdentifier","src":"131:3:18"},"nativeSrc":"131:18:18","nodeType":"YulFunctionCall","src":"131:18:18"},"variableNames":[{"name":"tail","nativeSrc":"123:4:18","nodeType":"YulIdentifier","src":"123:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:18","nodeType":"YulIdentifier","src":"165:9:18"},{"arguments":[{"name":"value0","nativeSrc":"180:6:18","nodeType":"YulIdentifier","src":"180:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:18","nodeType":"YulLiteral","src":"196:2:18","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:18","nodeType":"YulLiteral","src":"200:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:18","nodeType":"YulIdentifier","src":"192:3:18"},"nativeSrc":"192:10:18","nodeType":"YulFunctionCall","src":"192:10:18"},{"kind":"number","nativeSrc":"204:1:18","nodeType":"YulLiteral","src":"204:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:18","nodeType":"YulIdentifier","src":"188:3:18"},"nativeSrc":"188:18:18","nodeType":"YulFunctionCall","src":"188:18:18"}],"functionName":{"name":"and","nativeSrc":"176:3:18","nodeType":"YulIdentifier","src":"176:3:18"},"nativeSrc":"176:31:18","nodeType":"YulFunctionCall","src":"176:31:18"}],"functionName":{"name":"mstore","nativeSrc":"158:6:18","nodeType":"YulIdentifier","src":"158:6:18"},"nativeSrc":"158:50:18","nodeType":"YulFunctionCall","src":"158:50:18"},"nativeSrc":"158:50:18","nodeType":"YulExpressionStatement","src":"158:50:18"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:18","nodeType":"YulTypedName","src":"82:9:18","type":""},{"name":"value0","nativeSrc":"93:6:18","nodeType":"YulTypedName","src":"93:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:18","nodeType":"YulTypedName","src":"104:4:18","type":""}],"src":"14:200:18"}]},"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":18,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516139a06100fd600039600081816127f20152818161281b015261298701526139a06000f3fe6080604052600436106101e35760003560e01c8063704802751161010257806399ea24fe11610095578063b6f4fe9811610064578063b6f4fe98146105cf578063b8e8f98e146105ef578063caae24b31461061c578063f0f442601461063c57600080fd5b806399ea24fe1461053e578063ad3cb1cc14610551578063b303f53f1461058f578063b6f1d140146105bc57600080fd5b80638d13660e116100d15780638d13660e146104be5780638da5cb5b146104eb5780638fd3ab80146105095780639981007b1461051e57600080fd5b8063704802751461044957806376319190146104695780638456cb5914610489578063867786411461049e57600080fd5b80633f4ba83a1161017a578063529e2b3211610149578063529e2b32146103c457806352d1902d146103f157806354fd4d50146104145780636d69fcaf1461042957600080fd5b80633f4ba83a1461034957806340033b3d1461035e5780634a200fa5146103915780634f1ef286146103b157600080fd5b8063240028e8116101b6578063240028e81461028557806324d7806c146102be578063277148e3146102f75780633b19e84a1461031757600080fd5b80630107e472146101e8578063022360261461021357806305059571146102355780631785f53c14610265575b600080fd5b3480156101f457600080fd5b506101fd61065c565b60405161020a9190612f9f565b60405180910390f35b34801561021f57600080fd5b5061023361022e36600461300e565b6106c1565b005b34801561024157600080fd5b50610255610250366004613064565b6107bb565b604051901515815260200161020a565b34801561027157600080fd5b50610233610280366004613090565b610959565b34801561029157600080fd5b506102556102a0366004613090565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156102ca57600080fd5b506102556102d9366004613090565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561030357600080fd5b506102336103123660046131ea565b6109f4565b34801561032357600080fd5b50600a546001600160a01b03165b6040516001600160a01b03909116815260200161020a565b34801561035557600080fd5b50610233610c7e565b34801561036a57600080fd5b506102556103793660046132b9565b60009081526002602052604090206003015460ff1690565b34801561039d57600080fd5b506102336103ac366004613339565b610cde565b6102336103bf3660046133b2565b611149565b3480156103d057600080fd5b506103e46103df36600461345d565b611168565b60405161020a91906134c4565b3480156103fd57600080fd5b506104066114fe565b60405190815260200161020a565b34801561042057600080fd5b50600954610406565b34801561043557600080fd5b50610233610444366004613090565b61151b565b34801561045557600080fd5b50610233610464366004613090565b61162a565b34801561047557600080fd5b50610233610484366004613090565b6116cb565b34801561049557600080fd5b50610233611879565b3480156104aa57600080fd5b506102336104b93660046134fe565b6118dc565b3480156104ca57600080fd5b506104de6104d9366004613064565b611aa1565b60405161020a9190613536565b3480156104f757600080fd5b506000546001600160a01b0316610331565b34801561051557600080fd5b50610233611b1a565b34801561052a57600080fd5b506102336105393660046134fe565b611ba5565b61023361054c366004613559565b611c96565b34801561055d57600080fd5b50610582604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161020a91906135c5565b34801561059b57600080fd5b506105af6105aa3660046135f8565b61201d565b60405161020a9190613631565b6102336105ca3660046134fe565b612138565b3480156105db57600080fd5b506102336105ea36600461368a565b612414565b3480156105fb57600080fd5b5061060f61060a3660046132b9565b6125ea565b60405161020a9190613735565b34801561062857600080fd5b50610255610637366004613064565b612677565b34801561064857600080fd5b50610233610657366004613090565b612702565b606060006005018054806020026020016040519081016040528092919081815260200182805480156106b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610699575b5050505050905090565b3360009081526001602052604090205460ff166106f157604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03841660009081526004602052604090205460ff1661072a5760405163350b944160e11b815260040160405180910390fd5b60008581526002602081815260408084206001600160a01b03891680865281845291852088905593899052908290529082018490556003909101805460ff19168315151790556107895760008581526002602052604090206001018390555b60405185907fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426690600090a25050505050565b3360009081526001602052604081205460ff166107eb57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526003602090815260408083208584529091529020600281015460ff166108335760405163fcd7a1b560e01b815260040160405180910390fd5b6000838152600260208190526040822001549081900361088b5783856001600160a01b031660008051602061390b833981519152600060405161087891815260200190565b60405180910390a3600192505050610953565b81600101546000036108b05760405163fcd7a1b560e01b815260040160405180910390fd5b6001820180549060006108c2836137eb565b919050555083856001600160a01b031660008051602061390b83398151915284600101546040516108f591815260200190565b60405180910390a3816001015460000361094c5760028201805460ff1916905560405184906001600160a01b038716907f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e90600090a35b6001925050505b92915050565b6000546001600160a01b03163314610984576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166109ab5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9190a250565b3360009081526001602052604090205460ff16610a2457604051637bfa4b9f60e01b815260040160405180910390fd5b82518551141580610a3757508151855114155b80610a4457508051855114155b15610a625760405163512509d360e11b815260040160405180910390fd5b6001600160a01b03841660009081526004602052604090205460ff16610a9b5760405163350b944160e11b815260040160405180910390fd5b60005b8551811015610c7657838181518110610ab957610ab9613802565b602002602001015160006002016000888481518110610ada57610ada613802565b602002602001015181526020019081526020016000206000016000876001600160a01b03166001600160a01b0316815260200190815260200160002081905550828181518110610b2c57610b2c613802565b602002602001015160006002016000888481518110610b4d57610b4d613802565b6020026020010151815260200190815260200160002060020181905550818181518110610b7c57610b7c613802565b602002602001015160006002016000888481518110610b9d57610b9d613802565b6020908102919091018101518252810191909152604001600020600301805460ff19169115159190911790556001600160a01b038516610c2857838181518110610be957610be9613802565b602002602001015160006002016000888481518110610c0a57610c0a613802565b60200260200101518152602001908152602001600020600101819055505b858181518110610c3a57610c3a613802565b60200260200101517fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426660405160405180910390a2600101610a9e565b505050505050565b6000546001600160a01b03163314610ca9576040516330cd747160e01b815260040160405180910390fd5b6008805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6000610ce86127a6565b805490915060ff600160401b82041615906001600160401b0316600081158015610d0f5750825b90506000826001600160401b03166001148015610d2b5750303b155b905081158015610d39575080155b15610d575760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d8157845460ff60401b1916600160401b1785555b6001600160a01b038816610da85760405163d92e233d60e01b815260040160405180910390fd5b610db06127cf565b610db86127d7565b600080546001600160a01b0319166001600160a01b038a1617815560016009556008805460ff191690555b8751811015610ed15760006001600160a01b0316888281518110610e0957610e09613802565b60200260200101516001600160a01b031614610ec9576001600060010160008a8481518110610e3a57610e3a613802565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110610e8b57610e8b613802565b60200260200101516001600160a01b03167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a25b600101610de3565b5060005b8651811015610ffc576000878281518110610ef257610ef2613802565b6020026020010151905060006001600160a01b0316816001600160a01b031614610ff3576001600160a01b03811660009081526006602052604090205460ff16610fa9576001600160a01b0381166000818152600660209081526040808320805460ff19166001908117909155600580546007909452918420839055820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690911790555b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a25b50600101610ed5565b506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166110c4577f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805460ff191660019081179091556005805460076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df81905591820181556000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690555b6000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec805460ff19166001179055831561113f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6111516127e7565b61115a8261288c565b61116482826128ba565b5050565b3360009081526001602052604090205460609060ff1661119b57604051637bfa4b9f60e01b815260040160405180910390fd5b81518351146111bd5760405163512509d360e11b815260040160405180910390fd5b600083516001600160401b038111156111d8576111d86130ad565b604051908082528060200260200182016040528015611201578160200160208202803683370190505b50905060005b84518110156114f657600080600301600087848151811061122a5761122a613802565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061126657611266613802565b6020026020010151815260200190815260200160002090508060020160009054906101000a900460ff166112be5760008383815181106112a8576112a8613802565b91151560209283029190910190910152506114ee565b60008060020160008785815181106112d8576112d8613802565b602002602001015181526020019081526020016000206002015490508060000361138a5785838151811061130e5761130e613802565b602002602001015187848151811061132857611328613802565b60200260200101516001600160a01b031660008051602061390b833981519152600060405161135991815260200190565b60405180910390a3600184848151811061137557611375613802565b911515602092830291909101909101526114eb565b81600101546000036113c35760008484815181106113aa576113aa613802565b60200260200101901515908115158152505050506114ee565b6001820180549060006113d5836137eb565b91905055508583815181106113ec576113ec613802565b602002602001015187848151811061140657611406613802565b60200260200101516001600160a01b031660008051602061390b833981519152846001015460405161143a91815260200190565b60405180910390a381600101546000036114c65760028201805460ff19169055855186908490811061146e5761146e613802565b602002602001015187848151811061148857611488613802565b60200260200101516001600160a01b03167f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e60405160405180910390a35b60018484815181106114da576114da613802565b911515602092830291909101909101525b50505b600101611207565b509392505050565b600061150861297c565b5060008051602061392b83398151915290565b3360009081526001602052604090205460ff1661154b57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff166115de576001600160a01b0381166000818152600660209081526040808320805460ff19166001908117909155600580546007909452918420839055820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690911790555b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a250565b6000546001600160a01b03163314611655576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661167c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399190a250565b3360009081526001602052604090205460ff166116fb57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600460209081526040808320805460ff19169055600690915290205460ff1615611842576001600160a01b03811660009081526007602052604081205460055490919061175990600190613818565b90508082146117e357600080600501828154811061177957611779613802565b600091825260209091200154600580546001600160a01b0390921692508291859081106117a8576117a8613802565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526007909152604090208290555b60058054806117f4576117f461382b565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252600681526040808320805460ff19169055600790915281205550505b6040516001600160a01b038216907fbea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a30690600090a250565b6000546001600160a01b031633146118a4576040516330cd747160e01b815260040160405180910390fd5b6008805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6118e46129c5565b60085460ff16156119085760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060030154839060ff1661193c5760405163ab4142cf60e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905233906001600160a01b03851690636352211e90602401602060405180830381865afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190613841565b6001600160a01b0316146119ce5760405163fcd7a1b560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b50505050611a3e33856129fd565b604080516001600160a01b038516815260208101849052859133917fd0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70910160405180910390a350611a9c600160008051602061394b83398151915255565b505050565b611ac7604051806060016040528060008152602001600081526020016000151581525090565b506001600160a01b03821660009081526003602090815260408083208484528252918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915292915050565b6000546001600160a01b03163314611b45576040516330cd747160e01b815260040160405180910390fd5b600a546001600160a01b0316611ba35760008054600a80546001600160a01b0319166001600160a01b0390921691821790556040519091907f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a908290a35b565b3360009081526001602052604090205460ff16611bd557604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611c0e5760405163350b944160e11b815260040160405180910390fd5b60008381526002602090815260408083206001600160a01b0386168085529252909120829055611c4d5760008381526002602052604090206001018190555b816001600160a01b0316837f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca983604051611c8991815260200190565b60405180910390a3505050565b611c9e6129c5565b60085460ff1615611cc25760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611cfb5760405163350b944160e11b815260040160405180910390fd5b6000805b8451811015611e1e5760006002016000868381518110611d2157611d21613802565b60209081029190910181015182528101919091526040016000206003015460ff16611d5f5760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b038416611db25760006002016000868381518110611d8657611d86613802565b602002602001015181526020019081526020016000206001015482611dab919061385e565b9150611e16565b60006002016000868381518110611dcb57611dcb613802565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b031681526020019081526020016000205482611e13919061385e565b91505b600101611cff565b50808214611e3f5760405163cd1c886760e01b815260040160405180910390fd5b6001600160a01b038316611ee757813414611e6d5760405163cd1c886760e01b815260040160405180910390fd5b600a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611eba576040519150601f19603f3d011682016040523d82523d6000602084013e611ebf565b606091505b5050905080611ee1576040516312171d8360e31b815260040160405180910390fd5b50611f88565b600a546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018490526000918516906323b872dd906064016020604051808303816000875af1158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613871565b905080611f86576040516312171d8360e31b815260040160405180910390fd5b505b60005b8451811015611fbf57611fb733868381518110611faa57611faa613802565b60200260200101516129fd565b600101611f8b565b50336001600160a01b03167f2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d858585604051611ffd9392919061388e565b60405180910390a250611a9c600160008051602061394b83398151915255565b6060600082516001600160401b0381111561203a5761203a6130ad565b60405190808252806020026020018201604052801561209157816020015b61207e604051806060016040528060008152602001600081526020016000151581525090565b8152602001906001900390816120585790505b50905060005b83518110156114f6576001600160a01b038516600090815260036020526040812085519091908690849081106120cf576120cf613802565b60209081029190910181015182528181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff16151590820152825183908390811061212557612125613802565b6020908102919091010152600101612097565b6121406129c5565b60085460ff16156121645760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060030154839060ff166121985760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff166121d15760405163350b944160e11b815260040160405180910390fd5b60006001600160a01b0384166122ae57506000848152600260205260409020600101543481146122145760405163cd1c886760e01b815260040160405180910390fd5b3483146122345760405163cd1c886760e01b815260040160405180910390fd5b600a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612281576040519150601f19603f3d011682016040523d82523d6000602084013e612286565b606091505b50509050806122a8576040516312171d8360e31b815260040160405180910390fd5b50612393565b5060008481526002602090815260408083206001600160a01b03871684529091529020548281146122f25760405163cd1c886760e01b815260040160405180910390fd5b600a546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018590526000918616906323b872dd906064016020604051808303816000875af115801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613871565b905080612391576040516312171d8360e31b815260040160405180910390fd5b505b61239d33866129fd565b6000858152600260208181526040928390209091015482516001600160a01b0388168152918201869052818301529051869133917fb46dc51df9908947f62607b9c4761b3ab411f6da0bb32c44477b87ac8775d8be9181900360600190a35050611a9c600160008051602061394b83398151915255565b3360009081526001602052604090205460ff1661244457604051637bfa4b9f60e01b815260040160405180910390fd5b80518351146124665760405163512509d360e11b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff1661249f5760405163350b944160e11b815260040160405180910390fd5b60005b83518110156125e4578181815181106124bd576124bd613802565b6020026020010151600060020160008684815181106124de576124de613802565b602090810291909101810151825281810192909252604090810160009081206001600160a01b038816808352935220919091556125665781818151811061252757612527613802565b60200260200101516000600201600086848151811061254857612548613802565b60200260200101518152602001908152602001600020600101819055505b826001600160a01b031684828151811061258257612582613802565b60200260200101517f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca98484815181106125bd576125bd613802565b60200260200101516040516125d491815260200190565b60405180910390a36001016124a2565b50505050565b6126206040518060a001604052806000815260200160001515815260200160608152602001606081526020016000151581525090565b6000828152600260205260408120908061263985612b16565b6040805160a081018252600287015480825260039097015460ff16151560208201529081019290925260608201529215608084015250909392505050565b6001600160a01b038216600090815260036020908152604080832084845282528083208151606081018352815481526001820154938101939093526002015460ff1615159082018190526126cf576000915050610953565b600083815260026020819052604082200154908190036126f457600192505050610953565b506020015115159050610953565b6000546001600160a01b0316331461272d576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166127545760405163d92e233d60e01b815260040160405180910390fd5b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a90600090a35050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610953565b611ba3612d80565b6127df612d80565b611ba3612da5565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061286e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661286260008051602061392b833981519152546001600160a01b031690565b6001600160a01b031614155b15611ba35760405163703e46dd60e11b815260040160405180910390fd5b6000546001600160a01b031633146128b7576040516330cd747160e01b815260040160405180910390fd5b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612914575060408051601f3d908101601f19168201909252612911918101906138bc565b60015b61294157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b60008051602061392b833981519152811461297257604051632a87526960e21b815260048101829052602401612938565b611a9c8383612dad565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611ba35760405163703e46dd60e11b815260040160405180910390fd5b60008051602061394b8339815191528054600119016129f757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b03821660009081526003602090815260408083208484528252808320600292839052908320909101549091819003612a6b57600282015460ff1615612a495750505050565b428255600060018084019190915560028301805460ff191690911790556125e4565b600282015460ff1615612ae25780826001016000828254612a8c919061385e565b9091555050600182015460408051838152602081019290925284916001600160a01b038716917fb76abe3c068fccae7ac0f9377f48f7261dcf952179a37060c5de877a493e67b7910160405180910390a36125e4565b428255600180830182905560028301805460ff1916909117905550505050565b600160008051602061394b83398151915255565b6005546060908190600090815b81811015612bde576000806005018281548110612b4257612b42613802565b60009182526020808320909101546001600160a01b0316808352600490915260409091205490915060ff1615612bd55760006001600160a01b038216612b9a5750600087815260026020526040902060010154612bbf565b5060008781526002602090815260408083206001600160a01b03851684529091529020545b8015612bd35784612bcf816138d5565b9550505b505b50600101612b23565b50816001600160401b03811115612bf757612bf76130ad565b604051908082528060200260200182016040528015612c20578160200160208202803683370190505b509350816001600160401b03811115612c3b57612c3b6130ad565b604051908082528060200260200182016040528015612c64578160200160208202803683370190505b5092506000805b82811015612d77576000806005018281548110612c8a57612c8a613802565b60009182526020808320909101546001600160a01b0316808352600490915260409091205490915060ff1615612d6e5760006001600160a01b038216612ce25750600088815260026020526040902060010154612d07565b5060008881526002602090815260408083206001600160a01b03851684529091529020545b8015612d6c5781888581518110612d2057612d20613802565b60200260200101906001600160a01b031690816001600160a01b03168152505080878581518110612d5357612d53613802565b602090810291909101015283612d68816138d5565b9450505b505b50600101612c6b565b50505050915091565b612d88612e03565b611ba357604051631afcd79f60e31b815260040160405180910390fd5b612b02612d80565b612db682612e1d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612dfb57611a9c8282612e82565b611164612ef8565b6000612e0d6127a6565b54600160401b900460ff16919050565b806001600160a01b03163b600003612e5357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401612938565b60008051602061392b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e9f91906138ee565b600060405180830381855af49150503d8060008114612eda576040519150601f19603f3d011682016040523d82523d6000602084013e612edf565b606091505b5091509150612eef858383612f17565b95945050505050565b3415611ba35760405163b398979f60e01b815260040160405180910390fd5b606082612f2c57612f2782612f76565b612f6f565b8151158015612f4357506001600160a01b0384163b155b15612f6c57604051639996b31560e01b81526001600160a01b0385166004820152602401612938565b50805b9392505050565b805115612f865780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b602080825282518282018190526000918401906040840190835b81811015612fe05783516001600160a01b0316835260209384019390920191600101612fb9565b509095945050505050565b6001600160a01b03811681146128b757600080fd5b80151581146128b757600080fd5b600080600080600060a0868803121561302657600080fd5b85359450602086013561303881612feb565b93506040860135925060608601359150608086013561305681613000565b809150509295509295909350565b6000806040838503121561307757600080fd5b823561308281612feb565b946020939093013593505050565b6000602082840312156130a257600080fd5b8135612f6f81612feb565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130eb576130eb6130ad565b604052919050565b60006001600160401b0382111561310c5761310c6130ad565b5060051b60200190565b600082601f83011261312757600080fd5b813561313a613135826130f3565b6130c3565b8082825260208201915060208360051b86010192508583111561315c57600080fd5b602085015b83811015613179578035835260209283019201613161565b5095945050505050565b600082601f83011261319457600080fd5b81356131a2613135826130f3565b8082825260208201915060208360051b8601019250858311156131c457600080fd5b602085015b838110156131795780356131dc81613000565b8352602092830192016131c9565b600080600080600060a0868803121561320257600080fd5b85356001600160401b0381111561321857600080fd5b61322488828901613116565b955050602086013561323581612feb565b935060408601356001600160401b0381111561325057600080fd5b61325c88828901613116565b93505060608601356001600160401b0381111561327857600080fd5b61328488828901613116565b92505060808601356001600160401b038111156132a057600080fd5b6132ac88828901613183565b9150509295509295909350565b6000602082840312156132cb57600080fd5b5035919050565b600082601f8301126132e357600080fd5b81356132f1613135826130f3565b8082825260208201915060208360051b86010192508583111561331357600080fd5b602085015b8381101561317957803561332b81612feb565b835260209283019201613318565b60008060006060848603121561334e57600080fd5b833561335981612feb565b925060208401356001600160401b0381111561337457600080fd5b613380868287016132d2565b92505060408401356001600160401b0381111561339c57600080fd5b6133a8868287016132d2565b9150509250925092565b600080604083850312156133c557600080fd5b82356133d081612feb565b915060208301356001600160401b038111156133eb57600080fd5b8301601f810185136133fc57600080fd5b80356001600160401b03811115613415576134156130ad565b613428601f8201601f19166020016130c3565b81815286602083850101111561343d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806040838503121561347057600080fd5b82356001600160401b0381111561348657600080fd5b613492858286016132d2565b92505060208301356001600160401b038111156134ae57600080fd5b6134ba85828601613116565b9150509250929050565b602080825282518282018190526000918401906040840190835b81811015612fe057835115158352602093840193909201916001016134de565b60008060006060848603121561351357600080fd5b83359250602084013561352581612feb565b929592945050506040919091013590565b815181526020808301519082015260408083015115159082015260608101610953565b60008060006060848603121561356e57600080fd5b83356001600160401b0381111561358457600080fd5b61359086828701613116565b935050602084013561352581612feb565b60005b838110156135bc5781810151838201526020016135a4565b50506000910152565b60208152600082518060208401526135e48160408501602087016135a1565b601f01601f19169190910160400192915050565b6000806040838503121561360b57600080fd5b823561361681612feb565b915060208301356001600160401b038111156134ae57600080fd5b602080825282518282018190526000918401906040840190835b81811015612fe05761367483855180518252602080820151908301526040908101511515910152565b602093909301926060929092019160010161364b565b60008060006060848603121561369f57600080fd5b83356001600160401b038111156136b557600080fd5b6136c186828701613116565b93505060208401356136d281612feb565b915060408401356001600160401b038111156136ed57600080fd5b6133a886828701613116565b600081518084526020840193506020830160005b8281101561372b57815186526020958601959091019060010161370d565b5093949350505050565b60208152600060c0820183516020840152602084015115156040840152604084015160a0606085015281815180845260e086019150602083019350600092505b808310156137a05783516001600160a01b031682526020938401936001939093019290910190613775565b506060860151858203601f1901608087015292506137be81846136f9565b9250505060808401516114f660a085018215159052565b634e487b7160e01b600052601160045260246000fd5b6000816137fa576137fa6137d5565b506000190190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610953576109536137d5565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561385357600080fd5b8151612f6f81612feb565b80820180821115610953576109536137d5565b60006020828403121561388357600080fd5b8151612f6f81613000565b6060815260006138a160608301866136f9565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156138ce57600080fd5b5051919050565b6000600182016138e7576138e76137d5565b5060010190565b600082516139008184602087016135a1565b919091019291505056fe2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220ac88b5016d296e3a47d224faf1b2ba2f327a46e227dcceb3d51524e23a44130664736f6c634300081c0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x72 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 PUSH2 0xD1 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 0x39A0 PUSH2 0xFD PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x27F2 ADD MSTORE DUP2 DUP2 PUSH2 0x281B ADD MSTORE PUSH2 0x2987 ADD MSTORE PUSH2 0x39A0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70480275 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0x99EA24FE GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xB6F4FE98 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xB6F4FE98 EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xB8E8F98E EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0xCAAE24B3 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x99EA24FE EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0xB303F53F EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xB6F1D140 EQ PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8D13660E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D13660E EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4EB JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0x9981007B EQ PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70480275 EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x86778641 EQ PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x529E2B32 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x529E2B32 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x40033B3D EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x4A200FA5 EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x240028E8 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x240028E8 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x24D7806C EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x277148E3 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x107E472 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2236026 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x5059571 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x265 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x65C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x2F9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x300E JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x9F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0xC7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x379 CALLDATASIZE PUSH1 0x4 PUSH2 0x32B9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x3339 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x233 PUSH2 0x3BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33B2 JUMP JUMPDEST PUSH2 0x1149 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E4 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x345D JUMP JUMPDEST PUSH2 0x1168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x34C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x14FE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x444 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x151B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x16CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x18DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3536 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x331 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x1B1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x1BA5 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x54C CALLDATASIZE PUSH1 0x4 PUSH2 0x3559 JUMP JUMPDEST PUSH2 0x1C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x582 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 PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x35C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AF PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x201D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3631 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x2138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x5EA CALLDATASIZE PUSH1 0x4 PUSH2 0x368A JUMP JUMPDEST PUSH2 0x2414 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60F PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x32B9 JUMP JUMPDEST PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3735 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x637 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x2677 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x2702 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x5 ADD 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 0x6B7 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 0x699 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x6F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP7 MSTORE DUP2 DUP5 MSTORE SWAP2 DUP6 KECCAK256 DUP9 SWAP1 SSTORE SWAP4 DUP10 SWAP1 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP1 DUP3 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE PUSH2 0x789 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP4 SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x7EB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xFF AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x88B JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x878 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x953 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x8B0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x8C2 DUP4 PUSH2 0x37EB JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x8F5 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x94C JUMPI PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x984 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x9AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 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 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA24 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP6 MLOAD EQ ISZERO DUP1 PUSH2 0xA37 JUMPI POP DUP2 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xA44 JUMPI POP DUP1 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xA62 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 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 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0xC76 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xAB9 JUMPI PUSH2 0xAB9 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xADA JUMPI PUSH2 0xADA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB4D JUMPI PUSH2 0xB4D PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI PUSH2 0xB7C PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB9D JUMPI PUSH2 0xB9D PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0xC28 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC0A JUMPI PUSH2 0xC0A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xC3A JUMPI PUSH2 0xC3A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0xA9E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE8 PUSH2 0x27A6 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 0xD0F JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xD2B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xD39 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xD57 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 PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xD81 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xDA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB0 PUSH2 0x27CF JUMP JUMPDEST PUSH2 0xDB8 PUSH2 0x27D7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x9 SSTORE PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE09 JUMPI PUSH2 0xE09 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEC9 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 ADD PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE3A JUMPI PUSH2 0xE3A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE8B JUMPI PUSH2 0xE8B PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEF2 JUMPI PUSH2 0xEF2 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFF3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xFA9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 SWAP1 SWAP5 MSTORE SWAP2 DUP5 KECCAK256 DUP4 SWAP1 SSTORE DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xED5 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH32 0x54CDD369E4E8A8515E52CA72EC816C2101831AD1F18BF44102ED171459C9B4F8 SLOAD PUSH1 0xFF AND PUSH2 0x10C4 JUMPI PUSH32 0x54CDD369E4E8A8515E52CA72EC816C2101831AD1F18BF44102ED171459C9B4F8 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 PUSH1 0x20 MSTORE PUSH32 0x6D5257204EBE7D88FD91AE87941CB2DD9D8062B64AE5A2BD2D28EC40B9FBF6DF DUP2 SWAP1 SSTORE SWAP2 DUP3 ADD DUP2 SSTORE PUSH1 0x0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0x17EF568E3E12AB5B9C7254A8D58478811DE00F9E6EB34345ACD53BF8FD09D3EC DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x113F 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 POP JUMP JUMPDEST PUSH2 0x1151 PUSH2 0x27E7 JUMP JUMPDEST PUSH2 0x115A DUP3 PUSH2 0x288C JUMP JUMPDEST PUSH2 0x1164 DUP3 DUP3 PUSH2 0x28BA JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x119B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x11BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11D8 JUMPI PUSH2 0x11D8 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1201 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x122A JUMPI PUSH2 0x122A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1266 JUMPI PUSH2 0x1266 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x12BE JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12A8 JUMPI PUSH2 0x12A8 PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x14EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x12D8 JUMPI PUSH2 0x12D8 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0x138A JUMPI DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1328 JUMPI PUSH2 0x1328 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1359 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1375 JUMPI PUSH2 0x1375 PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH2 0x14EB JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x13C3 JUMPI PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13AA JUMPI PUSH2 0x13AA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP POP POP PUSH2 0x14EE JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x13D5 DUP4 PUSH2 0x37EB JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13EC JUMPI PUSH2 0x13EC PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1406 JUMPI PUSH2 0x1406 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x143A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x14C6 JUMPI PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP6 MLOAD DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x146E JUMPI PUSH2 0x146E PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1488 JUMPI PUSH2 0x1488 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x14DA JUMPI PUSH2 0x14DA PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1207 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1508 PUSH2 0x297C JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 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 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x15DE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 SWAP1 SWAP5 MSTORE SWAP2 DUP5 KECCAK256 DUP4 SWAP1 SSTORE DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1655 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x167C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 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 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x16FB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 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 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1842 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1759 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3818 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x17E3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1779 JUMPI PUSH2 0x1779 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x17A8 JUMPI PUSH2 0x17A8 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP1 PUSH2 0x17F4 JUMPI PUSH2 0x17F4 PUSH2 0x382B 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBEA12876694C4055C71F74308F752B9027CF3D554194000A366ABDDFC239A306 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x18A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x18E4 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1908 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x193C JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1983 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 0x19A7 SWAP2 SWAP1 PUSH2 0x3841 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x19CE JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1A3E CALLER DUP6 PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 CALLER SWAP2 PUSH32 0xD0DE3E759B6D8AE4AB8DFD56F0869B691034BF2F14B896155287E5CD61D66A70 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AC7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B45 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BA3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x4AB5BE82436D353E61CA18726E984E561F5C1CC7C6D38B29D2553C790434705A SWAP1 DUP3 SWAP1 LOG3 JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1BD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1C0E JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP3 SWAP1 SSTORE PUSH2 0x1C4D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C89 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1C9E PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CC2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1CFB JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D21 JUMPI PUSH2 0x1D21 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1DB2 JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D86 JUMPI PUSH2 0x1D86 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1DAB SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E16 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1DCB JUMPI PUSH2 0x1DCB PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x1E13 SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CFF JUMP JUMPDEST POP DUP1 DUP3 EQ PUSH2 0x1E3F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1EE7 JUMPI DUP2 CALLVALUE EQ PUSH2 0x1E6D JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLVALUE SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EBA 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 0x1EBF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1F88 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F42 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 0x1F66 SWAP2 SWAP1 PUSH2 0x3871 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1F86 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1FBF JUMPI PUSH2 0x1FB7 CALLER DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FAA JUMPI PUSH2 0x1FAA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1F8B JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BE07A645F06BFA8B189B4F0ABA9BF2109D098D03CBEDE0449641495BBA5D53D DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1FFD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x388E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x203A JUMPI PUSH2 0x203A PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2091 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x207E PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2058 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 MLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x20CF JUMPI PUSH2 0x20CF PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x2125 JUMPI PUSH2 0x2125 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2097 JUMP JUMPDEST PUSH2 0x2140 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2164 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x2198 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x21D1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x22AE JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE DUP2 EQ PUSH2 0x2214 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP4 EQ PUSH2 0x2234 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLVALUE SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2281 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 0x2286 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x22A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2393 JUMP JUMPDEST POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 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 DUP3 DUP2 EQ PUSH2 0x22F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP7 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234D 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 0x2371 SWAP2 SWAP1 PUSH2 0x3871 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2391 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x239D CALLER DUP7 PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE DUP2 DUP4 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 CALLER SWAP2 PUSH32 0xB46DC51DF9908947F62607B9C4761B3AB411F6DA0BB32C44477B87AC8775D8BE SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2444 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP4 MLOAD EQ PUSH2 0x2466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 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 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x249F JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x25E4 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24BD JUMPI PUSH2 0x24BD PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24DE JUMPI PUSH2 0x24DE PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP4 MSTORE SWAP4 MSTORE KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2566 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2527 JUMPI PUSH2 0x2527 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2548 JUMPI PUSH2 0x2548 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2582 JUMPI PUSH2 0x2582 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x25BD JUMPI PUSH2 0x25BD PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x25D4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x24A2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2620 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x2639 DUP6 PUSH2 0x2B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 DUP8 ADD SLOAD DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 SWAP8 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP3 ISZERO PUSH1 0x80 DUP5 ADD MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x26CF JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x26F4 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x953 JUMP JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO ISZERO SWAP1 POP PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x272D JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x2754 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x4AB5BE82436D353E61CA18726E984E561F5C1CC7C6D38B29D2553C790434705A SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x953 JUMP JUMPDEST PUSH2 0x1BA3 PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x27DF PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x1BA3 PUSH2 0x2DA5 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x286E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2862 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B 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 0x1BA3 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 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP 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 0x2914 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2911 SWAP2 DUP2 ADD SWAP1 PUSH2 0x38BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2941 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2972 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST PUSH2 0x1A9C DUP4 DUP4 PUSH2 0x2DAD JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1BA3 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 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 NOT ADD PUSH2 0x29F7 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x2 SWAP3 DUP4 SWAP1 MSTORE SWAP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 DUP2 SWAP1 SUB PUSH2 0x2A6B JUMPI PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A49 JUMPI POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP3 SSTORE PUSH1 0x0 PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x25E4 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2AE2 JUMPI DUP1 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2A8C SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP5 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xB76ABE3C068FCCAE7AC0F9377F48F7261DCF952179A37060C5DE877A493E67B7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x25E4 JUMP JUMPDEST TIMESTAMP DUP3 SSTORE PUSH1 0x1 DUP1 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BDE JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B42 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x2BD5 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B9A JUMPI POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2BBF JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2BD3 JUMPI DUP5 PUSH2 0x2BCF DUP2 PUSH2 0x38D5 JUMP JUMPDEST SWAP6 POP POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2B23 JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BF7 JUMPI PUSH2 0x2BF7 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C20 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C3B JUMPI PUSH2 0x2C3B PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C64 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x2D6E JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2CE2 JUMPI POP PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2D07 JUMP JUMPDEST POP PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2D6C JUMPI DUP2 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2D20 JUMPI PUSH2 0x2D20 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP1 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2D53 JUMPI PUSH2 0x2D53 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 PUSH2 0x2D68 DUP2 PUSH2 0x38D5 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2C6B JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2D88 PUSH2 0x2E03 JUMP JUMPDEST PUSH2 0x1BA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B02 PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x2DB6 DUP3 PUSH2 0x2E1D 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 0x2DFB JUMPI PUSH2 0x1A9C DUP3 DUP3 PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0x1164 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E0D PUSH2 0x27A6 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 0x2E53 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B 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 0x2E9F SWAP2 SWAP1 PUSH2 0x38EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EDA 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 0x2EDF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2EEF DUP6 DUP4 DUP4 PUSH2 0x2F17 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1BA3 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 0x2F2C JUMPI PUSH2 0x2F27 DUP3 PUSH2 0x2F76 JUMP JUMPDEST PUSH2 0x2F6F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2F43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2F6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F86 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2FB9 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x28B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x28B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3038 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3056 DUP2 PUSH2 0x3000 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3082 DUP2 PUSH2 0x2FEB 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 0x30A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F6F DUP2 PUSH2 0x2FEB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x30EB JUMPI PUSH2 0x30EB PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x310C JUMPI PUSH2 0x310C PUSH2 0x30AD JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x313A PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST PUSH2 0x30C3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x315C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x3161 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x31A2 PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x31C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD PUSH2 0x31DC DUP2 PUSH2 0x3000 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x31C9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3224 DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3235 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x325C DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3284 DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x32A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32AC DUP9 DUP3 DUP10 ADD PUSH2 0x3183 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32F1 PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x3313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD PUSH2 0x332B DUP2 PUSH2 0x2FEB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x3318 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x334E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3359 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3380 DUP7 DUP3 DUP8 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x339C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33A8 DUP7 DUP3 DUP8 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33D0 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x33EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x33FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3415 JUMPI PUSH2 0x3415 PUSH2 0x30AD JUMP JUMPDEST PUSH2 0x3428 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x30C3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x343D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3492 DUP6 DUP3 DUP7 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x34AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34BA DUP6 DUP3 DUP7 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x34DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3525 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x356E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3590 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3525 DUP2 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35A4 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x35E4 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x35A1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x360B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3616 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x34AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI PUSH2 0x3674 DUP4 DUP6 MLOAD DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x364B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x36B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C1 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36D2 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x36ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33A8 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x372B JUMPI DUP2 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x370D JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP4 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x60 DUP6 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0xE0 DUP7 ADD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP4 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x37A0 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3775 JUMP JUMPDEST POP PUSH1 0x60 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP8 ADD MSTORE SWAP3 POP PUSH2 0x37BE DUP2 DUP5 PUSH2 0x36F9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x14F6 PUSH1 0xA0 DUP6 ADD DUP3 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x37FA JUMPI PUSH2 0x37FA PUSH2 0x37D5 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x953 JUMPI PUSH2 0x953 PUSH2 0x37D5 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 0x3853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F6F DUP2 PUSH2 0x2FEB JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x953 JUMPI PUSH2 0x953 PUSH2 0x37D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F6F DUP2 PUSH2 0x3000 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x38A1 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x37D5 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3900 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x35A1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID 0x2C 0xCC PUSH13 0x74B339E9D58B89AA6BB58D0519 PUSH18 0x2AEFF106F7981D466F54572CB88B42360894 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 0xD1 STATICCALL CHAINID 0xE0 PUSH18 0x723D6817E2486D003BECC55F00A264697066 PUSH20 0x58221220AC88B5016D296E3A47D224FAF1B2BA2F ORIGIN PUSH27 0x46E227DCCEB3D51524E23A44130664736F6C634300081C00330000 ","sourceMap":"716:27615:15:-:0;;;1171:4:1;1128:48;;1563:53:15;;;;;;;;;-1:-1:-1;1587:22:15;:20;:22::i;:::-;716:27615;;7709:422:0;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:0;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:0;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:0;-1:-1:-1;;;;;8033:33:0;;;;;8085:29;;158:50:18;;;8085:29:0;;146:2:18;131:18;8085:29:0;;;;;;;7979:146;7758:373;7709:422::o;14:200:18:-;716:27615:15;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_INTERFACE_VERSION_291":{"entryPoint":null,"id":291,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_489":{"entryPoint":10199,"id":489,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_unchained_507":{"entryPoint":11685,"id":507,"parameterSlots":0,"returnSlots":0},"@__UUPSUpgradeable_init_321":{"entryPoint":10191,"id":321,"parameterSlots":0,"returnSlots":0},"@_authorizeUpgrade_2020":{"entryPoint":10380,"id":2020,"parameterSlots":1,"returnSlots":0},"@_checkInitializing_175":{"entryPoint":11648,"id":175,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_912":{"entryPoint":12024,"id":912,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_397":{"entryPoint":10620,"id":397,"parameterSlots":0,"returnSlots":0},"@_checkProxy_381":{"entryPoint":10215,"id":381,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_266":{"entryPoint":10150,"id":266,"parameterSlots":0,"returnSlots":1},"@_getReentrancyGuardStorage_477":{"entryPoint":null,"id":477,"parameterSlots":0,"returnSlots":1},"@_getSupportedTokensForContent_3773":{"entryPoint":11030,"id":3773,"parameterSlots":1,"returnSlots":2},"@_initializableStorageSlot_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"@_isInitializing_243":{"entryPoint":11779,"id":243,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_559":{"entryPoint":11010,"id":559,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_543":{"entryPoint":10693,"id":543,"parameterSlots":0,"returnSlots":0},"@_revert_1500":{"entryPoint":12150,"id":1500,"parameterSlots":1,"returnSlots":0},"@_setImplementation_692":{"entryPoint":11805,"id":692,"parameterSlots":1,"returnSlots":0},"@_updateViewPermission_3157":{"entryPoint":10749,"id":3157,"parameterSlots":2,"returnSlots":0},"@_upgradeToAndCallUUPS_448":{"entryPoint":10426,"id":448,"parameterSlots":2,"returnSlots":0},"@addAdmin_2078":{"entryPoint":5674,"id":2078,"parameterSlots":1,"returnSlots":0},"@addSupportedToken_2579":{"entryPoint":5403,"id":2579,"parameterSlots":1,"returnSlots":0},"@batchConsumeView_3546":{"entryPoint":4456,"id":3546,"parameterSlots":2,"returnSlots":1},"@batchPurchase_3002":{"entryPoint":7318,"id":3002,"parameterSlots":3,"returnSlots":0},"@batchSetContentConfig_2362":{"entryPoint":2548,"id":2362,"parameterSlots":5,"returnSlots":0},"@batchSetContentPrice_2525":{"entryPoint":9236,"id":2525,"parameterSlots":3,"returnSlots":0},"@consumeView_3378":{"entryPoint":1979,"id":3378,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_1418":{"entryPoint":11906,"id":1418,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1558":{"entryPoint":null,"id":1558,"parameterSlots":1,"returnSlots":1},"@getAllSupportedTokens_2693":{"entryPoint":1628,"id":2693,"parameterSlots":0,"returnSlots":1},"@getContentPurchaseInfo_3592":{"entryPoint":9706,"id":3592,"parameterSlots":1,"returnSlots":1},"@getImplementation_665":{"entryPoint":null,"id":665,"parameterSlots":0,"returnSlots":1},"@getPermissionDetails_3283":{"entryPoint":6817,"id":3283,"parameterSlots":2,"returnSlots":1},"@getTreasury_2154":{"entryPoint":null,"id":2154,"parameterSlots":0,"returnSlots":1},"@getUserPermissions_3264":{"entryPoint":8221,"id":3264,"parameterSlots":2,"returnSlots":1},"@hasViewPermission_3208":{"entryPoint":9847,"id":3208,"parameterSlots":2,"returnSlots":1},"@initialize_1965":{"entryPoint":3294,"id":1965,"parameterSlots":3,"returnSlots":0},"@isAdmin_2047":{"entryPoint":null,"id":2047,"parameterSlots":1,"returnSlots":1},"@isContentActive_2377":{"entryPoint":null,"id":2377,"parameterSlots":1,"returnSlots":1},"@isSupportedToken_2682":{"entryPoint":null,"id":2682,"parameterSlots":1,"returnSlots":1},"@migrate_2010":{"entryPoint":6938,"id":2010,"parameterSlots":0,"returnSlots":0},"@owner_2033":{"entryPoint":null,"id":2033,"parameterSlots":0,"returnSlots":1},"@pause_3789":{"entryPoint":6265,"id":3789,"parameterSlots":0,"returnSlots":0},"@proxiableUUID_339":{"entryPoint":5374,"id":339,"parameterSlots":0,"returnSlots":1},"@purchaseContent_2828":{"entryPoint":8504,"id":2828,"parameterSlots":3,"returnSlots":0},"@purchaseWithNFT_3060":{"entryPoint":6364,"id":3060,"parameterSlots":3,"returnSlots":0},"@removeAdmin_2109":{"entryPoint":2393,"id":2109,"parameterSlots":1,"returnSlots":0},"@removeSupportedToken_2668":{"entryPoint":5835,"id":2668,"parameterSlots":1,"returnSlots":0},"@setContentConfig_2230":{"entryPoint":1729,"id":2230,"parameterSlots":5,"returnSlots":0},"@setContentPrice_2433":{"entryPoint":7077,"id":2433,"parameterSlots":3,"returnSlots":0},"@setTreasury_2144":{"entryPoint":9986,"id":2144,"parameterSlots":1,"returnSlots":0},"@unpause_3805":{"entryPoint":3198,"id":3805,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_359":{"entryPoint":4425,"id":359,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_728":{"entryPoint":11693,"id":728,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1458":{"entryPoint":12055,"id":1458,"parameterSlots":3,"returnSlots":1},"@version_1975":{"entryPoint":null,"id":1975,"parameterSlots":0,"returnSlots":1},"abi_decode_array_address_dyn":{"entryPoint":13010,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_bool_dyn":{"entryPoint":12675,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":12566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":12432,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":14401,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr":{"entryPoint":13113,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13816,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":13234,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":12388,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13405,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13962,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr":{"entryPoint":12778,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256":{"entryPoint":13657,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":14449,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":14524,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":12985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint256":{"entryPoint":13566,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_bool":{"entryPoint":12302,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_array_uint256_dyn":{"entryPoint":14073,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_ViewPermission":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":14574,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12191,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":13508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":13873,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed":{"entryPoint":14478,"id":null,"parameterSlots":4,"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_rational_0_by_1__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"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":13765,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__to_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__fromStack_reversed":{"entryPoint":14133,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ViewPermission_$4181_memory_ptr__to_t_struct$_ViewPermission_$4181_memory_ptr__fromStack_reversed":{"entryPoint":13622,"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_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":12483,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":12531,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":14430,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":14360,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":13729,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":14315,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":14549,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":14293,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":14379,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":14338,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":12461,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":12267,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":12288,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:20962:18","nodeType":"YulBlock","src":"0:20962:18","statements":[{"nativeSrc":"6:3:18","nodeType":"YulBlock","src":"6:3:18","statements":[]},{"body":{"nativeSrc":"165:486:18","nodeType":"YulBlock","src":"165:486:18","statements":[{"nativeSrc":"175:32:18","nodeType":"YulVariableDeclaration","src":"175:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"193:9:18","nodeType":"YulIdentifier","src":"193:9:18"},{"kind":"number","nativeSrc":"204:2:18","nodeType":"YulLiteral","src":"204:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"189:3:18","nodeType":"YulIdentifier","src":"189:3:18"},"nativeSrc":"189:18:18","nodeType":"YulFunctionCall","src":"189:18:18"},"variables":[{"name":"tail_1","nativeSrc":"179:6:18","nodeType":"YulTypedName","src":"179:6:18","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"223:9:18","nodeType":"YulIdentifier","src":"223:9:18"},{"kind":"number","nativeSrc":"234:2:18","nodeType":"YulLiteral","src":"234:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"216:6:18","nodeType":"YulIdentifier","src":"216:6:18"},"nativeSrc":"216:21:18","nodeType":"YulFunctionCall","src":"216:21:18"},"nativeSrc":"216:21:18","nodeType":"YulExpressionStatement","src":"216:21:18"},{"nativeSrc":"246:17:18","nodeType":"YulVariableDeclaration","src":"246:17:18","value":{"name":"tail_1","nativeSrc":"257:6:18","nodeType":"YulIdentifier","src":"257:6:18"},"variables":[{"name":"pos","nativeSrc":"250:3:18","nodeType":"YulTypedName","src":"250:3:18","type":""}]},{"nativeSrc":"272:27:18","nodeType":"YulVariableDeclaration","src":"272:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"292:6:18","nodeType":"YulIdentifier","src":"292:6:18"}],"functionName":{"name":"mload","nativeSrc":"286:5:18","nodeType":"YulIdentifier","src":"286:5:18"},"nativeSrc":"286:13:18","nodeType":"YulFunctionCall","src":"286:13:18"},"variables":[{"name":"length","nativeSrc":"276:6:18","nodeType":"YulTypedName","src":"276:6:18","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"315:6:18","nodeType":"YulIdentifier","src":"315:6:18"},{"name":"length","nativeSrc":"323:6:18","nodeType":"YulIdentifier","src":"323:6:18"}],"functionName":{"name":"mstore","nativeSrc":"308:6:18","nodeType":"YulIdentifier","src":"308:6:18"},"nativeSrc":"308:22:18","nodeType":"YulFunctionCall","src":"308:22:18"},"nativeSrc":"308:22:18","nodeType":"YulExpressionStatement","src":"308:22:18"},{"nativeSrc":"339:25:18","nodeType":"YulAssignment","src":"339:25:18","value":{"arguments":[{"name":"headStart","nativeSrc":"350:9:18","nodeType":"YulIdentifier","src":"350:9:18"},{"kind":"number","nativeSrc":"361:2:18","nodeType":"YulLiteral","src":"361:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"346:3:18","nodeType":"YulIdentifier","src":"346:3:18"},"nativeSrc":"346:18:18","nodeType":"YulFunctionCall","src":"346:18:18"},"variableNames":[{"name":"pos","nativeSrc":"339:3:18","nodeType":"YulIdentifier","src":"339:3:18"}]},{"nativeSrc":"373:29:18","nodeType":"YulVariableDeclaration","src":"373:29:18","value":{"arguments":[{"name":"value0","nativeSrc":"391:6:18","nodeType":"YulIdentifier","src":"391:6:18"},{"kind":"number","nativeSrc":"399:2:18","nodeType":"YulLiteral","src":"399:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"387:3:18","nodeType":"YulIdentifier","src":"387:3:18"},"nativeSrc":"387:15:18","nodeType":"YulFunctionCall","src":"387:15:18"},"variables":[{"name":"srcPtr","nativeSrc":"377:6:18","nodeType":"YulTypedName","src":"377:6:18","type":""}]},{"nativeSrc":"411:10:18","nodeType":"YulVariableDeclaration","src":"411:10:18","value":{"kind":"number","nativeSrc":"420:1:18","nodeType":"YulLiteral","src":"420:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"415:1:18","nodeType":"YulTypedName","src":"415:1:18","type":""}]},{"body":{"nativeSrc":"479:146:18","nodeType":"YulBlock","src":"479:146:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"500:3:18","nodeType":"YulIdentifier","src":"500:3:18"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"515:6:18","nodeType":"YulIdentifier","src":"515:6:18"}],"functionName":{"name":"mload","nativeSrc":"509:5:18","nodeType":"YulIdentifier","src":"509:5:18"},"nativeSrc":"509:13:18","nodeType":"YulFunctionCall","src":"509:13:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"532:3:18","nodeType":"YulLiteral","src":"532:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"537:1:18","nodeType":"YulLiteral","src":"537:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"528:3:18","nodeType":"YulIdentifier","src":"528:3:18"},"nativeSrc":"528:11:18","nodeType":"YulFunctionCall","src":"528:11:18"},{"kind":"number","nativeSrc":"541:1:18","nodeType":"YulLiteral","src":"541:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"524:3:18","nodeType":"YulIdentifier","src":"524:3:18"},"nativeSrc":"524:19:18","nodeType":"YulFunctionCall","src":"524:19:18"}],"functionName":{"name":"and","nativeSrc":"505:3:18","nodeType":"YulIdentifier","src":"505:3:18"},"nativeSrc":"505:39:18","nodeType":"YulFunctionCall","src":"505:39:18"}],"functionName":{"name":"mstore","nativeSrc":"493:6:18","nodeType":"YulIdentifier","src":"493:6:18"},"nativeSrc":"493:52:18","nodeType":"YulFunctionCall","src":"493:52:18"},"nativeSrc":"493:52:18","nodeType":"YulExpressionStatement","src":"493:52:18"},{"nativeSrc":"558:19:18","nodeType":"YulAssignment","src":"558:19:18","value":{"arguments":[{"name":"pos","nativeSrc":"569:3:18","nodeType":"YulIdentifier","src":"569:3:18"},{"kind":"number","nativeSrc":"574:2:18","nodeType":"YulLiteral","src":"574:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"565:3:18","nodeType":"YulIdentifier","src":"565:3:18"},"nativeSrc":"565:12:18","nodeType":"YulFunctionCall","src":"565:12:18"},"variableNames":[{"name":"pos","nativeSrc":"558:3:18","nodeType":"YulIdentifier","src":"558:3:18"}]},{"nativeSrc":"590:25:18","nodeType":"YulAssignment","src":"590:25:18","value":{"arguments":[{"name":"srcPtr","nativeSrc":"604:6:18","nodeType":"YulIdentifier","src":"604:6:18"},{"kind":"number","nativeSrc":"612:2:18","nodeType":"YulLiteral","src":"612:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"600:3:18","nodeType":"YulIdentifier","src":"600:3:18"},"nativeSrc":"600:15:18","nodeType":"YulFunctionCall","src":"600:15:18"},"variableNames":[{"name":"srcPtr","nativeSrc":"590:6:18","nodeType":"YulIdentifier","src":"590:6:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"441:1:18","nodeType":"YulIdentifier","src":"441:1:18"},{"name":"length","nativeSrc":"444:6:18","nodeType":"YulIdentifier","src":"444:6:18"}],"functionName":{"name":"lt","nativeSrc":"438:2:18","nodeType":"YulIdentifier","src":"438:2:18"},"nativeSrc":"438:13:18","nodeType":"YulFunctionCall","src":"438:13:18"},"nativeSrc":"430:195:18","nodeType":"YulForLoop","post":{"nativeSrc":"452:18:18","nodeType":"YulBlock","src":"452:18:18","statements":[{"nativeSrc":"454:14:18","nodeType":"YulAssignment","src":"454:14:18","value":{"arguments":[{"name":"i","nativeSrc":"463:1:18","nodeType":"YulIdentifier","src":"463:1:18"},{"kind":"number","nativeSrc":"466:1:18","nodeType":"YulLiteral","src":"466:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"459:3:18","nodeType":"YulIdentifier","src":"459:3:18"},"nativeSrc":"459:9:18","nodeType":"YulFunctionCall","src":"459:9:18"},"variableNames":[{"name":"i","nativeSrc":"454:1:18","nodeType":"YulIdentifier","src":"454:1:18"}]}]},"pre":{"nativeSrc":"434:3:18","nodeType":"YulBlock","src":"434:3:18","statements":[]},"src":"430:195:18"},{"nativeSrc":"634:11:18","nodeType":"YulAssignment","src":"634:11:18","value":{"name":"pos","nativeSrc":"642:3:18","nodeType":"YulIdentifier","src":"642:3:18"},"variableNames":[{"name":"tail","nativeSrc":"634:4:18","nodeType":"YulIdentifier","src":"634:4:18"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"14:637:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"134:9:18","nodeType":"YulTypedName","src":"134:9:18","type":""},{"name":"value0","nativeSrc":"145:6:18","nodeType":"YulTypedName","src":"145:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"156:4:18","nodeType":"YulTypedName","src":"156:4:18","type":""}],"src":"14:637:18"},{"body":{"nativeSrc":"701:86:18","nodeType":"YulBlock","src":"701:86:18","statements":[{"body":{"nativeSrc":"765:16:18","nodeType":"YulBlock","src":"765:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"774:1:18","nodeType":"YulLiteral","src":"774:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"777:1:18","nodeType":"YulLiteral","src":"777:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"767:6:18","nodeType":"YulIdentifier","src":"767:6:18"},"nativeSrc":"767:12:18","nodeType":"YulFunctionCall","src":"767:12:18"},"nativeSrc":"767:12:18","nodeType":"YulExpressionStatement","src":"767:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"724:5:18","nodeType":"YulIdentifier","src":"724:5:18"},{"arguments":[{"name":"value","nativeSrc":"735:5:18","nodeType":"YulIdentifier","src":"735:5:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"750:3:18","nodeType":"YulLiteral","src":"750:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"755:1:18","nodeType":"YulLiteral","src":"755:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"746:3:18","nodeType":"YulIdentifier","src":"746:3:18"},"nativeSrc":"746:11:18","nodeType":"YulFunctionCall","src":"746:11:18"},{"kind":"number","nativeSrc":"759:1:18","nodeType":"YulLiteral","src":"759:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"742:3:18","nodeType":"YulIdentifier","src":"742:3:18"},"nativeSrc":"742:19:18","nodeType":"YulFunctionCall","src":"742:19:18"}],"functionName":{"name":"and","nativeSrc":"731:3:18","nodeType":"YulIdentifier","src":"731:3:18"},"nativeSrc":"731:31:18","nodeType":"YulFunctionCall","src":"731:31:18"}],"functionName":{"name":"eq","nativeSrc":"721:2:18","nodeType":"YulIdentifier","src":"721:2:18"},"nativeSrc":"721:42:18","nodeType":"YulFunctionCall","src":"721:42:18"}],"functionName":{"name":"iszero","nativeSrc":"714:6:18","nodeType":"YulIdentifier","src":"714:6:18"},"nativeSrc":"714:50:18","nodeType":"YulFunctionCall","src":"714:50:18"},"nativeSrc":"711:70:18","nodeType":"YulIf","src":"711:70:18"}]},"name":"validator_revert_address","nativeSrc":"656:131:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"690:5:18","nodeType":"YulTypedName","src":"690:5:18","type":""}],"src":"656:131:18"},{"body":{"nativeSrc":"834:76:18","nodeType":"YulBlock","src":"834:76:18","statements":[{"body":{"nativeSrc":"888:16:18","nodeType":"YulBlock","src":"888:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"897:1:18","nodeType":"YulLiteral","src":"897:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"900:1:18","nodeType":"YulLiteral","src":"900:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"890:6:18","nodeType":"YulIdentifier","src":"890:6:18"},"nativeSrc":"890:12:18","nodeType":"YulFunctionCall","src":"890:12:18"},"nativeSrc":"890:12:18","nodeType":"YulExpressionStatement","src":"890:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"857:5:18","nodeType":"YulIdentifier","src":"857:5:18"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"878:5:18","nodeType":"YulIdentifier","src":"878:5:18"}],"functionName":{"name":"iszero","nativeSrc":"871:6:18","nodeType":"YulIdentifier","src":"871:6:18"},"nativeSrc":"871:13:18","nodeType":"YulFunctionCall","src":"871:13:18"}],"functionName":{"name":"iszero","nativeSrc":"864:6:18","nodeType":"YulIdentifier","src":"864:6:18"},"nativeSrc":"864:21:18","nodeType":"YulFunctionCall","src":"864:21:18"}],"functionName":{"name":"eq","nativeSrc":"854:2:18","nodeType":"YulIdentifier","src":"854:2:18"},"nativeSrc":"854:32:18","nodeType":"YulFunctionCall","src":"854:32:18"}],"functionName":{"name":"iszero","nativeSrc":"847:6:18","nodeType":"YulIdentifier","src":"847:6:18"},"nativeSrc":"847:40:18","nodeType":"YulFunctionCall","src":"847:40:18"},"nativeSrc":"844:60:18","nodeType":"YulIf","src":"844:60:18"}]},"name":"validator_revert_bool","nativeSrc":"792:118:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"823:5:18","nodeType":"YulTypedName","src":"823:5:18","type":""}],"src":"792:118:18"},{"body":{"nativeSrc":"1050:609:18","nodeType":"YulBlock","src":"1050:609:18","statements":[{"body":{"nativeSrc":"1097:16:18","nodeType":"YulBlock","src":"1097:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1106:1:18","nodeType":"YulLiteral","src":"1106:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1109:1:18","nodeType":"YulLiteral","src":"1109:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1099:6:18","nodeType":"YulIdentifier","src":"1099:6:18"},"nativeSrc":"1099:12:18","nodeType":"YulFunctionCall","src":"1099:12:18"},"nativeSrc":"1099:12:18","nodeType":"YulExpressionStatement","src":"1099:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1071:7:18","nodeType":"YulIdentifier","src":"1071:7:18"},{"name":"headStart","nativeSrc":"1080:9:18","nodeType":"YulIdentifier","src":"1080:9:18"}],"functionName":{"name":"sub","nativeSrc":"1067:3:18","nodeType":"YulIdentifier","src":"1067:3:18"},"nativeSrc":"1067:23:18","nodeType":"YulFunctionCall","src":"1067:23:18"},{"kind":"number","nativeSrc":"1092:3:18","nodeType":"YulLiteral","src":"1092:3:18","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"1063:3:18","nodeType":"YulIdentifier","src":"1063:3:18"},"nativeSrc":"1063:33:18","nodeType":"YulFunctionCall","src":"1063:33:18"},"nativeSrc":"1060:53:18","nodeType":"YulIf","src":"1060:53:18"},{"nativeSrc":"1122:14:18","nodeType":"YulVariableDeclaration","src":"1122:14:18","value":{"kind":"number","nativeSrc":"1135:1:18","nodeType":"YulLiteral","src":"1135:1:18","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1126:5:18","nodeType":"YulTypedName","src":"1126:5:18","type":""}]},{"nativeSrc":"1145:32:18","nodeType":"YulAssignment","src":"1145:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1167:9:18","nodeType":"YulIdentifier","src":"1167:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"1154:12:18","nodeType":"YulIdentifier","src":"1154:12:18"},"nativeSrc":"1154:23:18","nodeType":"YulFunctionCall","src":"1154:23:18"},"variableNames":[{"name":"value","nativeSrc":"1145:5:18","nodeType":"YulIdentifier","src":"1145:5:18"}]},{"nativeSrc":"1186:15:18","nodeType":"YulAssignment","src":"1186:15:18","value":{"name":"value","nativeSrc":"1196:5:18","nodeType":"YulIdentifier","src":"1196:5:18"},"variableNames":[{"name":"value0","nativeSrc":"1186:6:18","nodeType":"YulIdentifier","src":"1186:6:18"}]},{"nativeSrc":"1210:47:18","nodeType":"YulVariableDeclaration","src":"1210:47:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1242:9:18","nodeType":"YulIdentifier","src":"1242:9:18"},{"kind":"number","nativeSrc":"1253:2:18","nodeType":"YulLiteral","src":"1253:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1238:3:18","nodeType":"YulIdentifier","src":"1238:3:18"},"nativeSrc":"1238:18:18","nodeType":"YulFunctionCall","src":"1238:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1225:12:18","nodeType":"YulIdentifier","src":"1225:12:18"},"nativeSrc":"1225:32:18","nodeType":"YulFunctionCall","src":"1225:32:18"},"variables":[{"name":"value_1","nativeSrc":"1214:7:18","nodeType":"YulTypedName","src":"1214:7:18","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"1291:7:18","nodeType":"YulIdentifier","src":"1291:7:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1266:24:18","nodeType":"YulIdentifier","src":"1266:24:18"},"nativeSrc":"1266:33:18","nodeType":"YulFunctionCall","src":"1266:33:18"},"nativeSrc":"1266:33:18","nodeType":"YulExpressionStatement","src":"1266:33:18"},{"nativeSrc":"1308:17:18","nodeType":"YulAssignment","src":"1308:17:18","value":{"name":"value_1","nativeSrc":"1318:7:18","nodeType":"YulIdentifier","src":"1318:7:18"},"variableNames":[{"name":"value1","nativeSrc":"1308:6:18","nodeType":"YulIdentifier","src":"1308:6:18"}]},{"nativeSrc":"1334:16:18","nodeType":"YulVariableDeclaration","src":"1334:16:18","value":{"kind":"number","nativeSrc":"1349:1:18","nodeType":"YulLiteral","src":"1349:1:18","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"1338:7:18","nodeType":"YulTypedName","src":"1338:7:18","type":""}]},{"nativeSrc":"1359:43:18","nodeType":"YulAssignment","src":"1359:43:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1387:9:18","nodeType":"YulIdentifier","src":"1387:9:18"},{"kind":"number","nativeSrc":"1398:2:18","nodeType":"YulLiteral","src":"1398:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1383:3:18","nodeType":"YulIdentifier","src":"1383:3:18"},"nativeSrc":"1383:18:18","nodeType":"YulFunctionCall","src":"1383:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1370:12:18","nodeType":"YulIdentifier","src":"1370:12:18"},"nativeSrc":"1370:32:18","nodeType":"YulFunctionCall","src":"1370:32:18"},"variableNames":[{"name":"value_2","nativeSrc":"1359:7:18","nodeType":"YulIdentifier","src":"1359:7:18"}]},{"nativeSrc":"1411:17:18","nodeType":"YulAssignment","src":"1411:17:18","value":{"name":"value_2","nativeSrc":"1421:7:18","nodeType":"YulIdentifier","src":"1421:7:18"},"variableNames":[{"name":"value2","nativeSrc":"1411:6:18","nodeType":"YulIdentifier","src":"1411:6:18"}]},{"nativeSrc":"1437:16:18","nodeType":"YulVariableDeclaration","src":"1437:16:18","value":{"kind":"number","nativeSrc":"1452:1:18","nodeType":"YulLiteral","src":"1452:1:18","type":"","value":"0"},"variables":[{"name":"value_3","nativeSrc":"1441:7:18","nodeType":"YulTypedName","src":"1441:7:18","type":""}]},{"nativeSrc":"1462:43:18","nodeType":"YulAssignment","src":"1462:43:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1490:9:18","nodeType":"YulIdentifier","src":"1490:9:18"},{"kind":"number","nativeSrc":"1501:2:18","nodeType":"YulLiteral","src":"1501:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1486:3:18","nodeType":"YulIdentifier","src":"1486:3:18"},"nativeSrc":"1486:18:18","nodeType":"YulFunctionCall","src":"1486:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1473:12:18","nodeType":"YulIdentifier","src":"1473:12:18"},"nativeSrc":"1473:32:18","nodeType":"YulFunctionCall","src":"1473:32:18"},"variableNames":[{"name":"value_3","nativeSrc":"1462:7:18","nodeType":"YulIdentifier","src":"1462:7:18"}]},{"nativeSrc":"1514:17:18","nodeType":"YulAssignment","src":"1514:17:18","value":{"name":"value_3","nativeSrc":"1524:7:18","nodeType":"YulIdentifier","src":"1524:7:18"},"variableNames":[{"name":"value3","nativeSrc":"1514:6:18","nodeType":"YulIdentifier","src":"1514:6:18"}]},{"nativeSrc":"1540:48:18","nodeType":"YulVariableDeclaration","src":"1540:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1572:9:18","nodeType":"YulIdentifier","src":"1572:9:18"},{"kind":"number","nativeSrc":"1583:3:18","nodeType":"YulLiteral","src":"1583:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1568:3:18","nodeType":"YulIdentifier","src":"1568:3:18"},"nativeSrc":"1568:19:18","nodeType":"YulFunctionCall","src":"1568:19:18"}],"functionName":{"name":"calldataload","nativeSrc":"1555:12:18","nodeType":"YulIdentifier","src":"1555:12:18"},"nativeSrc":"1555:33:18","nodeType":"YulFunctionCall","src":"1555:33:18"},"variables":[{"name":"value_4","nativeSrc":"1544:7:18","nodeType":"YulTypedName","src":"1544:7:18","type":""}]},{"expression":{"arguments":[{"name":"value_4","nativeSrc":"1619:7:18","nodeType":"YulIdentifier","src":"1619:7:18"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"1597:21:18","nodeType":"YulIdentifier","src":"1597:21:18"},"nativeSrc":"1597:30:18","nodeType":"YulFunctionCall","src":"1597:30:18"},"nativeSrc":"1597:30:18","nodeType":"YulExpressionStatement","src":"1597:30:18"},{"nativeSrc":"1636:17:18","nodeType":"YulAssignment","src":"1636:17:18","value":{"name":"value_4","nativeSrc":"1646:7:18","nodeType":"YulIdentifier","src":"1646:7:18"},"variableNames":[{"name":"value4","nativeSrc":"1636:6:18","nodeType":"YulIdentifier","src":"1636:6:18"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_bool","nativeSrc":"915:744:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"984:9:18","nodeType":"YulTypedName","src":"984:9:18","type":""},{"name":"dataEnd","nativeSrc":"995:7:18","nodeType":"YulTypedName","src":"995:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1007:6:18","nodeType":"YulTypedName","src":"1007:6:18","type":""},{"name":"value1","nativeSrc":"1015:6:18","nodeType":"YulTypedName","src":"1015:6:18","type":""},{"name":"value2","nativeSrc":"1023:6:18","nodeType":"YulTypedName","src":"1023:6:18","type":""},{"name":"value3","nativeSrc":"1031:6:18","nodeType":"YulTypedName","src":"1031:6:18","type":""},{"name":"value4","nativeSrc":"1039:6:18","nodeType":"YulTypedName","src":"1039:6:18","type":""}],"src":"915:744:18"},{"body":{"nativeSrc":"1751:280:18","nodeType":"YulBlock","src":"1751:280:18","statements":[{"body":{"nativeSrc":"1797:16:18","nodeType":"YulBlock","src":"1797:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1806:1:18","nodeType":"YulLiteral","src":"1806:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"1809:1:18","nodeType":"YulLiteral","src":"1809:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1799:6:18","nodeType":"YulIdentifier","src":"1799:6:18"},"nativeSrc":"1799:12:18","nodeType":"YulFunctionCall","src":"1799:12:18"},"nativeSrc":"1799:12:18","nodeType":"YulExpressionStatement","src":"1799:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1772:7:18","nodeType":"YulIdentifier","src":"1772:7:18"},{"name":"headStart","nativeSrc":"1781:9:18","nodeType":"YulIdentifier","src":"1781:9:18"}],"functionName":{"name":"sub","nativeSrc":"1768:3:18","nodeType":"YulIdentifier","src":"1768:3:18"},"nativeSrc":"1768:23:18","nodeType":"YulFunctionCall","src":"1768:23:18"},{"kind":"number","nativeSrc":"1793:2:18","nodeType":"YulLiteral","src":"1793:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1764:3:18","nodeType":"YulIdentifier","src":"1764:3:18"},"nativeSrc":"1764:32:18","nodeType":"YulFunctionCall","src":"1764:32:18"},"nativeSrc":"1761:52:18","nodeType":"YulIf","src":"1761:52:18"},{"nativeSrc":"1822:36:18","nodeType":"YulVariableDeclaration","src":"1822:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"1848:9:18","nodeType":"YulIdentifier","src":"1848:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"1835:12:18","nodeType":"YulIdentifier","src":"1835:12:18"},"nativeSrc":"1835:23:18","nodeType":"YulFunctionCall","src":"1835:23:18"},"variables":[{"name":"value","nativeSrc":"1826:5:18","nodeType":"YulTypedName","src":"1826:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1892:5:18","nodeType":"YulIdentifier","src":"1892:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1867:24:18","nodeType":"YulIdentifier","src":"1867:24:18"},"nativeSrc":"1867:31:18","nodeType":"YulFunctionCall","src":"1867:31:18"},"nativeSrc":"1867:31:18","nodeType":"YulExpressionStatement","src":"1867:31:18"},{"nativeSrc":"1907:15:18","nodeType":"YulAssignment","src":"1907:15:18","value":{"name":"value","nativeSrc":"1917:5:18","nodeType":"YulIdentifier","src":"1917:5:18"},"variableNames":[{"name":"value0","nativeSrc":"1907:6:18","nodeType":"YulIdentifier","src":"1907:6:18"}]},{"nativeSrc":"1931:16:18","nodeType":"YulVariableDeclaration","src":"1931:16:18","value":{"kind":"number","nativeSrc":"1946:1:18","nodeType":"YulLiteral","src":"1946:1:18","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1935:7:18","nodeType":"YulTypedName","src":"1935:7:18","type":""}]},{"nativeSrc":"1956:43:18","nodeType":"YulAssignment","src":"1956:43:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1984:9:18","nodeType":"YulIdentifier","src":"1984:9:18"},{"kind":"number","nativeSrc":"1995:2:18","nodeType":"YulLiteral","src":"1995:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1980:3:18","nodeType":"YulIdentifier","src":"1980:3:18"},"nativeSrc":"1980:18:18","nodeType":"YulFunctionCall","src":"1980:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"1967:12:18","nodeType":"YulIdentifier","src":"1967:12:18"},"nativeSrc":"1967:32:18","nodeType":"YulFunctionCall","src":"1967:32:18"},"variableNames":[{"name":"value_1","nativeSrc":"1956:7:18","nodeType":"YulIdentifier","src":"1956:7:18"}]},{"nativeSrc":"2008:17:18","nodeType":"YulAssignment","src":"2008:17:18","value":{"name":"value_1","nativeSrc":"2018:7:18","nodeType":"YulIdentifier","src":"2018:7:18"},"variableNames":[{"name":"value1","nativeSrc":"2008:6:18","nodeType":"YulIdentifier","src":"2008:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1664:367:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1709:9:18","nodeType":"YulTypedName","src":"1709:9:18","type":""},{"name":"dataEnd","nativeSrc":"1720:7:18","nodeType":"YulTypedName","src":"1720:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1732:6:18","nodeType":"YulTypedName","src":"1732:6:18","type":""},{"name":"value1","nativeSrc":"1740:6:18","nodeType":"YulTypedName","src":"1740:6:18","type":""}],"src":"1664:367:18"},{"body":{"nativeSrc":"2077:50:18","nodeType":"YulBlock","src":"2077:50:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2094:3:18","nodeType":"YulIdentifier","src":"2094:3:18"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2113:5:18","nodeType":"YulIdentifier","src":"2113:5:18"}],"functionName":{"name":"iszero","nativeSrc":"2106:6:18","nodeType":"YulIdentifier","src":"2106:6:18"},"nativeSrc":"2106:13:18","nodeType":"YulFunctionCall","src":"2106:13:18"}],"functionName":{"name":"iszero","nativeSrc":"2099:6:18","nodeType":"YulIdentifier","src":"2099:6:18"},"nativeSrc":"2099:21:18","nodeType":"YulFunctionCall","src":"2099:21:18"}],"functionName":{"name":"mstore","nativeSrc":"2087:6:18","nodeType":"YulIdentifier","src":"2087:6:18"},"nativeSrc":"2087:34:18","nodeType":"YulFunctionCall","src":"2087:34:18"},"nativeSrc":"2087:34:18","nodeType":"YulExpressionStatement","src":"2087:34:18"}]},"name":"abi_encode_bool","nativeSrc":"2036:91:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2061:5:18","nodeType":"YulTypedName","src":"2061:5:18","type":""},{"name":"pos","nativeSrc":"2068:3:18","nodeType":"YulTypedName","src":"2068:3:18","type":""}],"src":"2036:91:18"},{"body":{"nativeSrc":"2227:92:18","nodeType":"YulBlock","src":"2227:92:18","statements":[{"nativeSrc":"2237:26:18","nodeType":"YulAssignment","src":"2237:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2249:9:18","nodeType":"YulIdentifier","src":"2249:9:18"},{"kind":"number","nativeSrc":"2260:2:18","nodeType":"YulLiteral","src":"2260:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2245:3:18","nodeType":"YulIdentifier","src":"2245:3:18"},"nativeSrc":"2245:18:18","nodeType":"YulFunctionCall","src":"2245:18:18"},"variableNames":[{"name":"tail","nativeSrc":"2237:4:18","nodeType":"YulIdentifier","src":"2237:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2279:9:18","nodeType":"YulIdentifier","src":"2279:9:18"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2304:6:18","nodeType":"YulIdentifier","src":"2304:6:18"}],"functionName":{"name":"iszero","nativeSrc":"2297:6:18","nodeType":"YulIdentifier","src":"2297:6:18"},"nativeSrc":"2297:14:18","nodeType":"YulFunctionCall","src":"2297:14:18"}],"functionName":{"name":"iszero","nativeSrc":"2290:6:18","nodeType":"YulIdentifier","src":"2290:6:18"},"nativeSrc":"2290:22:18","nodeType":"YulFunctionCall","src":"2290:22:18"}],"functionName":{"name":"mstore","nativeSrc":"2272:6:18","nodeType":"YulIdentifier","src":"2272:6:18"},"nativeSrc":"2272:41:18","nodeType":"YulFunctionCall","src":"2272:41:18"},"nativeSrc":"2272:41:18","nodeType":"YulExpressionStatement","src":"2272:41:18"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"2132:187:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2196:9:18","nodeType":"YulTypedName","src":"2196:9:18","type":""},{"name":"value0","nativeSrc":"2207:6:18","nodeType":"YulTypedName","src":"2207:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2218:4:18","nodeType":"YulTypedName","src":"2218:4:18","type":""}],"src":"2132:187:18"},{"body":{"nativeSrc":"2394:177:18","nodeType":"YulBlock","src":"2394:177:18","statements":[{"body":{"nativeSrc":"2440:16:18","nodeType":"YulBlock","src":"2440:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2449:1:18","nodeType":"YulLiteral","src":"2449:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2452:1:18","nodeType":"YulLiteral","src":"2452:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2442:6:18","nodeType":"YulIdentifier","src":"2442:6:18"},"nativeSrc":"2442:12:18","nodeType":"YulFunctionCall","src":"2442:12:18"},"nativeSrc":"2442:12:18","nodeType":"YulExpressionStatement","src":"2442:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2415:7:18","nodeType":"YulIdentifier","src":"2415:7:18"},{"name":"headStart","nativeSrc":"2424:9:18","nodeType":"YulIdentifier","src":"2424:9:18"}],"functionName":{"name":"sub","nativeSrc":"2411:3:18","nodeType":"YulIdentifier","src":"2411:3:18"},"nativeSrc":"2411:23:18","nodeType":"YulFunctionCall","src":"2411:23:18"},{"kind":"number","nativeSrc":"2436:2:18","nodeType":"YulLiteral","src":"2436:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2407:3:18","nodeType":"YulIdentifier","src":"2407:3:18"},"nativeSrc":"2407:32:18","nodeType":"YulFunctionCall","src":"2407:32:18"},"nativeSrc":"2404:52:18","nodeType":"YulIf","src":"2404:52:18"},{"nativeSrc":"2465:36:18","nodeType":"YulVariableDeclaration","src":"2465:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"2491:9:18","nodeType":"YulIdentifier","src":"2491:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"2478:12:18","nodeType":"YulIdentifier","src":"2478:12:18"},"nativeSrc":"2478:23:18","nodeType":"YulFunctionCall","src":"2478:23:18"},"variables":[{"name":"value","nativeSrc":"2469:5:18","nodeType":"YulTypedName","src":"2469:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2535:5:18","nodeType":"YulIdentifier","src":"2535:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2510:24:18","nodeType":"YulIdentifier","src":"2510:24:18"},"nativeSrc":"2510:31:18","nodeType":"YulFunctionCall","src":"2510:31:18"},"nativeSrc":"2510:31:18","nodeType":"YulExpressionStatement","src":"2510:31:18"},{"nativeSrc":"2550:15:18","nodeType":"YulAssignment","src":"2550:15:18","value":{"name":"value","nativeSrc":"2560:5:18","nodeType":"YulIdentifier","src":"2560:5:18"},"variableNames":[{"name":"value0","nativeSrc":"2550:6:18","nodeType":"YulIdentifier","src":"2550:6:18"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2324:247:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2360:9:18","nodeType":"YulTypedName","src":"2360:9:18","type":""},{"name":"dataEnd","nativeSrc":"2371:7:18","nodeType":"YulTypedName","src":"2371:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2383:6:18","nodeType":"YulTypedName","src":"2383:6:18","type":""}],"src":"2324:247:18"},{"body":{"nativeSrc":"2608:95:18","nodeType":"YulBlock","src":"2608:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2625:1:18","nodeType":"YulLiteral","src":"2625:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2632:3:18","nodeType":"YulLiteral","src":"2632:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"2637:10:18","nodeType":"YulLiteral","src":"2637:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2628:3:18","nodeType":"YulIdentifier","src":"2628:3:18"},"nativeSrc":"2628:20:18","nodeType":"YulFunctionCall","src":"2628:20:18"}],"functionName":{"name":"mstore","nativeSrc":"2618:6:18","nodeType":"YulIdentifier","src":"2618:6:18"},"nativeSrc":"2618:31:18","nodeType":"YulFunctionCall","src":"2618:31:18"},"nativeSrc":"2618:31:18","nodeType":"YulExpressionStatement","src":"2618:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2665:1:18","nodeType":"YulLiteral","src":"2665:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"2668:4:18","nodeType":"YulLiteral","src":"2668:4:18","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"2658:6:18","nodeType":"YulIdentifier","src":"2658:6:18"},"nativeSrc":"2658:15:18","nodeType":"YulFunctionCall","src":"2658:15:18"},"nativeSrc":"2658:15:18","nodeType":"YulExpressionStatement","src":"2658:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2689:1:18","nodeType":"YulLiteral","src":"2689:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"2692:4:18","nodeType":"YulLiteral","src":"2692:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2682:6:18","nodeType":"YulIdentifier","src":"2682:6:18"},"nativeSrc":"2682:15:18","nodeType":"YulFunctionCall","src":"2682:15:18"},"nativeSrc":"2682:15:18","nodeType":"YulExpressionStatement","src":"2682:15:18"}]},"name":"panic_error_0x41","nativeSrc":"2576:127:18","nodeType":"YulFunctionDefinition","src":"2576:127:18"},{"body":{"nativeSrc":"2753:230:18","nodeType":"YulBlock","src":"2753:230:18","statements":[{"nativeSrc":"2763:19:18","nodeType":"YulAssignment","src":"2763:19:18","value":{"arguments":[{"kind":"number","nativeSrc":"2779:2:18","nodeType":"YulLiteral","src":"2779:2:18","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2773:5:18","nodeType":"YulIdentifier","src":"2773:5:18"},"nativeSrc":"2773:9:18","nodeType":"YulFunctionCall","src":"2773:9:18"},"variableNames":[{"name":"memPtr","nativeSrc":"2763:6:18","nodeType":"YulIdentifier","src":"2763:6:18"}]},{"nativeSrc":"2791:58:18","nodeType":"YulVariableDeclaration","src":"2791:58:18","value":{"arguments":[{"name":"memPtr","nativeSrc":"2813:6:18","nodeType":"YulIdentifier","src":"2813:6:18"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"2829:4:18","nodeType":"YulIdentifier","src":"2829:4:18"},{"kind":"number","nativeSrc":"2835:2:18","nodeType":"YulLiteral","src":"2835:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2825:3:18","nodeType":"YulIdentifier","src":"2825:3:18"},"nativeSrc":"2825:13:18","nodeType":"YulFunctionCall","src":"2825:13:18"},{"arguments":[{"kind":"number","nativeSrc":"2844:2:18","nodeType":"YulLiteral","src":"2844:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2840:3:18","nodeType":"YulIdentifier","src":"2840:3:18"},"nativeSrc":"2840:7:18","nodeType":"YulFunctionCall","src":"2840:7:18"}],"functionName":{"name":"and","nativeSrc":"2821:3:18","nodeType":"YulIdentifier","src":"2821:3:18"},"nativeSrc":"2821:27:18","nodeType":"YulFunctionCall","src":"2821:27:18"}],"functionName":{"name":"add","nativeSrc":"2809:3:18","nodeType":"YulIdentifier","src":"2809:3:18"},"nativeSrc":"2809:40:18","nodeType":"YulFunctionCall","src":"2809:40:18"},"variables":[{"name":"newFreePtr","nativeSrc":"2795:10:18","nodeType":"YulTypedName","src":"2795:10:18","type":""}]},{"body":{"nativeSrc":"2924:22:18","nodeType":"YulBlock","src":"2924:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2926:16:18","nodeType":"YulIdentifier","src":"2926:16:18"},"nativeSrc":"2926:18:18","nodeType":"YulFunctionCall","src":"2926:18:18"},"nativeSrc":"2926:18:18","nodeType":"YulExpressionStatement","src":"2926:18:18"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"2867:10:18","nodeType":"YulIdentifier","src":"2867:10:18"},{"kind":"number","nativeSrc":"2879:18:18","nodeType":"YulLiteral","src":"2879:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2864:2:18","nodeType":"YulIdentifier","src":"2864:2:18"},"nativeSrc":"2864:34:18","nodeType":"YulFunctionCall","src":"2864:34:18"},{"arguments":[{"name":"newFreePtr","nativeSrc":"2903:10:18","nodeType":"YulIdentifier","src":"2903:10:18"},{"name":"memPtr","nativeSrc":"2915:6:18","nodeType":"YulIdentifier","src":"2915:6:18"}],"functionName":{"name":"lt","nativeSrc":"2900:2:18","nodeType":"YulIdentifier","src":"2900:2:18"},"nativeSrc":"2900:22:18","nodeType":"YulFunctionCall","src":"2900:22:18"}],"functionName":{"name":"or","nativeSrc":"2861:2:18","nodeType":"YulIdentifier","src":"2861:2:18"},"nativeSrc":"2861:62:18","nodeType":"YulFunctionCall","src":"2861:62:18"},"nativeSrc":"2858:88:18","nodeType":"YulIf","src":"2858:88:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2962:2:18","nodeType":"YulLiteral","src":"2962:2:18","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"2966:10:18","nodeType":"YulIdentifier","src":"2966:10:18"}],"functionName":{"name":"mstore","nativeSrc":"2955:6:18","nodeType":"YulIdentifier","src":"2955:6:18"},"nativeSrc":"2955:22:18","nodeType":"YulFunctionCall","src":"2955:22:18"},"nativeSrc":"2955:22:18","nodeType":"YulExpressionStatement","src":"2955:22:18"}]},"name":"allocate_memory","nativeSrc":"2708:275:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"2733:4:18","nodeType":"YulTypedName","src":"2733:4:18","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"2742:6:18","nodeType":"YulTypedName","src":"2742:6:18","type":""}],"src":"2708:275:18"},{"body":{"nativeSrc":"3057:114:18","nodeType":"YulBlock","src":"3057:114:18","statements":[{"body":{"nativeSrc":"3101:22:18","nodeType":"YulBlock","src":"3101:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3103:16:18","nodeType":"YulIdentifier","src":"3103:16:18"},"nativeSrc":"3103:18:18","nodeType":"YulFunctionCall","src":"3103:18:18"},"nativeSrc":"3103:18:18","nodeType":"YulExpressionStatement","src":"3103:18:18"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3073:6:18","nodeType":"YulIdentifier","src":"3073:6:18"},{"kind":"number","nativeSrc":"3081:18:18","nodeType":"YulLiteral","src":"3081:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3070:2:18","nodeType":"YulIdentifier","src":"3070:2:18"},"nativeSrc":"3070:30:18","nodeType":"YulFunctionCall","src":"3070:30:18"},"nativeSrc":"3067:56:18","nodeType":"YulIf","src":"3067:56:18"},{"nativeSrc":"3132:33:18","nodeType":"YulAssignment","src":"3132:33:18","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3148:1:18","nodeType":"YulLiteral","src":"3148:1:18","type":"","value":"5"},{"name":"length","nativeSrc":"3151:6:18","nodeType":"YulIdentifier","src":"3151:6:18"}],"functionName":{"name":"shl","nativeSrc":"3144:3:18","nodeType":"YulIdentifier","src":"3144:3:18"},"nativeSrc":"3144:14:18","nodeType":"YulFunctionCall","src":"3144:14:18"},{"kind":"number","nativeSrc":"3160:4:18","nodeType":"YulLiteral","src":"3160:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3140:3:18","nodeType":"YulIdentifier","src":"3140:3:18"},"nativeSrc":"3140:25:18","nodeType":"YulFunctionCall","src":"3140:25:18"},"variableNames":[{"name":"size","nativeSrc":"3132:4:18","nodeType":"YulIdentifier","src":"3132:4:18"}]}]},"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"2988:183:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"3037:6:18","nodeType":"YulTypedName","src":"3037:6:18","type":""}],"returnVariables":[{"name":"size","nativeSrc":"3048:4:18","nodeType":"YulTypedName","src":"3048:4:18","type":""}],"src":"2988:183:18"},{"body":{"nativeSrc":"3240:659:18","nodeType":"YulBlock","src":"3240:659:18","statements":[{"body":{"nativeSrc":"3289:16:18","nodeType":"YulBlock","src":"3289:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3298:1:18","nodeType":"YulLiteral","src":"3298:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3301:1:18","nodeType":"YulLiteral","src":"3301:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3291:6:18","nodeType":"YulIdentifier","src":"3291:6:18"},"nativeSrc":"3291:12:18","nodeType":"YulFunctionCall","src":"3291:12:18"},"nativeSrc":"3291:12:18","nodeType":"YulExpressionStatement","src":"3291:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3268:6:18","nodeType":"YulIdentifier","src":"3268:6:18"},{"kind":"number","nativeSrc":"3276:4:18","nodeType":"YulLiteral","src":"3276:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3264:3:18","nodeType":"YulIdentifier","src":"3264:3:18"},"nativeSrc":"3264:17:18","nodeType":"YulFunctionCall","src":"3264:17:18"},{"name":"end","nativeSrc":"3283:3:18","nodeType":"YulIdentifier","src":"3283:3:18"}],"functionName":{"name":"slt","nativeSrc":"3260:3:18","nodeType":"YulIdentifier","src":"3260:3:18"},"nativeSrc":"3260:27:18","nodeType":"YulFunctionCall","src":"3260:27:18"}],"functionName":{"name":"iszero","nativeSrc":"3253:6:18","nodeType":"YulIdentifier","src":"3253:6:18"},"nativeSrc":"3253:35:18","nodeType":"YulFunctionCall","src":"3253:35:18"},"nativeSrc":"3250:55:18","nodeType":"YulIf","src":"3250:55:18"},{"nativeSrc":"3314:34:18","nodeType":"YulVariableDeclaration","src":"3314:34:18","value":{"arguments":[{"name":"offset","nativeSrc":"3341:6:18","nodeType":"YulIdentifier","src":"3341:6:18"}],"functionName":{"name":"calldataload","nativeSrc":"3328:12:18","nodeType":"YulIdentifier","src":"3328:12:18"},"nativeSrc":"3328:20:18","nodeType":"YulFunctionCall","src":"3328:20:18"},"variables":[{"name":"length","nativeSrc":"3318:6:18","nodeType":"YulTypedName","src":"3318:6:18","type":""}]},{"nativeSrc":"3357:75:18","nodeType":"YulVariableDeclaration","src":"3357:75:18","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3424:6:18","nodeType":"YulIdentifier","src":"3424:6:18"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"3384:39:18","nodeType":"YulIdentifier","src":"3384:39:18"},"nativeSrc":"3384:47:18","nodeType":"YulFunctionCall","src":"3384:47:18"}],"functionName":{"name":"allocate_memory","nativeSrc":"3368:15:18","nodeType":"YulIdentifier","src":"3368:15:18"},"nativeSrc":"3368:64:18","nodeType":"YulFunctionCall","src":"3368:64:18"},"variables":[{"name":"dst","nativeSrc":"3361:3:18","nodeType":"YulTypedName","src":"3361:3:18","type":""}]},{"nativeSrc":"3441:18:18","nodeType":"YulVariableDeclaration","src":"3441:18:18","value":{"name":"dst","nativeSrc":"3456:3:18","nodeType":"YulIdentifier","src":"3456:3:18"},"variables":[{"name":"array_1","nativeSrc":"3445:7:18","nodeType":"YulTypedName","src":"3445:7:18","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"3475:3:18","nodeType":"YulIdentifier","src":"3475:3:18"},{"name":"length","nativeSrc":"3480:6:18","nodeType":"YulIdentifier","src":"3480:6:18"}],"functionName":{"name":"mstore","nativeSrc":"3468:6:18","nodeType":"YulIdentifier","src":"3468:6:18"},"nativeSrc":"3468:19:18","nodeType":"YulFunctionCall","src":"3468:19:18"},"nativeSrc":"3468:19:18","nodeType":"YulExpressionStatement","src":"3468:19:18"},{"nativeSrc":"3496:21:18","nodeType":"YulAssignment","src":"3496:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"3507:3:18","nodeType":"YulIdentifier","src":"3507:3:18"},{"kind":"number","nativeSrc":"3512:4:18","nodeType":"YulLiteral","src":"3512:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3503:3:18","nodeType":"YulIdentifier","src":"3503:3:18"},"nativeSrc":"3503:14:18","nodeType":"YulFunctionCall","src":"3503:14:18"},"variableNames":[{"name":"dst","nativeSrc":"3496:3:18","nodeType":"YulIdentifier","src":"3496:3:18"}]},{"nativeSrc":"3526:52:18","nodeType":"YulVariableDeclaration","src":"3526:52:18","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3548:6:18","nodeType":"YulIdentifier","src":"3548:6:18"},{"arguments":[{"kind":"number","nativeSrc":"3560:1:18","nodeType":"YulLiteral","src":"3560:1:18","type":"","value":"5"},{"name":"length","nativeSrc":"3563:6:18","nodeType":"YulIdentifier","src":"3563:6:18"}],"functionName":{"name":"shl","nativeSrc":"3556:3:18","nodeType":"YulIdentifier","src":"3556:3:18"},"nativeSrc":"3556:14:18","nodeType":"YulFunctionCall","src":"3556:14:18"}],"functionName":{"name":"add","nativeSrc":"3544:3:18","nodeType":"YulIdentifier","src":"3544:3:18"},"nativeSrc":"3544:27:18","nodeType":"YulFunctionCall","src":"3544:27:18"},{"kind":"number","nativeSrc":"3573:4:18","nodeType":"YulLiteral","src":"3573:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3540:3:18","nodeType":"YulIdentifier","src":"3540:3:18"},"nativeSrc":"3540:38:18","nodeType":"YulFunctionCall","src":"3540:38:18"},"variables":[{"name":"srcEnd","nativeSrc":"3530:6:18","nodeType":"YulTypedName","src":"3530:6:18","type":""}]},{"body":{"nativeSrc":"3606:16:18","nodeType":"YulBlock","src":"3606:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3615:1:18","nodeType":"YulLiteral","src":"3615:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"3618:1:18","nodeType":"YulLiteral","src":"3618:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3608:6:18","nodeType":"YulIdentifier","src":"3608:6:18"},"nativeSrc":"3608:12:18","nodeType":"YulFunctionCall","src":"3608:12:18"},"nativeSrc":"3608:12:18","nodeType":"YulExpressionStatement","src":"3608:12:18"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"3593:6:18","nodeType":"YulIdentifier","src":"3593:6:18"},{"name":"end","nativeSrc":"3601:3:18","nodeType":"YulIdentifier","src":"3601:3:18"}],"functionName":{"name":"gt","nativeSrc":"3590:2:18","nodeType":"YulIdentifier","src":"3590:2:18"},"nativeSrc":"3590:15:18","nodeType":"YulFunctionCall","src":"3590:15:18"},"nativeSrc":"3587:35:18","nodeType":"YulIf","src":"3587:35:18"},{"nativeSrc":"3631:28:18","nodeType":"YulVariableDeclaration","src":"3631:28:18","value":{"arguments":[{"name":"offset","nativeSrc":"3646:6:18","nodeType":"YulIdentifier","src":"3646:6:18"},{"kind":"number","nativeSrc":"3654:4:18","nodeType":"YulLiteral","src":"3654:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3642:3:18","nodeType":"YulIdentifier","src":"3642:3:18"},"nativeSrc":"3642:17:18","nodeType":"YulFunctionCall","src":"3642:17:18"},"variables":[{"name":"src","nativeSrc":"3635:3:18","nodeType":"YulTypedName","src":"3635:3:18","type":""}]},{"body":{"nativeSrc":"3726:142:18","nodeType":"YulBlock","src":"3726:142:18","statements":[{"nativeSrc":"3740:14:18","nodeType":"YulVariableDeclaration","src":"3740:14:18","value":{"kind":"number","nativeSrc":"3753:1:18","nodeType":"YulLiteral","src":"3753:1:18","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3744:5:18","nodeType":"YulTypedName","src":"3744:5:18","type":""}]},{"nativeSrc":"3767:26:18","nodeType":"YulAssignment","src":"3767:26:18","value":{"arguments":[{"name":"src","nativeSrc":"3789:3:18","nodeType":"YulIdentifier","src":"3789:3:18"}],"functionName":{"name":"calldataload","nativeSrc":"3776:12:18","nodeType":"YulIdentifier","src":"3776:12:18"},"nativeSrc":"3776:17:18","nodeType":"YulFunctionCall","src":"3776:17:18"},"variableNames":[{"name":"value","nativeSrc":"3767:5:18","nodeType":"YulIdentifier","src":"3767:5:18"}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"3813:3:18","nodeType":"YulIdentifier","src":"3813:3:18"},{"name":"value","nativeSrc":"3818:5:18","nodeType":"YulIdentifier","src":"3818:5:18"}],"functionName":{"name":"mstore","nativeSrc":"3806:6:18","nodeType":"YulIdentifier","src":"3806:6:18"},"nativeSrc":"3806:18:18","nodeType":"YulFunctionCall","src":"3806:18:18"},"nativeSrc":"3806:18:18","nodeType":"YulExpressionStatement","src":"3806:18:18"},{"nativeSrc":"3837:21:18","nodeType":"YulAssignment","src":"3837:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"3848:3:18","nodeType":"YulIdentifier","src":"3848:3:18"},{"kind":"number","nativeSrc":"3853:4:18","nodeType":"YulLiteral","src":"3853:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3844:3:18","nodeType":"YulIdentifier","src":"3844:3:18"},"nativeSrc":"3844:14:18","nodeType":"YulFunctionCall","src":"3844:14:18"},"variableNames":[{"name":"dst","nativeSrc":"3837:3:18","nodeType":"YulIdentifier","src":"3837:3:18"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"3679:3:18","nodeType":"YulIdentifier","src":"3679:3:18"},{"name":"srcEnd","nativeSrc":"3684:6:18","nodeType":"YulIdentifier","src":"3684:6:18"}],"functionName":{"name":"lt","nativeSrc":"3676:2:18","nodeType":"YulIdentifier","src":"3676:2:18"},"nativeSrc":"3676:15:18","nodeType":"YulFunctionCall","src":"3676:15:18"},"nativeSrc":"3668:200:18","nodeType":"YulForLoop","post":{"nativeSrc":"3692:25:18","nodeType":"YulBlock","src":"3692:25:18","statements":[{"nativeSrc":"3694:21:18","nodeType":"YulAssignment","src":"3694:21:18","value":{"arguments":[{"name":"src","nativeSrc":"3705:3:18","nodeType":"YulIdentifier","src":"3705:3:18"},{"kind":"number","nativeSrc":"3710:4:18","nodeType":"YulLiteral","src":"3710:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3701:3:18","nodeType":"YulIdentifier","src":"3701:3:18"},"nativeSrc":"3701:14:18","nodeType":"YulFunctionCall","src":"3701:14:18"},"variableNames":[{"name":"src","nativeSrc":"3694:3:18","nodeType":"YulIdentifier","src":"3694:3:18"}]}]},"pre":{"nativeSrc":"3672:3:18","nodeType":"YulBlock","src":"3672:3:18","statements":[]},"src":"3668:200:18"},{"nativeSrc":"3877:16:18","nodeType":"YulAssignment","src":"3877:16:18","value":{"name":"array_1","nativeSrc":"3886:7:18","nodeType":"YulIdentifier","src":"3886:7:18"},"variableNames":[{"name":"array","nativeSrc":"3877:5:18","nodeType":"YulIdentifier","src":"3877:5:18"}]}]},"name":"abi_decode_array_uint256_dyn","nativeSrc":"3176:723:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3214:6:18","nodeType":"YulTypedName","src":"3214:6:18","type":""},{"name":"end","nativeSrc":"3222:3:18","nodeType":"YulTypedName","src":"3222:3:18","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3230:5:18","nodeType":"YulTypedName","src":"3230:5:18","type":""}],"src":"3176:723:18"},{"body":{"nativeSrc":"3965:677:18","nodeType":"YulBlock","src":"3965:677:18","statements":[{"body":{"nativeSrc":"4014:16:18","nodeType":"YulBlock","src":"4014:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4023:1:18","nodeType":"YulLiteral","src":"4023:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4026:1:18","nodeType":"YulLiteral","src":"4026:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4016:6:18","nodeType":"YulIdentifier","src":"4016:6:18"},"nativeSrc":"4016:12:18","nodeType":"YulFunctionCall","src":"4016:12:18"},"nativeSrc":"4016:12:18","nodeType":"YulExpressionStatement","src":"4016:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3993:6:18","nodeType":"YulIdentifier","src":"3993:6:18"},{"kind":"number","nativeSrc":"4001:4:18","nodeType":"YulLiteral","src":"4001:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3989:3:18","nodeType":"YulIdentifier","src":"3989:3:18"},"nativeSrc":"3989:17:18","nodeType":"YulFunctionCall","src":"3989:17:18"},{"name":"end","nativeSrc":"4008:3:18","nodeType":"YulIdentifier","src":"4008:3:18"}],"functionName":{"name":"slt","nativeSrc":"3985:3:18","nodeType":"YulIdentifier","src":"3985:3:18"},"nativeSrc":"3985:27:18","nodeType":"YulFunctionCall","src":"3985:27:18"}],"functionName":{"name":"iszero","nativeSrc":"3978:6:18","nodeType":"YulIdentifier","src":"3978:6:18"},"nativeSrc":"3978:35:18","nodeType":"YulFunctionCall","src":"3978:35:18"},"nativeSrc":"3975:55:18","nodeType":"YulIf","src":"3975:55:18"},{"nativeSrc":"4039:34:18","nodeType":"YulVariableDeclaration","src":"4039:34:18","value":{"arguments":[{"name":"offset","nativeSrc":"4066:6:18","nodeType":"YulIdentifier","src":"4066:6:18"}],"functionName":{"name":"calldataload","nativeSrc":"4053:12:18","nodeType":"YulIdentifier","src":"4053:12:18"},"nativeSrc":"4053:20:18","nodeType":"YulFunctionCall","src":"4053:20:18"},"variables":[{"name":"length","nativeSrc":"4043:6:18","nodeType":"YulTypedName","src":"4043:6:18","type":""}]},{"nativeSrc":"4082:75:18","nodeType":"YulVariableDeclaration","src":"4082:75:18","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"4149:6:18","nodeType":"YulIdentifier","src":"4149:6:18"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"4109:39:18","nodeType":"YulIdentifier","src":"4109:39:18"},"nativeSrc":"4109:47:18","nodeType":"YulFunctionCall","src":"4109:47:18"}],"functionName":{"name":"allocate_memory","nativeSrc":"4093:15:18","nodeType":"YulIdentifier","src":"4093:15:18"},"nativeSrc":"4093:64:18","nodeType":"YulFunctionCall","src":"4093:64:18"},"variables":[{"name":"dst","nativeSrc":"4086:3:18","nodeType":"YulTypedName","src":"4086:3:18","type":""}]},{"nativeSrc":"4166:18:18","nodeType":"YulVariableDeclaration","src":"4166:18:18","value":{"name":"dst","nativeSrc":"4181:3:18","nodeType":"YulIdentifier","src":"4181:3:18"},"variables":[{"name":"array_1","nativeSrc":"4170:7:18","nodeType":"YulTypedName","src":"4170:7:18","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"4200:3:18","nodeType":"YulIdentifier","src":"4200:3:18"},{"name":"length","nativeSrc":"4205:6:18","nodeType":"YulIdentifier","src":"4205:6:18"}],"functionName":{"name":"mstore","nativeSrc":"4193:6:18","nodeType":"YulIdentifier","src":"4193:6:18"},"nativeSrc":"4193:19:18","nodeType":"YulFunctionCall","src":"4193:19:18"},"nativeSrc":"4193:19:18","nodeType":"YulExpressionStatement","src":"4193:19:18"},{"nativeSrc":"4221:21:18","nodeType":"YulAssignment","src":"4221:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"4232:3:18","nodeType":"YulIdentifier","src":"4232:3:18"},{"kind":"number","nativeSrc":"4237:4:18","nodeType":"YulLiteral","src":"4237:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4228:3:18","nodeType":"YulIdentifier","src":"4228:3:18"},"nativeSrc":"4228:14:18","nodeType":"YulFunctionCall","src":"4228:14:18"},"variableNames":[{"name":"dst","nativeSrc":"4221:3:18","nodeType":"YulIdentifier","src":"4221:3:18"}]},{"nativeSrc":"4251:52:18","nodeType":"YulVariableDeclaration","src":"4251:52:18","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4273:6:18","nodeType":"YulIdentifier","src":"4273:6:18"},{"arguments":[{"kind":"number","nativeSrc":"4285:1:18","nodeType":"YulLiteral","src":"4285:1:18","type":"","value":"5"},{"name":"length","nativeSrc":"4288:6:18","nodeType":"YulIdentifier","src":"4288:6:18"}],"functionName":{"name":"shl","nativeSrc":"4281:3:18","nodeType":"YulIdentifier","src":"4281:3:18"},"nativeSrc":"4281:14:18","nodeType":"YulFunctionCall","src":"4281:14:18"}],"functionName":{"name":"add","nativeSrc":"4269:3:18","nodeType":"YulIdentifier","src":"4269:3:18"},"nativeSrc":"4269:27:18","nodeType":"YulFunctionCall","src":"4269:27:18"},{"kind":"number","nativeSrc":"4298:4:18","nodeType":"YulLiteral","src":"4298:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4265:3:18","nodeType":"YulIdentifier","src":"4265:3:18"},"nativeSrc":"4265:38:18","nodeType":"YulFunctionCall","src":"4265:38:18"},"variables":[{"name":"srcEnd","nativeSrc":"4255:6:18","nodeType":"YulTypedName","src":"4255:6:18","type":""}]},{"body":{"nativeSrc":"4331:16:18","nodeType":"YulBlock","src":"4331:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4340:1:18","nodeType":"YulLiteral","src":"4340:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4343:1:18","nodeType":"YulLiteral","src":"4343:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4333:6:18","nodeType":"YulIdentifier","src":"4333:6:18"},"nativeSrc":"4333:12:18","nodeType":"YulFunctionCall","src":"4333:12:18"},"nativeSrc":"4333:12:18","nodeType":"YulExpressionStatement","src":"4333:12:18"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"4318:6:18","nodeType":"YulIdentifier","src":"4318:6:18"},{"name":"end","nativeSrc":"4326:3:18","nodeType":"YulIdentifier","src":"4326:3:18"}],"functionName":{"name":"gt","nativeSrc":"4315:2:18","nodeType":"YulIdentifier","src":"4315:2:18"},"nativeSrc":"4315:15:18","nodeType":"YulFunctionCall","src":"4315:15:18"},"nativeSrc":"4312:35:18","nodeType":"YulIf","src":"4312:35:18"},{"nativeSrc":"4356:28:18","nodeType":"YulVariableDeclaration","src":"4356:28:18","value":{"arguments":[{"name":"offset","nativeSrc":"4371:6:18","nodeType":"YulIdentifier","src":"4371:6:18"},{"kind":"number","nativeSrc":"4379:4:18","nodeType":"YulLiteral","src":"4379:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4367:3:18","nodeType":"YulIdentifier","src":"4367:3:18"},"nativeSrc":"4367:17:18","nodeType":"YulFunctionCall","src":"4367:17:18"},"variables":[{"name":"src","nativeSrc":"4360:3:18","nodeType":"YulTypedName","src":"4360:3:18","type":""}]},{"body":{"nativeSrc":"4451:160:18","nodeType":"YulBlock","src":"4451:160:18","statements":[{"nativeSrc":"4465:30:18","nodeType":"YulVariableDeclaration","src":"4465:30:18","value":{"arguments":[{"name":"src","nativeSrc":"4491:3:18","nodeType":"YulIdentifier","src":"4491:3:18"}],"functionName":{"name":"calldataload","nativeSrc":"4478:12:18","nodeType":"YulIdentifier","src":"4478:12:18"},"nativeSrc":"4478:17:18","nodeType":"YulFunctionCall","src":"4478:17:18"},"variables":[{"name":"value","nativeSrc":"4469:5:18","nodeType":"YulTypedName","src":"4469:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4530:5:18","nodeType":"YulIdentifier","src":"4530:5:18"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4508:21:18","nodeType":"YulIdentifier","src":"4508:21:18"},"nativeSrc":"4508:28:18","nodeType":"YulFunctionCall","src":"4508:28:18"},"nativeSrc":"4508:28:18","nodeType":"YulExpressionStatement","src":"4508:28:18"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"4556:3:18","nodeType":"YulIdentifier","src":"4556:3:18"},{"name":"value","nativeSrc":"4561:5:18","nodeType":"YulIdentifier","src":"4561:5:18"}],"functionName":{"name":"mstore","nativeSrc":"4549:6:18","nodeType":"YulIdentifier","src":"4549:6:18"},"nativeSrc":"4549:18:18","nodeType":"YulFunctionCall","src":"4549:18:18"},"nativeSrc":"4549:18:18","nodeType":"YulExpressionStatement","src":"4549:18:18"},{"nativeSrc":"4580:21:18","nodeType":"YulAssignment","src":"4580:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"4591:3:18","nodeType":"YulIdentifier","src":"4591:3:18"},{"kind":"number","nativeSrc":"4596:4:18","nodeType":"YulLiteral","src":"4596:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4587:3:18","nodeType":"YulIdentifier","src":"4587:3:18"},"nativeSrc":"4587:14:18","nodeType":"YulFunctionCall","src":"4587:14:18"},"variableNames":[{"name":"dst","nativeSrc":"4580:3:18","nodeType":"YulIdentifier","src":"4580:3:18"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"4404:3:18","nodeType":"YulIdentifier","src":"4404:3:18"},{"name":"srcEnd","nativeSrc":"4409:6:18","nodeType":"YulIdentifier","src":"4409:6:18"}],"functionName":{"name":"lt","nativeSrc":"4401:2:18","nodeType":"YulIdentifier","src":"4401:2:18"},"nativeSrc":"4401:15:18","nodeType":"YulFunctionCall","src":"4401:15:18"},"nativeSrc":"4393:218:18","nodeType":"YulForLoop","post":{"nativeSrc":"4417:25:18","nodeType":"YulBlock","src":"4417:25:18","statements":[{"nativeSrc":"4419:21:18","nodeType":"YulAssignment","src":"4419:21:18","value":{"arguments":[{"name":"src","nativeSrc":"4430:3:18","nodeType":"YulIdentifier","src":"4430:3:18"},{"kind":"number","nativeSrc":"4435:4:18","nodeType":"YulLiteral","src":"4435:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4426:3:18","nodeType":"YulIdentifier","src":"4426:3:18"},"nativeSrc":"4426:14:18","nodeType":"YulFunctionCall","src":"4426:14:18"},"variableNames":[{"name":"src","nativeSrc":"4419:3:18","nodeType":"YulIdentifier","src":"4419:3:18"}]}]},"pre":{"nativeSrc":"4397:3:18","nodeType":"YulBlock","src":"4397:3:18","statements":[]},"src":"4393:218:18"},{"nativeSrc":"4620:16:18","nodeType":"YulAssignment","src":"4620:16:18","value":{"name":"array_1","nativeSrc":"4629:7:18","nodeType":"YulIdentifier","src":"4629:7:18"},"variableNames":[{"name":"array","nativeSrc":"4620:5:18","nodeType":"YulIdentifier","src":"4620:5:18"}]}]},"name":"abi_decode_array_bool_dyn","nativeSrc":"3904:738:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3939:6:18","nodeType":"YulTypedName","src":"3939:6:18","type":""},{"name":"end","nativeSrc":"3947:3:18","nodeType":"YulTypedName","src":"3947:3:18","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3955:5:18","nodeType":"YulTypedName","src":"3955:5:18","type":""}],"src":"3904:738:18"},{"body":{"nativeSrc":"4882:970:18","nodeType":"YulBlock","src":"4882:970:18","statements":[{"body":{"nativeSrc":"4929:16:18","nodeType":"YulBlock","src":"4929:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4938:1:18","nodeType":"YulLiteral","src":"4938:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"4941:1:18","nodeType":"YulLiteral","src":"4941:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4931:6:18","nodeType":"YulIdentifier","src":"4931:6:18"},"nativeSrc":"4931:12:18","nodeType":"YulFunctionCall","src":"4931:12:18"},"nativeSrc":"4931:12:18","nodeType":"YulExpressionStatement","src":"4931:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4903:7:18","nodeType":"YulIdentifier","src":"4903:7:18"},{"name":"headStart","nativeSrc":"4912:9:18","nodeType":"YulIdentifier","src":"4912:9:18"}],"functionName":{"name":"sub","nativeSrc":"4899:3:18","nodeType":"YulIdentifier","src":"4899:3:18"},"nativeSrc":"4899:23:18","nodeType":"YulFunctionCall","src":"4899:23:18"},{"kind":"number","nativeSrc":"4924:3:18","nodeType":"YulLiteral","src":"4924:3:18","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"4895:3:18","nodeType":"YulIdentifier","src":"4895:3:18"},"nativeSrc":"4895:33:18","nodeType":"YulFunctionCall","src":"4895:33:18"},"nativeSrc":"4892:53:18","nodeType":"YulIf","src":"4892:53:18"},{"nativeSrc":"4954:37:18","nodeType":"YulVariableDeclaration","src":"4954:37:18","value":{"arguments":[{"name":"headStart","nativeSrc":"4981:9:18","nodeType":"YulIdentifier","src":"4981:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"4968:12:18","nodeType":"YulIdentifier","src":"4968:12:18"},"nativeSrc":"4968:23:18","nodeType":"YulFunctionCall","src":"4968:23:18"},"variables":[{"name":"offset","nativeSrc":"4958:6:18","nodeType":"YulTypedName","src":"4958:6:18","type":""}]},{"body":{"nativeSrc":"5034:16:18","nodeType":"YulBlock","src":"5034:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5043:1:18","nodeType":"YulLiteral","src":"5043:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"5046:1:18","nodeType":"YulLiteral","src":"5046:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5036:6:18","nodeType":"YulIdentifier","src":"5036:6:18"},"nativeSrc":"5036:12:18","nodeType":"YulFunctionCall","src":"5036:12:18"},"nativeSrc":"5036:12:18","nodeType":"YulExpressionStatement","src":"5036:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5006:6:18","nodeType":"YulIdentifier","src":"5006:6:18"},{"kind":"number","nativeSrc":"5014:18:18","nodeType":"YulLiteral","src":"5014:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5003:2:18","nodeType":"YulIdentifier","src":"5003:2:18"},"nativeSrc":"5003:30:18","nodeType":"YulFunctionCall","src":"5003:30:18"},"nativeSrc":"5000:50:18","nodeType":"YulIf","src":"5000:50:18"},{"nativeSrc":"5059:71:18","nodeType":"YulAssignment","src":"5059:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5102:9:18","nodeType":"YulIdentifier","src":"5102:9:18"},{"name":"offset","nativeSrc":"5113:6:18","nodeType":"YulIdentifier","src":"5113:6:18"}],"functionName":{"name":"add","nativeSrc":"5098:3:18","nodeType":"YulIdentifier","src":"5098:3:18"},"nativeSrc":"5098:22:18","nodeType":"YulFunctionCall","src":"5098:22:18"},{"name":"dataEnd","nativeSrc":"5122:7:18","nodeType":"YulIdentifier","src":"5122:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"5069:28:18","nodeType":"YulIdentifier","src":"5069:28:18"},"nativeSrc":"5069:61:18","nodeType":"YulFunctionCall","src":"5069:61:18"},"variableNames":[{"name":"value0","nativeSrc":"5059:6:18","nodeType":"YulIdentifier","src":"5059:6:18"}]},{"nativeSrc":"5139:45:18","nodeType":"YulVariableDeclaration","src":"5139:45:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5169:9:18","nodeType":"YulIdentifier","src":"5169:9:18"},{"kind":"number","nativeSrc":"5180:2:18","nodeType":"YulLiteral","src":"5180:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5165:3:18","nodeType":"YulIdentifier","src":"5165:3:18"},"nativeSrc":"5165:18:18","nodeType":"YulFunctionCall","src":"5165:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"5152:12:18","nodeType":"YulIdentifier","src":"5152:12:18"},"nativeSrc":"5152:32:18","nodeType":"YulFunctionCall","src":"5152:32:18"},"variables":[{"name":"value","nativeSrc":"5143:5:18","nodeType":"YulTypedName","src":"5143:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5218:5:18","nodeType":"YulIdentifier","src":"5218:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5193:24:18","nodeType":"YulIdentifier","src":"5193:24:18"},"nativeSrc":"5193:31:18","nodeType":"YulFunctionCall","src":"5193:31:18"},"nativeSrc":"5193:31:18","nodeType":"YulExpressionStatement","src":"5193:31:18"},{"nativeSrc":"5233:15:18","nodeType":"YulAssignment","src":"5233:15:18","value":{"name":"value","nativeSrc":"5243:5:18","nodeType":"YulIdentifier","src":"5243:5:18"},"variableNames":[{"name":"value1","nativeSrc":"5233:6:18","nodeType":"YulIdentifier","src":"5233:6:18"}]},{"nativeSrc":"5257:48:18","nodeType":"YulVariableDeclaration","src":"5257:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5290:9:18","nodeType":"YulIdentifier","src":"5290:9:18"},{"kind":"number","nativeSrc":"5301:2:18","nodeType":"YulLiteral","src":"5301:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5286:3:18","nodeType":"YulIdentifier","src":"5286:3:18"},"nativeSrc":"5286:18:18","nodeType":"YulFunctionCall","src":"5286:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"5273:12:18","nodeType":"YulIdentifier","src":"5273:12:18"},"nativeSrc":"5273:32:18","nodeType":"YulFunctionCall","src":"5273:32:18"},"variables":[{"name":"offset_1","nativeSrc":"5261:8:18","nodeType":"YulTypedName","src":"5261:8:18","type":""}]},{"body":{"nativeSrc":"5350:16:18","nodeType":"YulBlock","src":"5350:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5359:1:18","nodeType":"YulLiteral","src":"5359:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"5362:1:18","nodeType":"YulLiteral","src":"5362:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5352:6:18","nodeType":"YulIdentifier","src":"5352:6:18"},"nativeSrc":"5352:12:18","nodeType":"YulFunctionCall","src":"5352:12:18"},"nativeSrc":"5352:12:18","nodeType":"YulExpressionStatement","src":"5352:12:18"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"5320:8:18","nodeType":"YulIdentifier","src":"5320:8:18"},{"kind":"number","nativeSrc":"5330:18:18","nodeType":"YulLiteral","src":"5330:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5317:2:18","nodeType":"YulIdentifier","src":"5317:2:18"},"nativeSrc":"5317:32:18","nodeType":"YulFunctionCall","src":"5317:32:18"},"nativeSrc":"5314:52:18","nodeType":"YulIf","src":"5314:52:18"},{"nativeSrc":"5375:73:18","nodeType":"YulAssignment","src":"5375:73:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5418:9:18","nodeType":"YulIdentifier","src":"5418:9:18"},{"name":"offset_1","nativeSrc":"5429:8:18","nodeType":"YulIdentifier","src":"5429:8:18"}],"functionName":{"name":"add","nativeSrc":"5414:3:18","nodeType":"YulIdentifier","src":"5414:3:18"},"nativeSrc":"5414:24:18","nodeType":"YulFunctionCall","src":"5414:24:18"},{"name":"dataEnd","nativeSrc":"5440:7:18","nodeType":"YulIdentifier","src":"5440:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"5385:28:18","nodeType":"YulIdentifier","src":"5385:28:18"},"nativeSrc":"5385:63:18","nodeType":"YulFunctionCall","src":"5385:63:18"},"variableNames":[{"name":"value2","nativeSrc":"5375:6:18","nodeType":"YulIdentifier","src":"5375:6:18"}]},{"nativeSrc":"5457:48:18","nodeType":"YulVariableDeclaration","src":"5457:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5490:9:18","nodeType":"YulIdentifier","src":"5490:9:18"},{"kind":"number","nativeSrc":"5501:2:18","nodeType":"YulLiteral","src":"5501:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5486:3:18","nodeType":"YulIdentifier","src":"5486:3:18"},"nativeSrc":"5486:18:18","nodeType":"YulFunctionCall","src":"5486:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"5473:12:18","nodeType":"YulIdentifier","src":"5473:12:18"},"nativeSrc":"5473:32:18","nodeType":"YulFunctionCall","src":"5473:32:18"},"variables":[{"name":"offset_2","nativeSrc":"5461:8:18","nodeType":"YulTypedName","src":"5461:8:18","type":""}]},{"body":{"nativeSrc":"5550:16:18","nodeType":"YulBlock","src":"5550:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5559:1:18","nodeType":"YulLiteral","src":"5559:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"5562:1:18","nodeType":"YulLiteral","src":"5562:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5552:6:18","nodeType":"YulIdentifier","src":"5552:6:18"},"nativeSrc":"5552:12:18","nodeType":"YulFunctionCall","src":"5552:12:18"},"nativeSrc":"5552:12:18","nodeType":"YulExpressionStatement","src":"5552:12:18"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"5520:8:18","nodeType":"YulIdentifier","src":"5520:8:18"},{"kind":"number","nativeSrc":"5530:18:18","nodeType":"YulLiteral","src":"5530:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5517:2:18","nodeType":"YulIdentifier","src":"5517:2:18"},"nativeSrc":"5517:32:18","nodeType":"YulFunctionCall","src":"5517:32:18"},"nativeSrc":"5514:52:18","nodeType":"YulIf","src":"5514:52:18"},{"nativeSrc":"5575:73:18","nodeType":"YulAssignment","src":"5575:73:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5618:9:18","nodeType":"YulIdentifier","src":"5618:9:18"},{"name":"offset_2","nativeSrc":"5629:8:18","nodeType":"YulIdentifier","src":"5629:8:18"}],"functionName":{"name":"add","nativeSrc":"5614:3:18","nodeType":"YulIdentifier","src":"5614:3:18"},"nativeSrc":"5614:24:18","nodeType":"YulFunctionCall","src":"5614:24:18"},{"name":"dataEnd","nativeSrc":"5640:7:18","nodeType":"YulIdentifier","src":"5640:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"5585:28:18","nodeType":"YulIdentifier","src":"5585:28:18"},"nativeSrc":"5585:63:18","nodeType":"YulFunctionCall","src":"5585:63:18"},"variableNames":[{"name":"value3","nativeSrc":"5575:6:18","nodeType":"YulIdentifier","src":"5575:6:18"}]},{"nativeSrc":"5657:49:18","nodeType":"YulVariableDeclaration","src":"5657:49:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5690:9:18","nodeType":"YulIdentifier","src":"5690:9:18"},{"kind":"number","nativeSrc":"5701:3:18","nodeType":"YulLiteral","src":"5701:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"5686:3:18","nodeType":"YulIdentifier","src":"5686:3:18"},"nativeSrc":"5686:19:18","nodeType":"YulFunctionCall","src":"5686:19:18"}],"functionName":{"name":"calldataload","nativeSrc":"5673:12:18","nodeType":"YulIdentifier","src":"5673:12:18"},"nativeSrc":"5673:33:18","nodeType":"YulFunctionCall","src":"5673:33:18"},"variables":[{"name":"offset_3","nativeSrc":"5661:8:18","nodeType":"YulTypedName","src":"5661:8:18","type":""}]},{"body":{"nativeSrc":"5751:16:18","nodeType":"YulBlock","src":"5751:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5760:1:18","nodeType":"YulLiteral","src":"5760:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"5763:1:18","nodeType":"YulLiteral","src":"5763:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5753:6:18","nodeType":"YulIdentifier","src":"5753:6:18"},"nativeSrc":"5753:12:18","nodeType":"YulFunctionCall","src":"5753:12:18"},"nativeSrc":"5753:12:18","nodeType":"YulExpressionStatement","src":"5753:12:18"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"5721:8:18","nodeType":"YulIdentifier","src":"5721:8:18"},{"kind":"number","nativeSrc":"5731:18:18","nodeType":"YulLiteral","src":"5731:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5718:2:18","nodeType":"YulIdentifier","src":"5718:2:18"},"nativeSrc":"5718:32:18","nodeType":"YulFunctionCall","src":"5718:32:18"},"nativeSrc":"5715:52:18","nodeType":"YulIf","src":"5715:52:18"},{"nativeSrc":"5776:70:18","nodeType":"YulAssignment","src":"5776:70:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5816:9:18","nodeType":"YulIdentifier","src":"5816:9:18"},{"name":"offset_3","nativeSrc":"5827:8:18","nodeType":"YulIdentifier","src":"5827:8:18"}],"functionName":{"name":"add","nativeSrc":"5812:3:18","nodeType":"YulIdentifier","src":"5812:3:18"},"nativeSrc":"5812:24:18","nodeType":"YulFunctionCall","src":"5812:24:18"},{"name":"dataEnd","nativeSrc":"5838:7:18","nodeType":"YulIdentifier","src":"5838:7:18"}],"functionName":{"name":"abi_decode_array_bool_dyn","nativeSrc":"5786:25:18","nodeType":"YulIdentifier","src":"5786:25:18"},"nativeSrc":"5786:60:18","nodeType":"YulFunctionCall","src":"5786:60:18"},"variableNames":[{"name":"value4","nativeSrc":"5776:6:18","nodeType":"YulIdentifier","src":"5776:6:18"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr","nativeSrc":"4647:1205:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4816:9:18","nodeType":"YulTypedName","src":"4816:9:18","type":""},{"name":"dataEnd","nativeSrc":"4827:7:18","nodeType":"YulTypedName","src":"4827:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4839:6:18","nodeType":"YulTypedName","src":"4839:6:18","type":""},{"name":"value1","nativeSrc":"4847:6:18","nodeType":"YulTypedName","src":"4847:6:18","type":""},{"name":"value2","nativeSrc":"4855:6:18","nodeType":"YulTypedName","src":"4855:6:18","type":""},{"name":"value3","nativeSrc":"4863:6:18","nodeType":"YulTypedName","src":"4863:6:18","type":""},{"name":"value4","nativeSrc":"4871:6:18","nodeType":"YulTypedName","src":"4871:6:18","type":""}],"src":"4647:1205:18"},{"body":{"nativeSrc":"5958:102:18","nodeType":"YulBlock","src":"5958:102:18","statements":[{"nativeSrc":"5968:26:18","nodeType":"YulAssignment","src":"5968:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"5980:9:18","nodeType":"YulIdentifier","src":"5980:9:18"},{"kind":"number","nativeSrc":"5991:2:18","nodeType":"YulLiteral","src":"5991:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5976:3:18","nodeType":"YulIdentifier","src":"5976:3:18"},"nativeSrc":"5976:18:18","nodeType":"YulFunctionCall","src":"5976:18:18"},"variableNames":[{"name":"tail","nativeSrc":"5968:4:18","nodeType":"YulIdentifier","src":"5968:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6010:9:18","nodeType":"YulIdentifier","src":"6010:9:18"},{"arguments":[{"name":"value0","nativeSrc":"6025:6:18","nodeType":"YulIdentifier","src":"6025:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6041:3:18","nodeType":"YulLiteral","src":"6041:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"6046:1:18","nodeType":"YulLiteral","src":"6046:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6037:3:18","nodeType":"YulIdentifier","src":"6037:3:18"},"nativeSrc":"6037:11:18","nodeType":"YulFunctionCall","src":"6037:11:18"},{"kind":"number","nativeSrc":"6050:1:18","nodeType":"YulLiteral","src":"6050:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6033:3:18","nodeType":"YulIdentifier","src":"6033:3:18"},"nativeSrc":"6033:19:18","nodeType":"YulFunctionCall","src":"6033:19:18"}],"functionName":{"name":"and","nativeSrc":"6021:3:18","nodeType":"YulIdentifier","src":"6021:3:18"},"nativeSrc":"6021:32:18","nodeType":"YulFunctionCall","src":"6021:32:18"}],"functionName":{"name":"mstore","nativeSrc":"6003:6:18","nodeType":"YulIdentifier","src":"6003:6:18"},"nativeSrc":"6003:51:18","nodeType":"YulFunctionCall","src":"6003:51:18"},"nativeSrc":"6003:51:18","nodeType":"YulExpressionStatement","src":"6003:51:18"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"5857:203:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5927:9:18","nodeType":"YulTypedName","src":"5927:9:18","type":""},{"name":"value0","nativeSrc":"5938:6:18","nodeType":"YulTypedName","src":"5938:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5949:4:18","nodeType":"YulTypedName","src":"5949:4:18","type":""}],"src":"5857:203:18"},{"body":{"nativeSrc":"6135:156:18","nodeType":"YulBlock","src":"6135:156:18","statements":[{"body":{"nativeSrc":"6181:16:18","nodeType":"YulBlock","src":"6181:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6190:1:18","nodeType":"YulLiteral","src":"6190:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"6193:1:18","nodeType":"YulLiteral","src":"6193:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6183:6:18","nodeType":"YulIdentifier","src":"6183:6:18"},"nativeSrc":"6183:12:18","nodeType":"YulFunctionCall","src":"6183:12:18"},"nativeSrc":"6183:12:18","nodeType":"YulExpressionStatement","src":"6183:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6156:7:18","nodeType":"YulIdentifier","src":"6156:7:18"},{"name":"headStart","nativeSrc":"6165:9:18","nodeType":"YulIdentifier","src":"6165:9:18"}],"functionName":{"name":"sub","nativeSrc":"6152:3:18","nodeType":"YulIdentifier","src":"6152:3:18"},"nativeSrc":"6152:23:18","nodeType":"YulFunctionCall","src":"6152:23:18"},{"kind":"number","nativeSrc":"6177:2:18","nodeType":"YulLiteral","src":"6177:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6148:3:18","nodeType":"YulIdentifier","src":"6148:3:18"},"nativeSrc":"6148:32:18","nodeType":"YulFunctionCall","src":"6148:32:18"},"nativeSrc":"6145:52:18","nodeType":"YulIf","src":"6145:52:18"},{"nativeSrc":"6206:14:18","nodeType":"YulVariableDeclaration","src":"6206:14:18","value":{"kind":"number","nativeSrc":"6219:1:18","nodeType":"YulLiteral","src":"6219:1:18","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6210:5:18","nodeType":"YulTypedName","src":"6210:5:18","type":""}]},{"nativeSrc":"6229:32:18","nodeType":"YulAssignment","src":"6229:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"6251:9:18","nodeType":"YulIdentifier","src":"6251:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"6238:12:18","nodeType":"YulIdentifier","src":"6238:12:18"},"nativeSrc":"6238:23:18","nodeType":"YulFunctionCall","src":"6238:23:18"},"variableNames":[{"name":"value","nativeSrc":"6229:5:18","nodeType":"YulIdentifier","src":"6229:5:18"}]},{"nativeSrc":"6270:15:18","nodeType":"YulAssignment","src":"6270:15:18","value":{"name":"value","nativeSrc":"6280:5:18","nodeType":"YulIdentifier","src":"6280:5:18"},"variableNames":[{"name":"value0","nativeSrc":"6270:6:18","nodeType":"YulIdentifier","src":"6270:6:18"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"6065:226:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6101:9:18","nodeType":"YulTypedName","src":"6101:9:18","type":""},{"name":"dataEnd","nativeSrc":"6112:7:18","nodeType":"YulTypedName","src":"6112:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6124:6:18","nodeType":"YulTypedName","src":"6124:6:18","type":""}],"src":"6065:226:18"},{"body":{"nativeSrc":"6360:680:18","nodeType":"YulBlock","src":"6360:680:18","statements":[{"body":{"nativeSrc":"6409:16:18","nodeType":"YulBlock","src":"6409:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6418:1:18","nodeType":"YulLiteral","src":"6418:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"6421:1:18","nodeType":"YulLiteral","src":"6421:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6411:6:18","nodeType":"YulIdentifier","src":"6411:6:18"},"nativeSrc":"6411:12:18","nodeType":"YulFunctionCall","src":"6411:12:18"},"nativeSrc":"6411:12:18","nodeType":"YulExpressionStatement","src":"6411:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6388:6:18","nodeType":"YulIdentifier","src":"6388:6:18"},{"kind":"number","nativeSrc":"6396:4:18","nodeType":"YulLiteral","src":"6396:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6384:3:18","nodeType":"YulIdentifier","src":"6384:3:18"},"nativeSrc":"6384:17:18","nodeType":"YulFunctionCall","src":"6384:17:18"},{"name":"end","nativeSrc":"6403:3:18","nodeType":"YulIdentifier","src":"6403:3:18"}],"functionName":{"name":"slt","nativeSrc":"6380:3:18","nodeType":"YulIdentifier","src":"6380:3:18"},"nativeSrc":"6380:27:18","nodeType":"YulFunctionCall","src":"6380:27:18"}],"functionName":{"name":"iszero","nativeSrc":"6373:6:18","nodeType":"YulIdentifier","src":"6373:6:18"},"nativeSrc":"6373:35:18","nodeType":"YulFunctionCall","src":"6373:35:18"},"nativeSrc":"6370:55:18","nodeType":"YulIf","src":"6370:55:18"},{"nativeSrc":"6434:34:18","nodeType":"YulVariableDeclaration","src":"6434:34:18","value":{"arguments":[{"name":"offset","nativeSrc":"6461:6:18","nodeType":"YulIdentifier","src":"6461:6:18"}],"functionName":{"name":"calldataload","nativeSrc":"6448:12:18","nodeType":"YulIdentifier","src":"6448:12:18"},"nativeSrc":"6448:20:18","nodeType":"YulFunctionCall","src":"6448:20:18"},"variables":[{"name":"length","nativeSrc":"6438:6:18","nodeType":"YulTypedName","src":"6438:6:18","type":""}]},{"nativeSrc":"6477:75:18","nodeType":"YulVariableDeclaration","src":"6477:75:18","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"6544:6:18","nodeType":"YulIdentifier","src":"6544:6:18"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"6504:39:18","nodeType":"YulIdentifier","src":"6504:39:18"},"nativeSrc":"6504:47:18","nodeType":"YulFunctionCall","src":"6504:47:18"}],"functionName":{"name":"allocate_memory","nativeSrc":"6488:15:18","nodeType":"YulIdentifier","src":"6488:15:18"},"nativeSrc":"6488:64:18","nodeType":"YulFunctionCall","src":"6488:64:18"},"variables":[{"name":"dst","nativeSrc":"6481:3:18","nodeType":"YulTypedName","src":"6481:3:18","type":""}]},{"nativeSrc":"6561:18:18","nodeType":"YulVariableDeclaration","src":"6561:18:18","value":{"name":"dst","nativeSrc":"6576:3:18","nodeType":"YulIdentifier","src":"6576:3:18"},"variables":[{"name":"array_1","nativeSrc":"6565:7:18","nodeType":"YulTypedName","src":"6565:7:18","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"6595:3:18","nodeType":"YulIdentifier","src":"6595:3:18"},{"name":"length","nativeSrc":"6600:6:18","nodeType":"YulIdentifier","src":"6600:6:18"}],"functionName":{"name":"mstore","nativeSrc":"6588:6:18","nodeType":"YulIdentifier","src":"6588:6:18"},"nativeSrc":"6588:19:18","nodeType":"YulFunctionCall","src":"6588:19:18"},"nativeSrc":"6588:19:18","nodeType":"YulExpressionStatement","src":"6588:19:18"},{"nativeSrc":"6616:21:18","nodeType":"YulAssignment","src":"6616:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"6627:3:18","nodeType":"YulIdentifier","src":"6627:3:18"},{"kind":"number","nativeSrc":"6632:4:18","nodeType":"YulLiteral","src":"6632:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6623:3:18","nodeType":"YulIdentifier","src":"6623:3:18"},"nativeSrc":"6623:14:18","nodeType":"YulFunctionCall","src":"6623:14:18"},"variableNames":[{"name":"dst","nativeSrc":"6616:3:18","nodeType":"YulIdentifier","src":"6616:3:18"}]},{"nativeSrc":"6646:52:18","nodeType":"YulVariableDeclaration","src":"6646:52:18","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6668:6:18","nodeType":"YulIdentifier","src":"6668:6:18"},{"arguments":[{"kind":"number","nativeSrc":"6680:1:18","nodeType":"YulLiteral","src":"6680:1:18","type":"","value":"5"},{"name":"length","nativeSrc":"6683:6:18","nodeType":"YulIdentifier","src":"6683:6:18"}],"functionName":{"name":"shl","nativeSrc":"6676:3:18","nodeType":"YulIdentifier","src":"6676:3:18"},"nativeSrc":"6676:14:18","nodeType":"YulFunctionCall","src":"6676:14:18"}],"functionName":{"name":"add","nativeSrc":"6664:3:18","nodeType":"YulIdentifier","src":"6664:3:18"},"nativeSrc":"6664:27:18","nodeType":"YulFunctionCall","src":"6664:27:18"},{"kind":"number","nativeSrc":"6693:4:18","nodeType":"YulLiteral","src":"6693:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6660:3:18","nodeType":"YulIdentifier","src":"6660:3:18"},"nativeSrc":"6660:38:18","nodeType":"YulFunctionCall","src":"6660:38:18"},"variables":[{"name":"srcEnd","nativeSrc":"6650:6:18","nodeType":"YulTypedName","src":"6650:6:18","type":""}]},{"body":{"nativeSrc":"6726:16:18","nodeType":"YulBlock","src":"6726:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6735:1:18","nodeType":"YulLiteral","src":"6735:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"6738:1:18","nodeType":"YulLiteral","src":"6738:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6728:6:18","nodeType":"YulIdentifier","src":"6728:6:18"},"nativeSrc":"6728:12:18","nodeType":"YulFunctionCall","src":"6728:12:18"},"nativeSrc":"6728:12:18","nodeType":"YulExpressionStatement","src":"6728:12:18"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"6713:6:18","nodeType":"YulIdentifier","src":"6713:6:18"},{"name":"end","nativeSrc":"6721:3:18","nodeType":"YulIdentifier","src":"6721:3:18"}],"functionName":{"name":"gt","nativeSrc":"6710:2:18","nodeType":"YulIdentifier","src":"6710:2:18"},"nativeSrc":"6710:15:18","nodeType":"YulFunctionCall","src":"6710:15:18"},"nativeSrc":"6707:35:18","nodeType":"YulIf","src":"6707:35:18"},{"nativeSrc":"6751:28:18","nodeType":"YulVariableDeclaration","src":"6751:28:18","value":{"arguments":[{"name":"offset","nativeSrc":"6766:6:18","nodeType":"YulIdentifier","src":"6766:6:18"},{"kind":"number","nativeSrc":"6774:4:18","nodeType":"YulLiteral","src":"6774:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6762:3:18","nodeType":"YulIdentifier","src":"6762:3:18"},"nativeSrc":"6762:17:18","nodeType":"YulFunctionCall","src":"6762:17:18"},"variables":[{"name":"src","nativeSrc":"6755:3:18","nodeType":"YulTypedName","src":"6755:3:18","type":""}]},{"body":{"nativeSrc":"6846:163:18","nodeType":"YulBlock","src":"6846:163:18","statements":[{"nativeSrc":"6860:30:18","nodeType":"YulVariableDeclaration","src":"6860:30:18","value":{"arguments":[{"name":"src","nativeSrc":"6886:3:18","nodeType":"YulIdentifier","src":"6886:3:18"}],"functionName":{"name":"calldataload","nativeSrc":"6873:12:18","nodeType":"YulIdentifier","src":"6873:12:18"},"nativeSrc":"6873:17:18","nodeType":"YulFunctionCall","src":"6873:17:18"},"variables":[{"name":"value","nativeSrc":"6864:5:18","nodeType":"YulTypedName","src":"6864:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6928:5:18","nodeType":"YulIdentifier","src":"6928:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6903:24:18","nodeType":"YulIdentifier","src":"6903:24:18"},"nativeSrc":"6903:31:18","nodeType":"YulFunctionCall","src":"6903:31:18"},"nativeSrc":"6903:31:18","nodeType":"YulExpressionStatement","src":"6903:31:18"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"6954:3:18","nodeType":"YulIdentifier","src":"6954:3:18"},{"name":"value","nativeSrc":"6959:5:18","nodeType":"YulIdentifier","src":"6959:5:18"}],"functionName":{"name":"mstore","nativeSrc":"6947:6:18","nodeType":"YulIdentifier","src":"6947:6:18"},"nativeSrc":"6947:18:18","nodeType":"YulFunctionCall","src":"6947:18:18"},"nativeSrc":"6947:18:18","nodeType":"YulExpressionStatement","src":"6947:18:18"},{"nativeSrc":"6978:21:18","nodeType":"YulAssignment","src":"6978:21:18","value":{"arguments":[{"name":"dst","nativeSrc":"6989:3:18","nodeType":"YulIdentifier","src":"6989:3:18"},{"kind":"number","nativeSrc":"6994:4:18","nodeType":"YulLiteral","src":"6994:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6985:3:18","nodeType":"YulIdentifier","src":"6985:3:18"},"nativeSrc":"6985:14:18","nodeType":"YulFunctionCall","src":"6985:14:18"},"variableNames":[{"name":"dst","nativeSrc":"6978:3:18","nodeType":"YulIdentifier","src":"6978:3:18"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"6799:3:18","nodeType":"YulIdentifier","src":"6799:3:18"},{"name":"srcEnd","nativeSrc":"6804:6:18","nodeType":"YulIdentifier","src":"6804:6:18"}],"functionName":{"name":"lt","nativeSrc":"6796:2:18","nodeType":"YulIdentifier","src":"6796:2:18"},"nativeSrc":"6796:15:18","nodeType":"YulFunctionCall","src":"6796:15:18"},"nativeSrc":"6788:221:18","nodeType":"YulForLoop","post":{"nativeSrc":"6812:25:18","nodeType":"YulBlock","src":"6812:25:18","statements":[{"nativeSrc":"6814:21:18","nodeType":"YulAssignment","src":"6814:21:18","value":{"arguments":[{"name":"src","nativeSrc":"6825:3:18","nodeType":"YulIdentifier","src":"6825:3:18"},{"kind":"number","nativeSrc":"6830:4:18","nodeType":"YulLiteral","src":"6830:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6821:3:18","nodeType":"YulIdentifier","src":"6821:3:18"},"nativeSrc":"6821:14:18","nodeType":"YulFunctionCall","src":"6821:14:18"},"variableNames":[{"name":"src","nativeSrc":"6814:3:18","nodeType":"YulIdentifier","src":"6814:3:18"}]}]},"pre":{"nativeSrc":"6792:3:18","nodeType":"YulBlock","src":"6792:3:18","statements":[]},"src":"6788:221:18"},{"nativeSrc":"7018:16:18","nodeType":"YulAssignment","src":"7018:16:18","value":{"name":"array_1","nativeSrc":"7027:7:18","nodeType":"YulIdentifier","src":"7027:7:18"},"variableNames":[{"name":"array","nativeSrc":"7018:5:18","nodeType":"YulIdentifier","src":"7018:5:18"}]}]},"name":"abi_decode_array_address_dyn","nativeSrc":"6296:744:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6334:6:18","nodeType":"YulTypedName","src":"6334:6:18","type":""},{"name":"end","nativeSrc":"6342:3:18","nodeType":"YulTypedName","src":"6342:3:18","type":""}],"returnVariables":[{"name":"array","nativeSrc":"6350:5:18","nodeType":"YulTypedName","src":"6350:5:18","type":""}],"src":"6296:744:18"},{"body":{"nativeSrc":"7199:571:18","nodeType":"YulBlock","src":"7199:571:18","statements":[{"body":{"nativeSrc":"7245:16:18","nodeType":"YulBlock","src":"7245:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7254:1:18","nodeType":"YulLiteral","src":"7254:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7257:1:18","nodeType":"YulLiteral","src":"7257:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7247:6:18","nodeType":"YulIdentifier","src":"7247:6:18"},"nativeSrc":"7247:12:18","nodeType":"YulFunctionCall","src":"7247:12:18"},"nativeSrc":"7247:12:18","nodeType":"YulExpressionStatement","src":"7247:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7220:7:18","nodeType":"YulIdentifier","src":"7220:7:18"},{"name":"headStart","nativeSrc":"7229:9:18","nodeType":"YulIdentifier","src":"7229:9:18"}],"functionName":{"name":"sub","nativeSrc":"7216:3:18","nodeType":"YulIdentifier","src":"7216:3:18"},"nativeSrc":"7216:23:18","nodeType":"YulFunctionCall","src":"7216:23:18"},{"kind":"number","nativeSrc":"7241:2:18","nodeType":"YulLiteral","src":"7241:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7212:3:18","nodeType":"YulIdentifier","src":"7212:3:18"},"nativeSrc":"7212:32:18","nodeType":"YulFunctionCall","src":"7212:32:18"},"nativeSrc":"7209:52:18","nodeType":"YulIf","src":"7209:52:18"},{"nativeSrc":"7270:36:18","nodeType":"YulVariableDeclaration","src":"7270:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"7296:9:18","nodeType":"YulIdentifier","src":"7296:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"7283:12:18","nodeType":"YulIdentifier","src":"7283:12:18"},"nativeSrc":"7283:23:18","nodeType":"YulFunctionCall","src":"7283:23:18"},"variables":[{"name":"value","nativeSrc":"7274:5:18","nodeType":"YulTypedName","src":"7274:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7340:5:18","nodeType":"YulIdentifier","src":"7340:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7315:24:18","nodeType":"YulIdentifier","src":"7315:24:18"},"nativeSrc":"7315:31:18","nodeType":"YulFunctionCall","src":"7315:31:18"},"nativeSrc":"7315:31:18","nodeType":"YulExpressionStatement","src":"7315:31:18"},{"nativeSrc":"7355:15:18","nodeType":"YulAssignment","src":"7355:15:18","value":{"name":"value","nativeSrc":"7365:5:18","nodeType":"YulIdentifier","src":"7365:5:18"},"variableNames":[{"name":"value0","nativeSrc":"7355:6:18","nodeType":"YulIdentifier","src":"7355:6:18"}]},{"nativeSrc":"7379:46:18","nodeType":"YulVariableDeclaration","src":"7379:46:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7410:9:18","nodeType":"YulIdentifier","src":"7410:9:18"},{"kind":"number","nativeSrc":"7421:2:18","nodeType":"YulLiteral","src":"7421:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7406:3:18","nodeType":"YulIdentifier","src":"7406:3:18"},"nativeSrc":"7406:18:18","nodeType":"YulFunctionCall","src":"7406:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"7393:12:18","nodeType":"YulIdentifier","src":"7393:12:18"},"nativeSrc":"7393:32:18","nodeType":"YulFunctionCall","src":"7393:32:18"},"variables":[{"name":"offset","nativeSrc":"7383:6:18","nodeType":"YulTypedName","src":"7383:6:18","type":""}]},{"body":{"nativeSrc":"7468:16:18","nodeType":"YulBlock","src":"7468:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7477:1:18","nodeType":"YulLiteral","src":"7477:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7480:1:18","nodeType":"YulLiteral","src":"7480:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7470:6:18","nodeType":"YulIdentifier","src":"7470:6:18"},"nativeSrc":"7470:12:18","nodeType":"YulFunctionCall","src":"7470:12:18"},"nativeSrc":"7470:12:18","nodeType":"YulExpressionStatement","src":"7470:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7440:6:18","nodeType":"YulIdentifier","src":"7440:6:18"},{"kind":"number","nativeSrc":"7448:18:18","nodeType":"YulLiteral","src":"7448:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7437:2:18","nodeType":"YulIdentifier","src":"7437:2:18"},"nativeSrc":"7437:30:18","nodeType":"YulFunctionCall","src":"7437:30:18"},"nativeSrc":"7434:50:18","nodeType":"YulIf","src":"7434:50:18"},{"nativeSrc":"7493:71:18","nodeType":"YulAssignment","src":"7493:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7536:9:18","nodeType":"YulIdentifier","src":"7536:9:18"},{"name":"offset","nativeSrc":"7547:6:18","nodeType":"YulIdentifier","src":"7547:6:18"}],"functionName":{"name":"add","nativeSrc":"7532:3:18","nodeType":"YulIdentifier","src":"7532:3:18"},"nativeSrc":"7532:22:18","nodeType":"YulFunctionCall","src":"7532:22:18"},{"name":"dataEnd","nativeSrc":"7556:7:18","nodeType":"YulIdentifier","src":"7556:7:18"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"7503:28:18","nodeType":"YulIdentifier","src":"7503:28:18"},"nativeSrc":"7503:61:18","nodeType":"YulFunctionCall","src":"7503:61:18"},"variableNames":[{"name":"value1","nativeSrc":"7493:6:18","nodeType":"YulIdentifier","src":"7493:6:18"}]},{"nativeSrc":"7573:48:18","nodeType":"YulVariableDeclaration","src":"7573:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7606:9:18","nodeType":"YulIdentifier","src":"7606:9:18"},{"kind":"number","nativeSrc":"7617:2:18","nodeType":"YulLiteral","src":"7617:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7602:3:18","nodeType":"YulIdentifier","src":"7602:3:18"},"nativeSrc":"7602:18:18","nodeType":"YulFunctionCall","src":"7602:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"7589:12:18","nodeType":"YulIdentifier","src":"7589:12:18"},"nativeSrc":"7589:32:18","nodeType":"YulFunctionCall","src":"7589:32:18"},"variables":[{"name":"offset_1","nativeSrc":"7577:8:18","nodeType":"YulTypedName","src":"7577:8:18","type":""}]},{"body":{"nativeSrc":"7666:16:18","nodeType":"YulBlock","src":"7666:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7675:1:18","nodeType":"YulLiteral","src":"7675:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7678:1:18","nodeType":"YulLiteral","src":"7678:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7668:6:18","nodeType":"YulIdentifier","src":"7668:6:18"},"nativeSrc":"7668:12:18","nodeType":"YulFunctionCall","src":"7668:12:18"},"nativeSrc":"7668:12:18","nodeType":"YulExpressionStatement","src":"7668:12:18"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7636:8:18","nodeType":"YulIdentifier","src":"7636:8:18"},{"kind":"number","nativeSrc":"7646:18:18","nodeType":"YulLiteral","src":"7646:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7633:2:18","nodeType":"YulIdentifier","src":"7633:2:18"},"nativeSrc":"7633:32:18","nodeType":"YulFunctionCall","src":"7633:32:18"},"nativeSrc":"7630:52:18","nodeType":"YulIf","src":"7630:52:18"},{"nativeSrc":"7691:73:18","nodeType":"YulAssignment","src":"7691:73:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7734:9:18","nodeType":"YulIdentifier","src":"7734:9:18"},{"name":"offset_1","nativeSrc":"7745:8:18","nodeType":"YulIdentifier","src":"7745:8:18"}],"functionName":{"name":"add","nativeSrc":"7730:3:18","nodeType":"YulIdentifier","src":"7730:3:18"},"nativeSrc":"7730:24:18","nodeType":"YulFunctionCall","src":"7730:24:18"},{"name":"dataEnd","nativeSrc":"7756:7:18","nodeType":"YulIdentifier","src":"7756:7:18"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"7701:28:18","nodeType":"YulIdentifier","src":"7701:28:18"},"nativeSrc":"7701:63:18","nodeType":"YulFunctionCall","src":"7701:63:18"},"variableNames":[{"name":"value2","nativeSrc":"7691:6:18","nodeType":"YulIdentifier","src":"7691:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr","nativeSrc":"7045:725:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7149:9:18","nodeType":"YulTypedName","src":"7149:9:18","type":""},{"name":"dataEnd","nativeSrc":"7160:7:18","nodeType":"YulTypedName","src":"7160:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7172:6:18","nodeType":"YulTypedName","src":"7172:6:18","type":""},{"name":"value1","nativeSrc":"7180:6:18","nodeType":"YulTypedName","src":"7180:6:18","type":""},{"name":"value2","nativeSrc":"7188:6:18","nodeType":"YulTypedName","src":"7188:6:18","type":""}],"src":"7045:725:18"},{"body":{"nativeSrc":"7871:804:18","nodeType":"YulBlock","src":"7871:804:18","statements":[{"body":{"nativeSrc":"7917:16:18","nodeType":"YulBlock","src":"7917:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7926:1:18","nodeType":"YulLiteral","src":"7926:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"7929:1:18","nodeType":"YulLiteral","src":"7929:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7919:6:18","nodeType":"YulIdentifier","src":"7919:6:18"},"nativeSrc":"7919:12:18","nodeType":"YulFunctionCall","src":"7919:12:18"},"nativeSrc":"7919:12:18","nodeType":"YulExpressionStatement","src":"7919:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7892:7:18","nodeType":"YulIdentifier","src":"7892:7:18"},{"name":"headStart","nativeSrc":"7901:9:18","nodeType":"YulIdentifier","src":"7901:9:18"}],"functionName":{"name":"sub","nativeSrc":"7888:3:18","nodeType":"YulIdentifier","src":"7888:3:18"},"nativeSrc":"7888:23:18","nodeType":"YulFunctionCall","src":"7888:23:18"},{"kind":"number","nativeSrc":"7913:2:18","nodeType":"YulLiteral","src":"7913:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7884:3:18","nodeType":"YulIdentifier","src":"7884:3:18"},"nativeSrc":"7884:32:18","nodeType":"YulFunctionCall","src":"7884:32:18"},"nativeSrc":"7881:52:18","nodeType":"YulIf","src":"7881:52:18"},{"nativeSrc":"7942:36:18","nodeType":"YulVariableDeclaration","src":"7942:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"7968:9:18","nodeType":"YulIdentifier","src":"7968:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"7955:12:18","nodeType":"YulIdentifier","src":"7955:12:18"},"nativeSrc":"7955:23:18","nodeType":"YulFunctionCall","src":"7955:23:18"},"variables":[{"name":"value","nativeSrc":"7946:5:18","nodeType":"YulTypedName","src":"7946:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8012:5:18","nodeType":"YulIdentifier","src":"8012:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7987:24:18","nodeType":"YulIdentifier","src":"7987:24:18"},"nativeSrc":"7987:31:18","nodeType":"YulFunctionCall","src":"7987:31:18"},"nativeSrc":"7987:31:18","nodeType":"YulExpressionStatement","src":"7987:31:18"},{"nativeSrc":"8027:15:18","nodeType":"YulAssignment","src":"8027:15:18","value":{"name":"value","nativeSrc":"8037:5:18","nodeType":"YulIdentifier","src":"8037:5:18"},"variableNames":[{"name":"value0","nativeSrc":"8027:6:18","nodeType":"YulIdentifier","src":"8027:6:18"}]},{"nativeSrc":"8051:46:18","nodeType":"YulVariableDeclaration","src":"8051:46:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8082:9:18","nodeType":"YulIdentifier","src":"8082:9:18"},{"kind":"number","nativeSrc":"8093:2:18","nodeType":"YulLiteral","src":"8093:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8078:3:18","nodeType":"YulIdentifier","src":"8078:3:18"},"nativeSrc":"8078:18:18","nodeType":"YulFunctionCall","src":"8078:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"8065:12:18","nodeType":"YulIdentifier","src":"8065:12:18"},"nativeSrc":"8065:32:18","nodeType":"YulFunctionCall","src":"8065:32:18"},"variables":[{"name":"offset","nativeSrc":"8055:6:18","nodeType":"YulTypedName","src":"8055:6:18","type":""}]},{"body":{"nativeSrc":"8140:16:18","nodeType":"YulBlock","src":"8140:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8149:1:18","nodeType":"YulLiteral","src":"8149:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8152:1:18","nodeType":"YulLiteral","src":"8152:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8142:6:18","nodeType":"YulIdentifier","src":"8142:6:18"},"nativeSrc":"8142:12:18","nodeType":"YulFunctionCall","src":"8142:12:18"},"nativeSrc":"8142:12:18","nodeType":"YulExpressionStatement","src":"8142:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8112:6:18","nodeType":"YulIdentifier","src":"8112:6:18"},{"kind":"number","nativeSrc":"8120:18:18","nodeType":"YulLiteral","src":"8120:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8109:2:18","nodeType":"YulIdentifier","src":"8109:2:18"},"nativeSrc":"8109:30:18","nodeType":"YulFunctionCall","src":"8109:30:18"},"nativeSrc":"8106:50:18","nodeType":"YulIf","src":"8106:50:18"},{"nativeSrc":"8165:32:18","nodeType":"YulVariableDeclaration","src":"8165:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"8179:9:18","nodeType":"YulIdentifier","src":"8179:9:18"},{"name":"offset","nativeSrc":"8190:6:18","nodeType":"YulIdentifier","src":"8190:6:18"}],"functionName":{"name":"add","nativeSrc":"8175:3:18","nodeType":"YulIdentifier","src":"8175:3:18"},"nativeSrc":"8175:22:18","nodeType":"YulFunctionCall","src":"8175:22:18"},"variables":[{"name":"_1","nativeSrc":"8169:2:18","nodeType":"YulTypedName","src":"8169:2:18","type":""}]},{"body":{"nativeSrc":"8245:16:18","nodeType":"YulBlock","src":"8245:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8254:1:18","nodeType":"YulLiteral","src":"8254:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8257:1:18","nodeType":"YulLiteral","src":"8257:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8247:6:18","nodeType":"YulIdentifier","src":"8247:6:18"},"nativeSrc":"8247:12:18","nodeType":"YulFunctionCall","src":"8247:12:18"},"nativeSrc":"8247:12:18","nodeType":"YulExpressionStatement","src":"8247:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"8224:2:18","nodeType":"YulIdentifier","src":"8224:2:18"},{"kind":"number","nativeSrc":"8228:4:18","nodeType":"YulLiteral","src":"8228:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8220:3:18","nodeType":"YulIdentifier","src":"8220:3:18"},"nativeSrc":"8220:13:18","nodeType":"YulFunctionCall","src":"8220:13:18"},{"name":"dataEnd","nativeSrc":"8235:7:18","nodeType":"YulIdentifier","src":"8235:7:18"}],"functionName":{"name":"slt","nativeSrc":"8216:3:18","nodeType":"YulIdentifier","src":"8216:3:18"},"nativeSrc":"8216:27:18","nodeType":"YulFunctionCall","src":"8216:27:18"}],"functionName":{"name":"iszero","nativeSrc":"8209:6:18","nodeType":"YulIdentifier","src":"8209:6:18"},"nativeSrc":"8209:35:18","nodeType":"YulFunctionCall","src":"8209:35:18"},"nativeSrc":"8206:55:18","nodeType":"YulIf","src":"8206:55:18"},{"nativeSrc":"8270:30:18","nodeType":"YulVariableDeclaration","src":"8270:30:18","value":{"arguments":[{"name":"_1","nativeSrc":"8297:2:18","nodeType":"YulIdentifier","src":"8297:2:18"}],"functionName":{"name":"calldataload","nativeSrc":"8284:12:18","nodeType":"YulIdentifier","src":"8284:12:18"},"nativeSrc":"8284:16:18","nodeType":"YulFunctionCall","src":"8284:16:18"},"variables":[{"name":"length","nativeSrc":"8274:6:18","nodeType":"YulTypedName","src":"8274:6:18","type":""}]},{"body":{"nativeSrc":"8343:22:18","nodeType":"YulBlock","src":"8343:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"8345:16:18","nodeType":"YulIdentifier","src":"8345:16:18"},"nativeSrc":"8345:18:18","nodeType":"YulFunctionCall","src":"8345:18:18"},"nativeSrc":"8345:18:18","nodeType":"YulExpressionStatement","src":"8345:18:18"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"8315:6:18","nodeType":"YulIdentifier","src":"8315:6:18"},{"kind":"number","nativeSrc":"8323:18:18","nodeType":"YulLiteral","src":"8323:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8312:2:18","nodeType":"YulIdentifier","src":"8312:2:18"},"nativeSrc":"8312:30:18","nodeType":"YulFunctionCall","src":"8312:30:18"},"nativeSrc":"8309:56:18","nodeType":"YulIf","src":"8309:56:18"},{"nativeSrc":"8374:70:18","nodeType":"YulVariableDeclaration","src":"8374:70:18","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8415:6:18","nodeType":"YulIdentifier","src":"8415:6:18"},{"kind":"number","nativeSrc":"8423:4:18","nodeType":"YulLiteral","src":"8423:4:18","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8411:3:18","nodeType":"YulIdentifier","src":"8411:3:18"},"nativeSrc":"8411:17:18","nodeType":"YulFunctionCall","src":"8411:17:18"},{"arguments":[{"kind":"number","nativeSrc":"8434:2:18","nodeType":"YulLiteral","src":"8434:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"8430:3:18","nodeType":"YulIdentifier","src":"8430:3:18"},"nativeSrc":"8430:7:18","nodeType":"YulFunctionCall","src":"8430:7:18"}],"functionName":{"name":"and","nativeSrc":"8407:3:18","nodeType":"YulIdentifier","src":"8407:3:18"},"nativeSrc":"8407:31:18","nodeType":"YulFunctionCall","src":"8407:31:18"},{"kind":"number","nativeSrc":"8440:2:18","nodeType":"YulLiteral","src":"8440:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8403:3:18","nodeType":"YulIdentifier","src":"8403:3:18"},"nativeSrc":"8403:40:18","nodeType":"YulFunctionCall","src":"8403:40:18"}],"functionName":{"name":"allocate_memory","nativeSrc":"8387:15:18","nodeType":"YulIdentifier","src":"8387:15:18"},"nativeSrc":"8387:57:18","nodeType":"YulFunctionCall","src":"8387:57:18"},"variables":[{"name":"array","nativeSrc":"8378:5:18","nodeType":"YulTypedName","src":"8378:5:18","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"8460:5:18","nodeType":"YulIdentifier","src":"8460:5:18"},{"name":"length","nativeSrc":"8467:6:18","nodeType":"YulIdentifier","src":"8467:6:18"}],"functionName":{"name":"mstore","nativeSrc":"8453:6:18","nodeType":"YulIdentifier","src":"8453:6:18"},"nativeSrc":"8453:21:18","nodeType":"YulFunctionCall","src":"8453:21:18"},"nativeSrc":"8453:21:18","nodeType":"YulExpressionStatement","src":"8453:21:18"},{"body":{"nativeSrc":"8524:16:18","nodeType":"YulBlock","src":"8524:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8533:1:18","nodeType":"YulLiteral","src":"8533:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8536:1:18","nodeType":"YulLiteral","src":"8536:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8526:6:18","nodeType":"YulIdentifier","src":"8526:6:18"},"nativeSrc":"8526:12:18","nodeType":"YulFunctionCall","src":"8526:12:18"},"nativeSrc":"8526:12:18","nodeType":"YulExpressionStatement","src":"8526:12:18"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"8497:2:18","nodeType":"YulIdentifier","src":"8497:2:18"},{"name":"length","nativeSrc":"8501:6:18","nodeType":"YulIdentifier","src":"8501:6:18"}],"functionName":{"name":"add","nativeSrc":"8493:3:18","nodeType":"YulIdentifier","src":"8493:3:18"},"nativeSrc":"8493:15:18","nodeType":"YulFunctionCall","src":"8493:15:18"},{"kind":"number","nativeSrc":"8510:2:18","nodeType":"YulLiteral","src":"8510:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8489:3:18","nodeType":"YulIdentifier","src":"8489:3:18"},"nativeSrc":"8489:24:18","nodeType":"YulFunctionCall","src":"8489:24:18"},{"name":"dataEnd","nativeSrc":"8515:7:18","nodeType":"YulIdentifier","src":"8515:7:18"}],"functionName":{"name":"gt","nativeSrc":"8486:2:18","nodeType":"YulIdentifier","src":"8486:2:18"},"nativeSrc":"8486:37:18","nodeType":"YulFunctionCall","src":"8486:37:18"},"nativeSrc":"8483:57:18","nodeType":"YulIf","src":"8483:57:18"},{"expression":{"arguments":[{"arguments":[{"name":"array","nativeSrc":"8566:5:18","nodeType":"YulIdentifier","src":"8566:5:18"},{"kind":"number","nativeSrc":"8573:2:18","nodeType":"YulLiteral","src":"8573:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8562:3:18","nodeType":"YulIdentifier","src":"8562:3:18"},"nativeSrc":"8562:14:18","nodeType":"YulFunctionCall","src":"8562:14:18"},{"arguments":[{"name":"_1","nativeSrc":"8582:2:18","nodeType":"YulIdentifier","src":"8582:2:18"},{"kind":"number","nativeSrc":"8586:2:18","nodeType":"YulLiteral","src":"8586:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8578:3:18","nodeType":"YulIdentifier","src":"8578:3:18"},"nativeSrc":"8578:11:18","nodeType":"YulFunctionCall","src":"8578:11:18"},{"name":"length","nativeSrc":"8591:6:18","nodeType":"YulIdentifier","src":"8591:6:18"}],"functionName":{"name":"calldatacopy","nativeSrc":"8549:12:18","nodeType":"YulIdentifier","src":"8549:12:18"},"nativeSrc":"8549:49:18","nodeType":"YulFunctionCall","src":"8549:49:18"},"nativeSrc":"8549:49:18","nodeType":"YulExpressionStatement","src":"8549:49:18"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nativeSrc":"8622:5:18","nodeType":"YulIdentifier","src":"8622:5:18"},{"name":"length","nativeSrc":"8629:6:18","nodeType":"YulIdentifier","src":"8629:6:18"}],"functionName":{"name":"add","nativeSrc":"8618:3:18","nodeType":"YulIdentifier","src":"8618:3:18"},"nativeSrc":"8618:18:18","nodeType":"YulFunctionCall","src":"8618:18:18"},{"kind":"number","nativeSrc":"8638:2:18","nodeType":"YulLiteral","src":"8638:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8614:3:18","nodeType":"YulIdentifier","src":"8614:3:18"},"nativeSrc":"8614:27:18","nodeType":"YulFunctionCall","src":"8614:27:18"},{"kind":"number","nativeSrc":"8643:1:18","nodeType":"YulLiteral","src":"8643:1:18","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8607:6:18","nodeType":"YulIdentifier","src":"8607:6:18"},"nativeSrc":"8607:38:18","nodeType":"YulFunctionCall","src":"8607:38:18"},"nativeSrc":"8607:38:18","nodeType":"YulExpressionStatement","src":"8607:38:18"},{"nativeSrc":"8654:15:18","nodeType":"YulAssignment","src":"8654:15:18","value":{"name":"array","nativeSrc":"8664:5:18","nodeType":"YulIdentifier","src":"8664:5:18"},"variableNames":[{"name":"value1","nativeSrc":"8654:6:18","nodeType":"YulIdentifier","src":"8654:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"7775:900:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7829:9:18","nodeType":"YulTypedName","src":"7829:9:18","type":""},{"name":"dataEnd","nativeSrc":"7840:7:18","nodeType":"YulTypedName","src":"7840:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7852:6:18","nodeType":"YulTypedName","src":"7852:6:18","type":""},{"name":"value1","nativeSrc":"7860:6:18","nodeType":"YulTypedName","src":"7860:6:18","type":""}],"src":"7775:900:18"},{"body":{"nativeSrc":"8817:453:18","nodeType":"YulBlock","src":"8817:453:18","statements":[{"body":{"nativeSrc":"8863:16:18","nodeType":"YulBlock","src":"8863:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8872:1:18","nodeType":"YulLiteral","src":"8872:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8875:1:18","nodeType":"YulLiteral","src":"8875:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8865:6:18","nodeType":"YulIdentifier","src":"8865:6:18"},"nativeSrc":"8865:12:18","nodeType":"YulFunctionCall","src":"8865:12:18"},"nativeSrc":"8865:12:18","nodeType":"YulExpressionStatement","src":"8865:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8838:7:18","nodeType":"YulIdentifier","src":"8838:7:18"},{"name":"headStart","nativeSrc":"8847:9:18","nodeType":"YulIdentifier","src":"8847:9:18"}],"functionName":{"name":"sub","nativeSrc":"8834:3:18","nodeType":"YulIdentifier","src":"8834:3:18"},"nativeSrc":"8834:23:18","nodeType":"YulFunctionCall","src":"8834:23:18"},{"kind":"number","nativeSrc":"8859:2:18","nodeType":"YulLiteral","src":"8859:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8830:3:18","nodeType":"YulIdentifier","src":"8830:3:18"},"nativeSrc":"8830:32:18","nodeType":"YulFunctionCall","src":"8830:32:18"},"nativeSrc":"8827:52:18","nodeType":"YulIf","src":"8827:52:18"},{"nativeSrc":"8888:37:18","nodeType":"YulVariableDeclaration","src":"8888:37:18","value":{"arguments":[{"name":"headStart","nativeSrc":"8915:9:18","nodeType":"YulIdentifier","src":"8915:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"8902:12:18","nodeType":"YulIdentifier","src":"8902:12:18"},"nativeSrc":"8902:23:18","nodeType":"YulFunctionCall","src":"8902:23:18"},"variables":[{"name":"offset","nativeSrc":"8892:6:18","nodeType":"YulTypedName","src":"8892:6:18","type":""}]},{"body":{"nativeSrc":"8968:16:18","nodeType":"YulBlock","src":"8968:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8977:1:18","nodeType":"YulLiteral","src":"8977:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8980:1:18","nodeType":"YulLiteral","src":"8980:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8970:6:18","nodeType":"YulIdentifier","src":"8970:6:18"},"nativeSrc":"8970:12:18","nodeType":"YulFunctionCall","src":"8970:12:18"},"nativeSrc":"8970:12:18","nodeType":"YulExpressionStatement","src":"8970:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8940:6:18","nodeType":"YulIdentifier","src":"8940:6:18"},{"kind":"number","nativeSrc":"8948:18:18","nodeType":"YulLiteral","src":"8948:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8937:2:18","nodeType":"YulIdentifier","src":"8937:2:18"},"nativeSrc":"8937:30:18","nodeType":"YulFunctionCall","src":"8937:30:18"},"nativeSrc":"8934:50:18","nodeType":"YulIf","src":"8934:50:18"},{"nativeSrc":"8993:71:18","nodeType":"YulAssignment","src":"8993:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9036:9:18","nodeType":"YulIdentifier","src":"9036:9:18"},{"name":"offset","nativeSrc":"9047:6:18","nodeType":"YulIdentifier","src":"9047:6:18"}],"functionName":{"name":"add","nativeSrc":"9032:3:18","nodeType":"YulIdentifier","src":"9032:3:18"},"nativeSrc":"9032:22:18","nodeType":"YulFunctionCall","src":"9032:22:18"},{"name":"dataEnd","nativeSrc":"9056:7:18","nodeType":"YulIdentifier","src":"9056:7:18"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"9003:28:18","nodeType":"YulIdentifier","src":"9003:28:18"},"nativeSrc":"9003:61:18","nodeType":"YulFunctionCall","src":"9003:61:18"},"variableNames":[{"name":"value0","nativeSrc":"8993:6:18","nodeType":"YulIdentifier","src":"8993:6:18"}]},{"nativeSrc":"9073:48:18","nodeType":"YulVariableDeclaration","src":"9073:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9106:9:18","nodeType":"YulIdentifier","src":"9106:9:18"},{"kind":"number","nativeSrc":"9117:2:18","nodeType":"YulLiteral","src":"9117:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9102:3:18","nodeType":"YulIdentifier","src":"9102:3:18"},"nativeSrc":"9102:18:18","nodeType":"YulFunctionCall","src":"9102:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"9089:12:18","nodeType":"YulIdentifier","src":"9089:12:18"},"nativeSrc":"9089:32:18","nodeType":"YulFunctionCall","src":"9089:32:18"},"variables":[{"name":"offset_1","nativeSrc":"9077:8:18","nodeType":"YulTypedName","src":"9077:8:18","type":""}]},{"body":{"nativeSrc":"9166:16:18","nodeType":"YulBlock","src":"9166:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9175:1:18","nodeType":"YulLiteral","src":"9175:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"9178:1:18","nodeType":"YulLiteral","src":"9178:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9168:6:18","nodeType":"YulIdentifier","src":"9168:6:18"},"nativeSrc":"9168:12:18","nodeType":"YulFunctionCall","src":"9168:12:18"},"nativeSrc":"9168:12:18","nodeType":"YulExpressionStatement","src":"9168:12:18"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"9136:8:18","nodeType":"YulIdentifier","src":"9136:8:18"},{"kind":"number","nativeSrc":"9146:18:18","nodeType":"YulLiteral","src":"9146:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9133:2:18","nodeType":"YulIdentifier","src":"9133:2:18"},"nativeSrc":"9133:32:18","nodeType":"YulFunctionCall","src":"9133:32:18"},"nativeSrc":"9130:52:18","nodeType":"YulIf","src":"9130:52:18"},{"nativeSrc":"9191:73:18","nodeType":"YulAssignment","src":"9191:73:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9234:9:18","nodeType":"YulIdentifier","src":"9234:9:18"},{"name":"offset_1","nativeSrc":"9245:8:18","nodeType":"YulIdentifier","src":"9245:8:18"}],"functionName":{"name":"add","nativeSrc":"9230:3:18","nodeType":"YulIdentifier","src":"9230:3:18"},"nativeSrc":"9230:24:18","nodeType":"YulFunctionCall","src":"9230:24:18"},{"name":"dataEnd","nativeSrc":"9256:7:18","nodeType":"YulIdentifier","src":"9256:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"9201:28:18","nodeType":"YulIdentifier","src":"9201:28:18"},"nativeSrc":"9201:63:18","nodeType":"YulFunctionCall","src":"9201:63:18"},"variableNames":[{"name":"value1","nativeSrc":"9191:6:18","nodeType":"YulIdentifier","src":"9191:6:18"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"8680:590:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8775:9:18","nodeType":"YulTypedName","src":"8775:9:18","type":""},{"name":"dataEnd","nativeSrc":"8786:7:18","nodeType":"YulTypedName","src":"8786:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8798:6:18","nodeType":"YulTypedName","src":"8798:6:18","type":""},{"name":"value1","nativeSrc":"8806:6:18","nodeType":"YulTypedName","src":"8806:6:18","type":""}],"src":"8680:590:18"},{"body":{"nativeSrc":"9420:476:18","nodeType":"YulBlock","src":"9420:476:18","statements":[{"nativeSrc":"9430:32:18","nodeType":"YulVariableDeclaration","src":"9430:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"9448:9:18","nodeType":"YulIdentifier","src":"9448:9:18"},{"kind":"number","nativeSrc":"9459:2:18","nodeType":"YulLiteral","src":"9459:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9444:3:18","nodeType":"YulIdentifier","src":"9444:3:18"},"nativeSrc":"9444:18:18","nodeType":"YulFunctionCall","src":"9444:18:18"},"variables":[{"name":"tail_1","nativeSrc":"9434:6:18","nodeType":"YulTypedName","src":"9434:6:18","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9478:9:18","nodeType":"YulIdentifier","src":"9478:9:18"},{"kind":"number","nativeSrc":"9489:2:18","nodeType":"YulLiteral","src":"9489:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9471:6:18","nodeType":"YulIdentifier","src":"9471:6:18"},"nativeSrc":"9471:21:18","nodeType":"YulFunctionCall","src":"9471:21:18"},"nativeSrc":"9471:21:18","nodeType":"YulExpressionStatement","src":"9471:21:18"},{"nativeSrc":"9501:17:18","nodeType":"YulVariableDeclaration","src":"9501:17:18","value":{"name":"tail_1","nativeSrc":"9512:6:18","nodeType":"YulIdentifier","src":"9512:6:18"},"variables":[{"name":"pos","nativeSrc":"9505:3:18","nodeType":"YulTypedName","src":"9505:3:18","type":""}]},{"nativeSrc":"9527:27:18","nodeType":"YulVariableDeclaration","src":"9527:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"9547:6:18","nodeType":"YulIdentifier","src":"9547:6:18"}],"functionName":{"name":"mload","nativeSrc":"9541:5:18","nodeType":"YulIdentifier","src":"9541:5:18"},"nativeSrc":"9541:13:18","nodeType":"YulFunctionCall","src":"9541:13:18"},"variables":[{"name":"length","nativeSrc":"9531:6:18","nodeType":"YulTypedName","src":"9531:6:18","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"9570:6:18","nodeType":"YulIdentifier","src":"9570:6:18"},{"name":"length","nativeSrc":"9578:6:18","nodeType":"YulIdentifier","src":"9578:6:18"}],"functionName":{"name":"mstore","nativeSrc":"9563:6:18","nodeType":"YulIdentifier","src":"9563:6:18"},"nativeSrc":"9563:22:18","nodeType":"YulFunctionCall","src":"9563:22:18"},"nativeSrc":"9563:22:18","nodeType":"YulExpressionStatement","src":"9563:22:18"},{"nativeSrc":"9594:25:18","nodeType":"YulAssignment","src":"9594:25:18","value":{"arguments":[{"name":"headStart","nativeSrc":"9605:9:18","nodeType":"YulIdentifier","src":"9605:9:18"},{"kind":"number","nativeSrc":"9616:2:18","nodeType":"YulLiteral","src":"9616:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9601:3:18","nodeType":"YulIdentifier","src":"9601:3:18"},"nativeSrc":"9601:18:18","nodeType":"YulFunctionCall","src":"9601:18:18"},"variableNames":[{"name":"pos","nativeSrc":"9594:3:18","nodeType":"YulIdentifier","src":"9594:3:18"}]},{"nativeSrc":"9628:29:18","nodeType":"YulVariableDeclaration","src":"9628:29:18","value":{"arguments":[{"name":"value0","nativeSrc":"9646:6:18","nodeType":"YulIdentifier","src":"9646:6:18"},{"kind":"number","nativeSrc":"9654:2:18","nodeType":"YulLiteral","src":"9654:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9642:3:18","nodeType":"YulIdentifier","src":"9642:3:18"},"nativeSrc":"9642:15:18","nodeType":"YulFunctionCall","src":"9642:15:18"},"variables":[{"name":"srcPtr","nativeSrc":"9632:6:18","nodeType":"YulTypedName","src":"9632:6:18","type":""}]},{"nativeSrc":"9666:10:18","nodeType":"YulVariableDeclaration","src":"9666:10:18","value":{"kind":"number","nativeSrc":"9675:1:18","nodeType":"YulLiteral","src":"9675:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9670:1:18","nodeType":"YulTypedName","src":"9670:1:18","type":""}]},{"body":{"nativeSrc":"9734:136:18","nodeType":"YulBlock","src":"9734:136:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9755:3:18","nodeType":"YulIdentifier","src":"9755:3:18"},{"arguments":[{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"9780:6:18","nodeType":"YulIdentifier","src":"9780:6:18"}],"functionName":{"name":"mload","nativeSrc":"9774:5:18","nodeType":"YulIdentifier","src":"9774:5:18"},"nativeSrc":"9774:13:18","nodeType":"YulFunctionCall","src":"9774:13:18"}],"functionName":{"name":"iszero","nativeSrc":"9767:6:18","nodeType":"YulIdentifier","src":"9767:6:18"},"nativeSrc":"9767:21:18","nodeType":"YulFunctionCall","src":"9767:21:18"}],"functionName":{"name":"iszero","nativeSrc":"9760:6:18","nodeType":"YulIdentifier","src":"9760:6:18"},"nativeSrc":"9760:29:18","nodeType":"YulFunctionCall","src":"9760:29:18"}],"functionName":{"name":"mstore","nativeSrc":"9748:6:18","nodeType":"YulIdentifier","src":"9748:6:18"},"nativeSrc":"9748:42:18","nodeType":"YulFunctionCall","src":"9748:42:18"},"nativeSrc":"9748:42:18","nodeType":"YulExpressionStatement","src":"9748:42:18"},{"nativeSrc":"9803:19:18","nodeType":"YulAssignment","src":"9803:19:18","value":{"arguments":[{"name":"pos","nativeSrc":"9814:3:18","nodeType":"YulIdentifier","src":"9814:3:18"},{"kind":"number","nativeSrc":"9819:2:18","nodeType":"YulLiteral","src":"9819:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9810:3:18","nodeType":"YulIdentifier","src":"9810:3:18"},"nativeSrc":"9810:12:18","nodeType":"YulFunctionCall","src":"9810:12:18"},"variableNames":[{"name":"pos","nativeSrc":"9803:3:18","nodeType":"YulIdentifier","src":"9803:3:18"}]},{"nativeSrc":"9835:25:18","nodeType":"YulAssignment","src":"9835:25:18","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9849:6:18","nodeType":"YulIdentifier","src":"9849:6:18"},{"kind":"number","nativeSrc":"9857:2:18","nodeType":"YulLiteral","src":"9857:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9845:3:18","nodeType":"YulIdentifier","src":"9845:3:18"},"nativeSrc":"9845:15:18","nodeType":"YulFunctionCall","src":"9845:15:18"},"variableNames":[{"name":"srcPtr","nativeSrc":"9835:6:18","nodeType":"YulIdentifier","src":"9835:6:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9696:1:18","nodeType":"YulIdentifier","src":"9696:1:18"},{"name":"length","nativeSrc":"9699:6:18","nodeType":"YulIdentifier","src":"9699:6:18"}],"functionName":{"name":"lt","nativeSrc":"9693:2:18","nodeType":"YulIdentifier","src":"9693:2:18"},"nativeSrc":"9693:13:18","nodeType":"YulFunctionCall","src":"9693:13:18"},"nativeSrc":"9685:185:18","nodeType":"YulForLoop","post":{"nativeSrc":"9707:18:18","nodeType":"YulBlock","src":"9707:18:18","statements":[{"nativeSrc":"9709:14:18","nodeType":"YulAssignment","src":"9709:14:18","value":{"arguments":[{"name":"i","nativeSrc":"9718:1:18","nodeType":"YulIdentifier","src":"9718:1:18"},{"kind":"number","nativeSrc":"9721:1:18","nodeType":"YulLiteral","src":"9721:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9714:3:18","nodeType":"YulIdentifier","src":"9714:3:18"},"nativeSrc":"9714:9:18","nodeType":"YulFunctionCall","src":"9714:9:18"},"variableNames":[{"name":"i","nativeSrc":"9709:1:18","nodeType":"YulIdentifier","src":"9709:1:18"}]}]},"pre":{"nativeSrc":"9689:3:18","nodeType":"YulBlock","src":"9689:3:18","statements":[]},"src":"9685:185:18"},{"nativeSrc":"9879:11:18","nodeType":"YulAssignment","src":"9879:11:18","value":{"name":"pos","nativeSrc":"9887:3:18","nodeType":"YulIdentifier","src":"9887:3:18"},"variableNames":[{"name":"tail","nativeSrc":"9879:4:18","nodeType":"YulIdentifier","src":"9879:4:18"}]}]},"name":"abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"9275:621:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9389:9:18","nodeType":"YulTypedName","src":"9389:9:18","type":""},{"name":"value0","nativeSrc":"9400:6:18","nodeType":"YulTypedName","src":"9400:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9411:4:18","nodeType":"YulTypedName","src":"9411:4:18","type":""}],"src":"9275:621:18"},{"body":{"nativeSrc":"10002:76:18","nodeType":"YulBlock","src":"10002:76:18","statements":[{"nativeSrc":"10012:26:18","nodeType":"YulAssignment","src":"10012:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"10024:9:18","nodeType":"YulIdentifier","src":"10024:9:18"},{"kind":"number","nativeSrc":"10035:2:18","nodeType":"YulLiteral","src":"10035:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10020:3:18","nodeType":"YulIdentifier","src":"10020:3:18"},"nativeSrc":"10020:18:18","nodeType":"YulFunctionCall","src":"10020:18:18"},"variableNames":[{"name":"tail","nativeSrc":"10012:4:18","nodeType":"YulIdentifier","src":"10012:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10054:9:18","nodeType":"YulIdentifier","src":"10054:9:18"},{"name":"value0","nativeSrc":"10065:6:18","nodeType":"YulIdentifier","src":"10065:6:18"}],"functionName":{"name":"mstore","nativeSrc":"10047:6:18","nodeType":"YulIdentifier","src":"10047:6:18"},"nativeSrc":"10047:25:18","nodeType":"YulFunctionCall","src":"10047:25:18"},"nativeSrc":"10047:25:18","nodeType":"YulExpressionStatement","src":"10047:25:18"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"9901:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9971:9:18","nodeType":"YulTypedName","src":"9971:9:18","type":""},{"name":"value0","nativeSrc":"9982:6:18","nodeType":"YulTypedName","src":"9982:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9993:4:18","nodeType":"YulTypedName","src":"9993:4:18","type":""}],"src":"9901:177:18"},{"body":{"nativeSrc":"10184:76:18","nodeType":"YulBlock","src":"10184:76:18","statements":[{"nativeSrc":"10194:26:18","nodeType":"YulAssignment","src":"10194:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"10206:9:18","nodeType":"YulIdentifier","src":"10206:9:18"},{"kind":"number","nativeSrc":"10217:2:18","nodeType":"YulLiteral","src":"10217:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10202:3:18","nodeType":"YulIdentifier","src":"10202:3:18"},"nativeSrc":"10202:18:18","nodeType":"YulFunctionCall","src":"10202:18:18"},"variableNames":[{"name":"tail","nativeSrc":"10194:4:18","nodeType":"YulIdentifier","src":"10194:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10236:9:18","nodeType":"YulIdentifier","src":"10236:9:18"},{"name":"value0","nativeSrc":"10247:6:18","nodeType":"YulIdentifier","src":"10247:6:18"}],"functionName":{"name":"mstore","nativeSrc":"10229:6:18","nodeType":"YulIdentifier","src":"10229:6:18"},"nativeSrc":"10229:25:18","nodeType":"YulFunctionCall","src":"10229:25:18"},"nativeSrc":"10229:25:18","nodeType":"YulExpressionStatement","src":"10229:25:18"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"10083:177:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10153:9:18","nodeType":"YulTypedName","src":"10153:9:18","type":""},{"name":"value0","nativeSrc":"10164:6:18","nodeType":"YulTypedName","src":"10164:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10175:4:18","nodeType":"YulTypedName","src":"10175:4:18","type":""}],"src":"10083:177:18"},{"body":{"nativeSrc":"10369:383:18","nodeType":"YulBlock","src":"10369:383:18","statements":[{"body":{"nativeSrc":"10415:16:18","nodeType":"YulBlock","src":"10415:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10424:1:18","nodeType":"YulLiteral","src":"10424:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"10427:1:18","nodeType":"YulLiteral","src":"10427:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10417:6:18","nodeType":"YulIdentifier","src":"10417:6:18"},"nativeSrc":"10417:12:18","nodeType":"YulFunctionCall","src":"10417:12:18"},"nativeSrc":"10417:12:18","nodeType":"YulExpressionStatement","src":"10417:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10390:7:18","nodeType":"YulIdentifier","src":"10390:7:18"},{"name":"headStart","nativeSrc":"10399:9:18","nodeType":"YulIdentifier","src":"10399:9:18"}],"functionName":{"name":"sub","nativeSrc":"10386:3:18","nodeType":"YulIdentifier","src":"10386:3:18"},"nativeSrc":"10386:23:18","nodeType":"YulFunctionCall","src":"10386:23:18"},{"kind":"number","nativeSrc":"10411:2:18","nodeType":"YulLiteral","src":"10411:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"10382:3:18","nodeType":"YulIdentifier","src":"10382:3:18"},"nativeSrc":"10382:32:18","nodeType":"YulFunctionCall","src":"10382:32:18"},"nativeSrc":"10379:52:18","nodeType":"YulIf","src":"10379:52:18"},{"nativeSrc":"10440:14:18","nodeType":"YulVariableDeclaration","src":"10440:14:18","value":{"kind":"number","nativeSrc":"10453:1:18","nodeType":"YulLiteral","src":"10453:1:18","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10444:5:18","nodeType":"YulTypedName","src":"10444:5:18","type":""}]},{"nativeSrc":"10463:32:18","nodeType":"YulAssignment","src":"10463:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"10485:9:18","nodeType":"YulIdentifier","src":"10485:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"10472:12:18","nodeType":"YulIdentifier","src":"10472:12:18"},"nativeSrc":"10472:23:18","nodeType":"YulFunctionCall","src":"10472:23:18"},"variableNames":[{"name":"value","nativeSrc":"10463:5:18","nodeType":"YulIdentifier","src":"10463:5:18"}]},{"nativeSrc":"10504:15:18","nodeType":"YulAssignment","src":"10504:15:18","value":{"name":"value","nativeSrc":"10514:5:18","nodeType":"YulIdentifier","src":"10514:5:18"},"variableNames":[{"name":"value0","nativeSrc":"10504:6:18","nodeType":"YulIdentifier","src":"10504:6:18"}]},{"nativeSrc":"10528:47:18","nodeType":"YulVariableDeclaration","src":"10528:47:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10560:9:18","nodeType":"YulIdentifier","src":"10560:9:18"},{"kind":"number","nativeSrc":"10571:2:18","nodeType":"YulLiteral","src":"10571:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10556:3:18","nodeType":"YulIdentifier","src":"10556:3:18"},"nativeSrc":"10556:18:18","nodeType":"YulFunctionCall","src":"10556:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"10543:12:18","nodeType":"YulIdentifier","src":"10543:12:18"},"nativeSrc":"10543:32:18","nodeType":"YulFunctionCall","src":"10543:32:18"},"variables":[{"name":"value_1","nativeSrc":"10532:7:18","nodeType":"YulTypedName","src":"10532:7:18","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"10609:7:18","nodeType":"YulIdentifier","src":"10609:7:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10584:24:18","nodeType":"YulIdentifier","src":"10584:24:18"},"nativeSrc":"10584:33:18","nodeType":"YulFunctionCall","src":"10584:33:18"},"nativeSrc":"10584:33:18","nodeType":"YulExpressionStatement","src":"10584:33:18"},{"nativeSrc":"10626:17:18","nodeType":"YulAssignment","src":"10626:17:18","value":{"name":"value_1","nativeSrc":"10636:7:18","nodeType":"YulIdentifier","src":"10636:7:18"},"variableNames":[{"name":"value1","nativeSrc":"10626:6:18","nodeType":"YulIdentifier","src":"10626:6:18"}]},{"nativeSrc":"10652:16:18","nodeType":"YulVariableDeclaration","src":"10652:16:18","value":{"kind":"number","nativeSrc":"10667:1:18","nodeType":"YulLiteral","src":"10667:1:18","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"10656:7:18","nodeType":"YulTypedName","src":"10656:7:18","type":""}]},{"nativeSrc":"10677:43:18","nodeType":"YulAssignment","src":"10677:43:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10705:9:18","nodeType":"YulIdentifier","src":"10705:9:18"},{"kind":"number","nativeSrc":"10716:2:18","nodeType":"YulLiteral","src":"10716:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10701:3:18","nodeType":"YulIdentifier","src":"10701:3:18"},"nativeSrc":"10701:18:18","nodeType":"YulFunctionCall","src":"10701:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"10688:12:18","nodeType":"YulIdentifier","src":"10688:12:18"},"nativeSrc":"10688:32:18","nodeType":"YulFunctionCall","src":"10688:32:18"},"variableNames":[{"name":"value_2","nativeSrc":"10677:7:18","nodeType":"YulIdentifier","src":"10677:7:18"}]},{"nativeSrc":"10729:17:18","nodeType":"YulAssignment","src":"10729:17:18","value":{"name":"value_2","nativeSrc":"10739:7:18","nodeType":"YulIdentifier","src":"10739:7:18"},"variableNames":[{"name":"value2","nativeSrc":"10729:6:18","nodeType":"YulIdentifier","src":"10729:6:18"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256","nativeSrc":"10265:487:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10319:9:18","nodeType":"YulTypedName","src":"10319:9:18","type":""},{"name":"dataEnd","nativeSrc":"10330:7:18","nodeType":"YulTypedName","src":"10330:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10342:6:18","nodeType":"YulTypedName","src":"10342:6:18","type":""},{"name":"value1","nativeSrc":"10350:6:18","nodeType":"YulTypedName","src":"10350:6:18","type":""},{"name":"value2","nativeSrc":"10358:6:18","nodeType":"YulTypedName","src":"10358:6:18","type":""}],"src":"10265:487:18"},{"body":{"nativeSrc":"10815:169:18","nodeType":"YulBlock","src":"10815:169:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"10832:3:18","nodeType":"YulIdentifier","src":"10832:3:18"},{"arguments":[{"name":"value","nativeSrc":"10843:5:18","nodeType":"YulIdentifier","src":"10843:5:18"}],"functionName":{"name":"mload","nativeSrc":"10837:5:18","nodeType":"YulIdentifier","src":"10837:5:18"},"nativeSrc":"10837:12:18","nodeType":"YulFunctionCall","src":"10837:12:18"}],"functionName":{"name":"mstore","nativeSrc":"10825:6:18","nodeType":"YulIdentifier","src":"10825:6:18"},"nativeSrc":"10825:25:18","nodeType":"YulFunctionCall","src":"10825:25:18"},"nativeSrc":"10825:25:18","nodeType":"YulExpressionStatement","src":"10825:25:18"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10870:3:18","nodeType":"YulIdentifier","src":"10870:3:18"},{"kind":"number","nativeSrc":"10875:4:18","nodeType":"YulLiteral","src":"10875:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10866:3:18","nodeType":"YulIdentifier","src":"10866:3:18"},"nativeSrc":"10866:14:18","nodeType":"YulFunctionCall","src":"10866:14:18"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10892:5:18","nodeType":"YulIdentifier","src":"10892:5:18"},{"kind":"number","nativeSrc":"10899:4:18","nodeType":"YulLiteral","src":"10899:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10888:3:18","nodeType":"YulIdentifier","src":"10888:3:18"},"nativeSrc":"10888:16:18","nodeType":"YulFunctionCall","src":"10888:16:18"}],"functionName":{"name":"mload","nativeSrc":"10882:5:18","nodeType":"YulIdentifier","src":"10882:5:18"},"nativeSrc":"10882:23:18","nodeType":"YulFunctionCall","src":"10882:23:18"}],"functionName":{"name":"mstore","nativeSrc":"10859:6:18","nodeType":"YulIdentifier","src":"10859:6:18"},"nativeSrc":"10859:47:18","nodeType":"YulFunctionCall","src":"10859:47:18"},"nativeSrc":"10859:47:18","nodeType":"YulExpressionStatement","src":"10859:47:18"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10926:3:18","nodeType":"YulIdentifier","src":"10926:3:18"},{"kind":"number","nativeSrc":"10931:4:18","nodeType":"YulLiteral","src":"10931:4:18","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10922:3:18","nodeType":"YulIdentifier","src":"10922:3:18"},"nativeSrc":"10922:14:18","nodeType":"YulFunctionCall","src":"10922:14:18"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10962:5:18","nodeType":"YulIdentifier","src":"10962:5:18"},{"kind":"number","nativeSrc":"10969:4:18","nodeType":"YulLiteral","src":"10969:4:18","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10958:3:18","nodeType":"YulIdentifier","src":"10958:3:18"},"nativeSrc":"10958:16:18","nodeType":"YulFunctionCall","src":"10958:16:18"}],"functionName":{"name":"mload","nativeSrc":"10952:5:18","nodeType":"YulIdentifier","src":"10952:5:18"},"nativeSrc":"10952:23:18","nodeType":"YulFunctionCall","src":"10952:23:18"}],"functionName":{"name":"iszero","nativeSrc":"10945:6:18","nodeType":"YulIdentifier","src":"10945:6:18"},"nativeSrc":"10945:31:18","nodeType":"YulFunctionCall","src":"10945:31:18"}],"functionName":{"name":"iszero","nativeSrc":"10938:6:18","nodeType":"YulIdentifier","src":"10938:6:18"},"nativeSrc":"10938:39:18","nodeType":"YulFunctionCall","src":"10938:39:18"}],"functionName":{"name":"mstore","nativeSrc":"10915:6:18","nodeType":"YulIdentifier","src":"10915:6:18"},"nativeSrc":"10915:63:18","nodeType":"YulFunctionCall","src":"10915:63:18"},"nativeSrc":"10915:63:18","nodeType":"YulExpressionStatement","src":"10915:63:18"}]},"name":"abi_encode_struct_ViewPermission","nativeSrc":"10757:227:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"10799:5:18","nodeType":"YulTypedName","src":"10799:5:18","type":""},{"name":"pos","nativeSrc":"10806:3:18","nodeType":"YulTypedName","src":"10806:3:18","type":""}],"src":"10757:227:18"},{"body":{"nativeSrc":"11154:102:18","nodeType":"YulBlock","src":"11154:102:18","statements":[{"nativeSrc":"11164:26:18","nodeType":"YulAssignment","src":"11164:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"11176:9:18","nodeType":"YulIdentifier","src":"11176:9:18"},{"kind":"number","nativeSrc":"11187:2:18","nodeType":"YulLiteral","src":"11187:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11172:3:18","nodeType":"YulIdentifier","src":"11172:3:18"},"nativeSrc":"11172:18:18","nodeType":"YulFunctionCall","src":"11172:18:18"},"variableNames":[{"name":"tail","nativeSrc":"11164:4:18","nodeType":"YulIdentifier","src":"11164:4:18"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"11232:6:18","nodeType":"YulIdentifier","src":"11232:6:18"},{"name":"headStart","nativeSrc":"11240:9:18","nodeType":"YulIdentifier","src":"11240:9:18"}],"functionName":{"name":"abi_encode_struct_ViewPermission","nativeSrc":"11199:32:18","nodeType":"YulIdentifier","src":"11199:32:18"},"nativeSrc":"11199:51:18","nodeType":"YulFunctionCall","src":"11199:51:18"},"nativeSrc":"11199:51:18","nodeType":"YulExpressionStatement","src":"11199:51:18"}]},"name":"abi_encode_tuple_t_struct$_ViewPermission_$4181_memory_ptr__to_t_struct$_ViewPermission_$4181_memory_ptr__fromStack_reversed","nativeSrc":"10989:267:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11123:9:18","nodeType":"YulTypedName","src":"11123:9:18","type":""},{"name":"value0","nativeSrc":"11134:6:18","nodeType":"YulTypedName","src":"11134:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11145:4:18","nodeType":"YulTypedName","src":"11145:4:18","type":""}],"src":"10989:267:18"},{"body":{"nativeSrc":"11390:474:18","nodeType":"YulBlock","src":"11390:474:18","statements":[{"body":{"nativeSrc":"11436:16:18","nodeType":"YulBlock","src":"11436:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11445:1:18","nodeType":"YulLiteral","src":"11445:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"11448:1:18","nodeType":"YulLiteral","src":"11448:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11438:6:18","nodeType":"YulIdentifier","src":"11438:6:18"},"nativeSrc":"11438:12:18","nodeType":"YulFunctionCall","src":"11438:12:18"},"nativeSrc":"11438:12:18","nodeType":"YulExpressionStatement","src":"11438:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11411:7:18","nodeType":"YulIdentifier","src":"11411:7:18"},{"name":"headStart","nativeSrc":"11420:9:18","nodeType":"YulIdentifier","src":"11420:9:18"}],"functionName":{"name":"sub","nativeSrc":"11407:3:18","nodeType":"YulIdentifier","src":"11407:3:18"},"nativeSrc":"11407:23:18","nodeType":"YulFunctionCall","src":"11407:23:18"},{"kind":"number","nativeSrc":"11432:2:18","nodeType":"YulLiteral","src":"11432:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"11403:3:18","nodeType":"YulIdentifier","src":"11403:3:18"},"nativeSrc":"11403:32:18","nodeType":"YulFunctionCall","src":"11403:32:18"},"nativeSrc":"11400:52:18","nodeType":"YulIf","src":"11400:52:18"},{"nativeSrc":"11461:37:18","nodeType":"YulVariableDeclaration","src":"11461:37:18","value":{"arguments":[{"name":"headStart","nativeSrc":"11488:9:18","nodeType":"YulIdentifier","src":"11488:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"11475:12:18","nodeType":"YulIdentifier","src":"11475:12:18"},"nativeSrc":"11475:23:18","nodeType":"YulFunctionCall","src":"11475:23:18"},"variables":[{"name":"offset","nativeSrc":"11465:6:18","nodeType":"YulTypedName","src":"11465:6:18","type":""}]},{"body":{"nativeSrc":"11541:16:18","nodeType":"YulBlock","src":"11541:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11550:1:18","nodeType":"YulLiteral","src":"11550:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"11553:1:18","nodeType":"YulLiteral","src":"11553:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11543:6:18","nodeType":"YulIdentifier","src":"11543:6:18"},"nativeSrc":"11543:12:18","nodeType":"YulFunctionCall","src":"11543:12:18"},"nativeSrc":"11543:12:18","nodeType":"YulExpressionStatement","src":"11543:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11513:6:18","nodeType":"YulIdentifier","src":"11513:6:18"},{"kind":"number","nativeSrc":"11521:18:18","nodeType":"YulLiteral","src":"11521:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11510:2:18","nodeType":"YulIdentifier","src":"11510:2:18"},"nativeSrc":"11510:30:18","nodeType":"YulFunctionCall","src":"11510:30:18"},"nativeSrc":"11507:50:18","nodeType":"YulIf","src":"11507:50:18"},{"nativeSrc":"11566:71:18","nodeType":"YulAssignment","src":"11566:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11609:9:18","nodeType":"YulIdentifier","src":"11609:9:18"},{"name":"offset","nativeSrc":"11620:6:18","nodeType":"YulIdentifier","src":"11620:6:18"}],"functionName":{"name":"add","nativeSrc":"11605:3:18","nodeType":"YulIdentifier","src":"11605:3:18"},"nativeSrc":"11605:22:18","nodeType":"YulFunctionCall","src":"11605:22:18"},{"name":"dataEnd","nativeSrc":"11629:7:18","nodeType":"YulIdentifier","src":"11629:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"11576:28:18","nodeType":"YulIdentifier","src":"11576:28:18"},"nativeSrc":"11576:61:18","nodeType":"YulFunctionCall","src":"11576:61:18"},"variableNames":[{"name":"value0","nativeSrc":"11566:6:18","nodeType":"YulIdentifier","src":"11566:6:18"}]},{"nativeSrc":"11646:45:18","nodeType":"YulVariableDeclaration","src":"11646:45:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11676:9:18","nodeType":"YulIdentifier","src":"11676:9:18"},{"kind":"number","nativeSrc":"11687:2:18","nodeType":"YulLiteral","src":"11687:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11672:3:18","nodeType":"YulIdentifier","src":"11672:3:18"},"nativeSrc":"11672:18:18","nodeType":"YulFunctionCall","src":"11672:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"11659:12:18","nodeType":"YulIdentifier","src":"11659:12:18"},"nativeSrc":"11659:32:18","nodeType":"YulFunctionCall","src":"11659:32:18"},"variables":[{"name":"value","nativeSrc":"11650:5:18","nodeType":"YulTypedName","src":"11650:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11725:5:18","nodeType":"YulIdentifier","src":"11725:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11700:24:18","nodeType":"YulIdentifier","src":"11700:24:18"},"nativeSrc":"11700:31:18","nodeType":"YulFunctionCall","src":"11700:31:18"},"nativeSrc":"11700:31:18","nodeType":"YulExpressionStatement","src":"11700:31:18"},{"nativeSrc":"11740:15:18","nodeType":"YulAssignment","src":"11740:15:18","value":{"name":"value","nativeSrc":"11750:5:18","nodeType":"YulIdentifier","src":"11750:5:18"},"variableNames":[{"name":"value1","nativeSrc":"11740:6:18","nodeType":"YulIdentifier","src":"11740:6:18"}]},{"nativeSrc":"11764:16:18","nodeType":"YulVariableDeclaration","src":"11764:16:18","value":{"kind":"number","nativeSrc":"11779:1:18","nodeType":"YulLiteral","src":"11779:1:18","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"11768:7:18","nodeType":"YulTypedName","src":"11768:7:18","type":""}]},{"nativeSrc":"11789:43:18","nodeType":"YulAssignment","src":"11789:43:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11817:9:18","nodeType":"YulIdentifier","src":"11817:9:18"},{"kind":"number","nativeSrc":"11828:2:18","nodeType":"YulLiteral","src":"11828:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11813:3:18","nodeType":"YulIdentifier","src":"11813:3:18"},"nativeSrc":"11813:18:18","nodeType":"YulFunctionCall","src":"11813:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"11800:12:18","nodeType":"YulIdentifier","src":"11800:12:18"},"nativeSrc":"11800:32:18","nodeType":"YulFunctionCall","src":"11800:32:18"},"variableNames":[{"name":"value_1","nativeSrc":"11789:7:18","nodeType":"YulIdentifier","src":"11789:7:18"}]},{"nativeSrc":"11841:17:18","nodeType":"YulAssignment","src":"11841:17:18","value":{"name":"value_1","nativeSrc":"11851:7:18","nodeType":"YulIdentifier","src":"11851:7:18"},"variableNames":[{"name":"value2","nativeSrc":"11841:6:18","nodeType":"YulIdentifier","src":"11841:6:18"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256","nativeSrc":"11261:603:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11340:9:18","nodeType":"YulTypedName","src":"11340:9:18","type":""},{"name":"dataEnd","nativeSrc":"11351:7:18","nodeType":"YulTypedName","src":"11351:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11363:6:18","nodeType":"YulTypedName","src":"11363:6:18","type":""},{"name":"value1","nativeSrc":"11371:6:18","nodeType":"YulTypedName","src":"11371:6:18","type":""},{"name":"value2","nativeSrc":"11379:6:18","nodeType":"YulTypedName","src":"11379:6:18","type":""}],"src":"11261:603:18"},{"body":{"nativeSrc":"11935:184:18","nodeType":"YulBlock","src":"11935:184:18","statements":[{"nativeSrc":"11945:10:18","nodeType":"YulVariableDeclaration","src":"11945:10:18","value":{"kind":"number","nativeSrc":"11954:1:18","nodeType":"YulLiteral","src":"11954:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"11949:1:18","nodeType":"YulTypedName","src":"11949:1:18","type":""}]},{"body":{"nativeSrc":"12014:63:18","nodeType":"YulBlock","src":"12014:63:18","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"12039:3:18","nodeType":"YulIdentifier","src":"12039:3:18"},{"name":"i","nativeSrc":"12044:1:18","nodeType":"YulIdentifier","src":"12044:1:18"}],"functionName":{"name":"add","nativeSrc":"12035:3:18","nodeType":"YulIdentifier","src":"12035:3:18"},"nativeSrc":"12035:11:18","nodeType":"YulFunctionCall","src":"12035:11:18"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"12058:3:18","nodeType":"YulIdentifier","src":"12058:3:18"},{"name":"i","nativeSrc":"12063:1:18","nodeType":"YulIdentifier","src":"12063:1:18"}],"functionName":{"name":"add","nativeSrc":"12054:3:18","nodeType":"YulIdentifier","src":"12054:3:18"},"nativeSrc":"12054:11:18","nodeType":"YulFunctionCall","src":"12054:11:18"}],"functionName":{"name":"mload","nativeSrc":"12048:5:18","nodeType":"YulIdentifier","src":"12048:5:18"},"nativeSrc":"12048:18:18","nodeType":"YulFunctionCall","src":"12048:18:18"}],"functionName":{"name":"mstore","nativeSrc":"12028:6:18","nodeType":"YulIdentifier","src":"12028:6:18"},"nativeSrc":"12028:39:18","nodeType":"YulFunctionCall","src":"12028:39:18"},"nativeSrc":"12028:39:18","nodeType":"YulExpressionStatement","src":"12028:39:18"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"11975:1:18","nodeType":"YulIdentifier","src":"11975:1:18"},{"name":"length","nativeSrc":"11978:6:18","nodeType":"YulIdentifier","src":"11978:6:18"}],"functionName":{"name":"lt","nativeSrc":"11972:2:18","nodeType":"YulIdentifier","src":"11972:2:18"},"nativeSrc":"11972:13:18","nodeType":"YulFunctionCall","src":"11972:13:18"},"nativeSrc":"11964:113:18","nodeType":"YulForLoop","post":{"nativeSrc":"11986:19:18","nodeType":"YulBlock","src":"11986:19:18","statements":[{"nativeSrc":"11988:15:18","nodeType":"YulAssignment","src":"11988:15:18","value":{"arguments":[{"name":"i","nativeSrc":"11997:1:18","nodeType":"YulIdentifier","src":"11997:1:18"},{"kind":"number","nativeSrc":"12000:2:18","nodeType":"YulLiteral","src":"12000:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11993:3:18","nodeType":"YulIdentifier","src":"11993:3:18"},"nativeSrc":"11993:10:18","nodeType":"YulFunctionCall","src":"11993:10:18"},"variableNames":[{"name":"i","nativeSrc":"11988:1:18","nodeType":"YulIdentifier","src":"11988:1:18"}]}]},"pre":{"nativeSrc":"11968:3:18","nodeType":"YulBlock","src":"11968:3:18","statements":[]},"src":"11964:113:18"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"12097:3:18","nodeType":"YulIdentifier","src":"12097:3:18"},{"name":"length","nativeSrc":"12102:6:18","nodeType":"YulIdentifier","src":"12102:6:18"}],"functionName":{"name":"add","nativeSrc":"12093:3:18","nodeType":"YulIdentifier","src":"12093:3:18"},"nativeSrc":"12093:16:18","nodeType":"YulFunctionCall","src":"12093:16:18"},{"kind":"number","nativeSrc":"12111:1:18","nodeType":"YulLiteral","src":"12111:1:18","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12086:6:18","nodeType":"YulIdentifier","src":"12086:6:18"},"nativeSrc":"12086:27:18","nodeType":"YulFunctionCall","src":"12086:27:18"},"nativeSrc":"12086:27:18","nodeType":"YulExpressionStatement","src":"12086:27:18"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"11869:250:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"11913:3:18","nodeType":"YulTypedName","src":"11913:3:18","type":""},{"name":"dst","nativeSrc":"11918:3:18","nodeType":"YulTypedName","src":"11918:3:18","type":""},{"name":"length","nativeSrc":"11923:6:18","nodeType":"YulTypedName","src":"11923:6:18","type":""}],"src":"11869:250:18"},{"body":{"nativeSrc":"12245:275:18","nodeType":"YulBlock","src":"12245:275:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12262:9:18","nodeType":"YulIdentifier","src":"12262:9:18"},{"kind":"number","nativeSrc":"12273:2:18","nodeType":"YulLiteral","src":"12273:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"12255:6:18","nodeType":"YulIdentifier","src":"12255:6:18"},"nativeSrc":"12255:21:18","nodeType":"YulFunctionCall","src":"12255:21:18"},"nativeSrc":"12255:21:18","nodeType":"YulExpressionStatement","src":"12255:21:18"},{"nativeSrc":"12285:27:18","nodeType":"YulVariableDeclaration","src":"12285:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"12305:6:18","nodeType":"YulIdentifier","src":"12305:6:18"}],"functionName":{"name":"mload","nativeSrc":"12299:5:18","nodeType":"YulIdentifier","src":"12299:5:18"},"nativeSrc":"12299:13:18","nodeType":"YulFunctionCall","src":"12299:13:18"},"variables":[{"name":"length","nativeSrc":"12289:6:18","nodeType":"YulTypedName","src":"12289:6:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12332:9:18","nodeType":"YulIdentifier","src":"12332:9:18"},{"kind":"number","nativeSrc":"12343:2:18","nodeType":"YulLiteral","src":"12343:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12328:3:18","nodeType":"YulIdentifier","src":"12328:3:18"},"nativeSrc":"12328:18:18","nodeType":"YulFunctionCall","src":"12328:18:18"},{"name":"length","nativeSrc":"12348:6:18","nodeType":"YulIdentifier","src":"12348:6:18"}],"functionName":{"name":"mstore","nativeSrc":"12321:6:18","nodeType":"YulIdentifier","src":"12321:6:18"},"nativeSrc":"12321:34:18","nodeType":"YulFunctionCall","src":"12321:34:18"},"nativeSrc":"12321:34:18","nodeType":"YulExpressionStatement","src":"12321:34:18"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"12403:6:18","nodeType":"YulIdentifier","src":"12403:6:18"},{"kind":"number","nativeSrc":"12411:2:18","nodeType":"YulLiteral","src":"12411:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12399:3:18","nodeType":"YulIdentifier","src":"12399:3:18"},"nativeSrc":"12399:15:18","nodeType":"YulFunctionCall","src":"12399:15:18"},{"arguments":[{"name":"headStart","nativeSrc":"12420:9:18","nodeType":"YulIdentifier","src":"12420:9:18"},{"kind":"number","nativeSrc":"12431:2:18","nodeType":"YulLiteral","src":"12431:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12416:3:18","nodeType":"YulIdentifier","src":"12416:3:18"},"nativeSrc":"12416:18:18","nodeType":"YulFunctionCall","src":"12416:18:18"},{"name":"length","nativeSrc":"12436:6:18","nodeType":"YulIdentifier","src":"12436:6:18"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"12364:34:18","nodeType":"YulIdentifier","src":"12364:34:18"},"nativeSrc":"12364:79:18","nodeType":"YulFunctionCall","src":"12364:79:18"},"nativeSrc":"12364:79:18","nodeType":"YulExpressionStatement","src":"12364:79:18"},{"nativeSrc":"12452:62:18","nodeType":"YulAssignment","src":"12452:62:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12468:9:18","nodeType":"YulIdentifier","src":"12468:9:18"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"12487:6:18","nodeType":"YulIdentifier","src":"12487:6:18"},{"kind":"number","nativeSrc":"12495:2:18","nodeType":"YulLiteral","src":"12495:2:18","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12483:3:18","nodeType":"YulIdentifier","src":"12483:3:18"},"nativeSrc":"12483:15:18","nodeType":"YulFunctionCall","src":"12483:15:18"},{"arguments":[{"kind":"number","nativeSrc":"12504:2:18","nodeType":"YulLiteral","src":"12504:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12500:3:18","nodeType":"YulIdentifier","src":"12500:3:18"},"nativeSrc":"12500:7:18","nodeType":"YulFunctionCall","src":"12500:7:18"}],"functionName":{"name":"and","nativeSrc":"12479:3:18","nodeType":"YulIdentifier","src":"12479:3:18"},"nativeSrc":"12479:29:18","nodeType":"YulFunctionCall","src":"12479:29:18"}],"functionName":{"name":"add","nativeSrc":"12464:3:18","nodeType":"YulIdentifier","src":"12464:3:18"},"nativeSrc":"12464:45:18","nodeType":"YulFunctionCall","src":"12464:45:18"},{"kind":"number","nativeSrc":"12511:2:18","nodeType":"YulLiteral","src":"12511:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12460:3:18","nodeType":"YulIdentifier","src":"12460:3:18"},"nativeSrc":"12460:54:18","nodeType":"YulFunctionCall","src":"12460:54:18"},"variableNames":[{"name":"tail","nativeSrc":"12452:4:18","nodeType":"YulIdentifier","src":"12452:4:18"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12124:396:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12214:9:18","nodeType":"YulTypedName","src":"12214:9:18","type":""},{"name":"value0","nativeSrc":"12225:6:18","nodeType":"YulTypedName","src":"12225:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12236:4:18","nodeType":"YulTypedName","src":"12236:4:18","type":""}],"src":"12124:396:18"},{"body":{"nativeSrc":"12637:371:18","nodeType":"YulBlock","src":"12637:371:18","statements":[{"body":{"nativeSrc":"12683:16:18","nodeType":"YulBlock","src":"12683:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12692:1:18","nodeType":"YulLiteral","src":"12692:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"12695:1:18","nodeType":"YulLiteral","src":"12695:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12685:6:18","nodeType":"YulIdentifier","src":"12685:6:18"},"nativeSrc":"12685:12:18","nodeType":"YulFunctionCall","src":"12685:12:18"},"nativeSrc":"12685:12:18","nodeType":"YulExpressionStatement","src":"12685:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12658:7:18","nodeType":"YulIdentifier","src":"12658:7:18"},{"name":"headStart","nativeSrc":"12667:9:18","nodeType":"YulIdentifier","src":"12667:9:18"}],"functionName":{"name":"sub","nativeSrc":"12654:3:18","nodeType":"YulIdentifier","src":"12654:3:18"},"nativeSrc":"12654:23:18","nodeType":"YulFunctionCall","src":"12654:23:18"},{"kind":"number","nativeSrc":"12679:2:18","nodeType":"YulLiteral","src":"12679:2:18","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"12650:3:18","nodeType":"YulIdentifier","src":"12650:3:18"},"nativeSrc":"12650:32:18","nodeType":"YulFunctionCall","src":"12650:32:18"},"nativeSrc":"12647:52:18","nodeType":"YulIf","src":"12647:52:18"},{"nativeSrc":"12708:36:18","nodeType":"YulVariableDeclaration","src":"12708:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"12734:9:18","nodeType":"YulIdentifier","src":"12734:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"12721:12:18","nodeType":"YulIdentifier","src":"12721:12:18"},"nativeSrc":"12721:23:18","nodeType":"YulFunctionCall","src":"12721:23:18"},"variables":[{"name":"value","nativeSrc":"12712:5:18","nodeType":"YulTypedName","src":"12712:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12778:5:18","nodeType":"YulIdentifier","src":"12778:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"12753:24:18","nodeType":"YulIdentifier","src":"12753:24:18"},"nativeSrc":"12753:31:18","nodeType":"YulFunctionCall","src":"12753:31:18"},"nativeSrc":"12753:31:18","nodeType":"YulExpressionStatement","src":"12753:31:18"},{"nativeSrc":"12793:15:18","nodeType":"YulAssignment","src":"12793:15:18","value":{"name":"value","nativeSrc":"12803:5:18","nodeType":"YulIdentifier","src":"12803:5:18"},"variableNames":[{"name":"value0","nativeSrc":"12793:6:18","nodeType":"YulIdentifier","src":"12793:6:18"}]},{"nativeSrc":"12817:46:18","nodeType":"YulVariableDeclaration","src":"12817:46:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12848:9:18","nodeType":"YulIdentifier","src":"12848:9:18"},{"kind":"number","nativeSrc":"12859:2:18","nodeType":"YulLiteral","src":"12859:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12844:3:18","nodeType":"YulIdentifier","src":"12844:3:18"},"nativeSrc":"12844:18:18","nodeType":"YulFunctionCall","src":"12844:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"12831:12:18","nodeType":"YulIdentifier","src":"12831:12:18"},"nativeSrc":"12831:32:18","nodeType":"YulFunctionCall","src":"12831:32:18"},"variables":[{"name":"offset","nativeSrc":"12821:6:18","nodeType":"YulTypedName","src":"12821:6:18","type":""}]},{"body":{"nativeSrc":"12906:16:18","nodeType":"YulBlock","src":"12906:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12915:1:18","nodeType":"YulLiteral","src":"12915:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"12918:1:18","nodeType":"YulLiteral","src":"12918:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12908:6:18","nodeType":"YulIdentifier","src":"12908:6:18"},"nativeSrc":"12908:12:18","nodeType":"YulFunctionCall","src":"12908:12:18"},"nativeSrc":"12908:12:18","nodeType":"YulExpressionStatement","src":"12908:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12878:6:18","nodeType":"YulIdentifier","src":"12878:6:18"},{"kind":"number","nativeSrc":"12886:18:18","nodeType":"YulLiteral","src":"12886:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12875:2:18","nodeType":"YulIdentifier","src":"12875:2:18"},"nativeSrc":"12875:30:18","nodeType":"YulFunctionCall","src":"12875:30:18"},"nativeSrc":"12872:50:18","nodeType":"YulIf","src":"12872:50:18"},{"nativeSrc":"12931:71:18","nodeType":"YulAssignment","src":"12931:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12974:9:18","nodeType":"YulIdentifier","src":"12974:9:18"},{"name":"offset","nativeSrc":"12985:6:18","nodeType":"YulIdentifier","src":"12985:6:18"}],"functionName":{"name":"add","nativeSrc":"12970:3:18","nodeType":"YulIdentifier","src":"12970:3:18"},"nativeSrc":"12970:22:18","nodeType":"YulFunctionCall","src":"12970:22:18"},{"name":"dataEnd","nativeSrc":"12994:7:18","nodeType":"YulIdentifier","src":"12994:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"12941:28:18","nodeType":"YulIdentifier","src":"12941:28:18"},"nativeSrc":"12941:61:18","nodeType":"YulFunctionCall","src":"12941:61:18"},"variableNames":[{"name":"value1","nativeSrc":"12931:6:18","nodeType":"YulIdentifier","src":"12931:6:18"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"12525:483:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12595:9:18","nodeType":"YulTypedName","src":"12595:9:18","type":""},{"name":"dataEnd","nativeSrc":"12606:7:18","nodeType":"YulTypedName","src":"12606:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12618:6:18","nodeType":"YulTypedName","src":"12618:6:18","type":""},{"name":"value1","nativeSrc":"12626:6:18","nodeType":"YulTypedName","src":"12626:6:18","type":""}],"src":"12525:483:18"},{"body":{"nativeSrc":"13228:488:18","nodeType":"YulBlock","src":"13228:488:18","statements":[{"nativeSrc":"13238:32:18","nodeType":"YulVariableDeclaration","src":"13238:32:18","value":{"arguments":[{"name":"headStart","nativeSrc":"13256:9:18","nodeType":"YulIdentifier","src":"13256:9:18"},{"kind":"number","nativeSrc":"13267:2:18","nodeType":"YulLiteral","src":"13267:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13252:3:18","nodeType":"YulIdentifier","src":"13252:3:18"},"nativeSrc":"13252:18:18","nodeType":"YulFunctionCall","src":"13252:18:18"},"variables":[{"name":"tail_1","nativeSrc":"13242:6:18","nodeType":"YulTypedName","src":"13242:6:18","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13286:9:18","nodeType":"YulIdentifier","src":"13286:9:18"},{"kind":"number","nativeSrc":"13297:2:18","nodeType":"YulLiteral","src":"13297:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13279:6:18","nodeType":"YulIdentifier","src":"13279:6:18"},"nativeSrc":"13279:21:18","nodeType":"YulFunctionCall","src":"13279:21:18"},"nativeSrc":"13279:21:18","nodeType":"YulExpressionStatement","src":"13279:21:18"},{"nativeSrc":"13309:17:18","nodeType":"YulVariableDeclaration","src":"13309:17:18","value":{"name":"tail_1","nativeSrc":"13320:6:18","nodeType":"YulIdentifier","src":"13320:6:18"},"variables":[{"name":"pos","nativeSrc":"13313:3:18","nodeType":"YulTypedName","src":"13313:3:18","type":""}]},{"nativeSrc":"13335:27:18","nodeType":"YulVariableDeclaration","src":"13335:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"13355:6:18","nodeType":"YulIdentifier","src":"13355:6:18"}],"functionName":{"name":"mload","nativeSrc":"13349:5:18","nodeType":"YulIdentifier","src":"13349:5:18"},"nativeSrc":"13349:13:18","nodeType":"YulFunctionCall","src":"13349:13:18"},"variables":[{"name":"length","nativeSrc":"13339:6:18","nodeType":"YulTypedName","src":"13339:6:18","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"13378:6:18","nodeType":"YulIdentifier","src":"13378:6:18"},{"name":"length","nativeSrc":"13386:6:18","nodeType":"YulIdentifier","src":"13386:6:18"}],"functionName":{"name":"mstore","nativeSrc":"13371:6:18","nodeType":"YulIdentifier","src":"13371:6:18"},"nativeSrc":"13371:22:18","nodeType":"YulFunctionCall","src":"13371:22:18"},"nativeSrc":"13371:22:18","nodeType":"YulExpressionStatement","src":"13371:22:18"},{"nativeSrc":"13402:25:18","nodeType":"YulAssignment","src":"13402:25:18","value":{"arguments":[{"name":"headStart","nativeSrc":"13413:9:18","nodeType":"YulIdentifier","src":"13413:9:18"},{"kind":"number","nativeSrc":"13424:2:18","nodeType":"YulLiteral","src":"13424:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13409:3:18","nodeType":"YulIdentifier","src":"13409:3:18"},"nativeSrc":"13409:18:18","nodeType":"YulFunctionCall","src":"13409:18:18"},"variableNames":[{"name":"pos","nativeSrc":"13402:3:18","nodeType":"YulIdentifier","src":"13402:3:18"}]},{"nativeSrc":"13436:29:18","nodeType":"YulVariableDeclaration","src":"13436:29:18","value":{"arguments":[{"name":"value0","nativeSrc":"13454:6:18","nodeType":"YulIdentifier","src":"13454:6:18"},{"kind":"number","nativeSrc":"13462:2:18","nodeType":"YulLiteral","src":"13462:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13450:3:18","nodeType":"YulIdentifier","src":"13450:3:18"},"nativeSrc":"13450:15:18","nodeType":"YulFunctionCall","src":"13450:15:18"},"variables":[{"name":"srcPtr","nativeSrc":"13440:6:18","nodeType":"YulTypedName","src":"13440:6:18","type":""}]},{"nativeSrc":"13474:10:18","nodeType":"YulVariableDeclaration","src":"13474:10:18","value":{"kind":"number","nativeSrc":"13483:1:18","nodeType":"YulLiteral","src":"13483:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"13478:1:18","nodeType":"YulTypedName","src":"13478:1:18","type":""}]},{"body":{"nativeSrc":"13542:148:18","nodeType":"YulBlock","src":"13542:148:18","statements":[{"expression":{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"13595:6:18","nodeType":"YulIdentifier","src":"13595:6:18"}],"functionName":{"name":"mload","nativeSrc":"13589:5:18","nodeType":"YulIdentifier","src":"13589:5:18"},"nativeSrc":"13589:13:18","nodeType":"YulFunctionCall","src":"13589:13:18"},{"name":"pos","nativeSrc":"13604:3:18","nodeType":"YulIdentifier","src":"13604:3:18"}],"functionName":{"name":"abi_encode_struct_ViewPermission","nativeSrc":"13556:32:18","nodeType":"YulIdentifier","src":"13556:32:18"},"nativeSrc":"13556:52:18","nodeType":"YulFunctionCall","src":"13556:52:18"},"nativeSrc":"13556:52:18","nodeType":"YulExpressionStatement","src":"13556:52:18"},{"nativeSrc":"13621:21:18","nodeType":"YulAssignment","src":"13621:21:18","value":{"arguments":[{"name":"pos","nativeSrc":"13632:3:18","nodeType":"YulIdentifier","src":"13632:3:18"},{"kind":"number","nativeSrc":"13637:4:18","nodeType":"YulLiteral","src":"13637:4:18","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"13628:3:18","nodeType":"YulIdentifier","src":"13628:3:18"},"nativeSrc":"13628:14:18","nodeType":"YulFunctionCall","src":"13628:14:18"},"variableNames":[{"name":"pos","nativeSrc":"13621:3:18","nodeType":"YulIdentifier","src":"13621:3:18"}]},{"nativeSrc":"13655:25:18","nodeType":"YulAssignment","src":"13655:25:18","value":{"arguments":[{"name":"srcPtr","nativeSrc":"13669:6:18","nodeType":"YulIdentifier","src":"13669:6:18"},{"kind":"number","nativeSrc":"13677:2:18","nodeType":"YulLiteral","src":"13677:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13665:3:18","nodeType":"YulIdentifier","src":"13665:3:18"},"nativeSrc":"13665:15:18","nodeType":"YulFunctionCall","src":"13665:15:18"},"variableNames":[{"name":"srcPtr","nativeSrc":"13655:6:18","nodeType":"YulIdentifier","src":"13655:6:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"13504:1:18","nodeType":"YulIdentifier","src":"13504:1:18"},{"name":"length","nativeSrc":"13507:6:18","nodeType":"YulIdentifier","src":"13507:6:18"}],"functionName":{"name":"lt","nativeSrc":"13501:2:18","nodeType":"YulIdentifier","src":"13501:2:18"},"nativeSrc":"13501:13:18","nodeType":"YulFunctionCall","src":"13501:13:18"},"nativeSrc":"13493:197:18","nodeType":"YulForLoop","post":{"nativeSrc":"13515:18:18","nodeType":"YulBlock","src":"13515:18:18","statements":[{"nativeSrc":"13517:14:18","nodeType":"YulAssignment","src":"13517:14:18","value":{"arguments":[{"name":"i","nativeSrc":"13526:1:18","nodeType":"YulIdentifier","src":"13526:1:18"},{"kind":"number","nativeSrc":"13529:1:18","nodeType":"YulLiteral","src":"13529:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13522:3:18","nodeType":"YulIdentifier","src":"13522:3:18"},"nativeSrc":"13522:9:18","nodeType":"YulFunctionCall","src":"13522:9:18"},"variableNames":[{"name":"i","nativeSrc":"13517:1:18","nodeType":"YulIdentifier","src":"13517:1:18"}]}]},"pre":{"nativeSrc":"13497:3:18","nodeType":"YulBlock","src":"13497:3:18","statements":[]},"src":"13493:197:18"},{"nativeSrc":"13699:11:18","nodeType":"YulAssignment","src":"13699:11:18","value":{"name":"pos","nativeSrc":"13707:3:18","nodeType":"YulIdentifier","src":"13707:3:18"},"variableNames":[{"name":"tail","nativeSrc":"13699:4:18","nodeType":"YulIdentifier","src":"13699:4:18"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"13013:703:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13197:9:18","nodeType":"YulTypedName","src":"13197:9:18","type":""},{"name":"value0","nativeSrc":"13208:6:18","nodeType":"YulTypedName","src":"13208:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13219:4:18","nodeType":"YulTypedName","src":"13219:4:18","type":""}],"src":"13013:703:18"},{"body":{"nativeSrc":"13875:571:18","nodeType":"YulBlock","src":"13875:571:18","statements":[{"body":{"nativeSrc":"13921:16:18","nodeType":"YulBlock","src":"13921:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13930:1:18","nodeType":"YulLiteral","src":"13930:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"13933:1:18","nodeType":"YulLiteral","src":"13933:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13923:6:18","nodeType":"YulIdentifier","src":"13923:6:18"},"nativeSrc":"13923:12:18","nodeType":"YulFunctionCall","src":"13923:12:18"},"nativeSrc":"13923:12:18","nodeType":"YulExpressionStatement","src":"13923:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13896:7:18","nodeType":"YulIdentifier","src":"13896:7:18"},{"name":"headStart","nativeSrc":"13905:9:18","nodeType":"YulIdentifier","src":"13905:9:18"}],"functionName":{"name":"sub","nativeSrc":"13892:3:18","nodeType":"YulIdentifier","src":"13892:3:18"},"nativeSrc":"13892:23:18","nodeType":"YulFunctionCall","src":"13892:23:18"},{"kind":"number","nativeSrc":"13917:2:18","nodeType":"YulLiteral","src":"13917:2:18","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"13888:3:18","nodeType":"YulIdentifier","src":"13888:3:18"},"nativeSrc":"13888:32:18","nodeType":"YulFunctionCall","src":"13888:32:18"},"nativeSrc":"13885:52:18","nodeType":"YulIf","src":"13885:52:18"},{"nativeSrc":"13946:37:18","nodeType":"YulVariableDeclaration","src":"13946:37:18","value":{"arguments":[{"name":"headStart","nativeSrc":"13973:9:18","nodeType":"YulIdentifier","src":"13973:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"13960:12:18","nodeType":"YulIdentifier","src":"13960:12:18"},"nativeSrc":"13960:23:18","nodeType":"YulFunctionCall","src":"13960:23:18"},"variables":[{"name":"offset","nativeSrc":"13950:6:18","nodeType":"YulTypedName","src":"13950:6:18","type":""}]},{"body":{"nativeSrc":"14026:16:18","nodeType":"YulBlock","src":"14026:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14035:1:18","nodeType":"YulLiteral","src":"14035:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"14038:1:18","nodeType":"YulLiteral","src":"14038:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14028:6:18","nodeType":"YulIdentifier","src":"14028:6:18"},"nativeSrc":"14028:12:18","nodeType":"YulFunctionCall","src":"14028:12:18"},"nativeSrc":"14028:12:18","nodeType":"YulExpressionStatement","src":"14028:12:18"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13998:6:18","nodeType":"YulIdentifier","src":"13998:6:18"},{"kind":"number","nativeSrc":"14006:18:18","nodeType":"YulLiteral","src":"14006:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13995:2:18","nodeType":"YulIdentifier","src":"13995:2:18"},"nativeSrc":"13995:30:18","nodeType":"YulFunctionCall","src":"13995:30:18"},"nativeSrc":"13992:50:18","nodeType":"YulIf","src":"13992:50:18"},{"nativeSrc":"14051:71:18","nodeType":"YulAssignment","src":"14051:71:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14094:9:18","nodeType":"YulIdentifier","src":"14094:9:18"},{"name":"offset","nativeSrc":"14105:6:18","nodeType":"YulIdentifier","src":"14105:6:18"}],"functionName":{"name":"add","nativeSrc":"14090:3:18","nodeType":"YulIdentifier","src":"14090:3:18"},"nativeSrc":"14090:22:18","nodeType":"YulFunctionCall","src":"14090:22:18"},{"name":"dataEnd","nativeSrc":"14114:7:18","nodeType":"YulIdentifier","src":"14114:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"14061:28:18","nodeType":"YulIdentifier","src":"14061:28:18"},"nativeSrc":"14061:61:18","nodeType":"YulFunctionCall","src":"14061:61:18"},"variableNames":[{"name":"value0","nativeSrc":"14051:6:18","nodeType":"YulIdentifier","src":"14051:6:18"}]},{"nativeSrc":"14131:45:18","nodeType":"YulVariableDeclaration","src":"14131:45:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14161:9:18","nodeType":"YulIdentifier","src":"14161:9:18"},{"kind":"number","nativeSrc":"14172:2:18","nodeType":"YulLiteral","src":"14172:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14157:3:18","nodeType":"YulIdentifier","src":"14157:3:18"},"nativeSrc":"14157:18:18","nodeType":"YulFunctionCall","src":"14157:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"14144:12:18","nodeType":"YulIdentifier","src":"14144:12:18"},"nativeSrc":"14144:32:18","nodeType":"YulFunctionCall","src":"14144:32:18"},"variables":[{"name":"value","nativeSrc":"14135:5:18","nodeType":"YulTypedName","src":"14135:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14210:5:18","nodeType":"YulIdentifier","src":"14210:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14185:24:18","nodeType":"YulIdentifier","src":"14185:24:18"},"nativeSrc":"14185:31:18","nodeType":"YulFunctionCall","src":"14185:31:18"},"nativeSrc":"14185:31:18","nodeType":"YulExpressionStatement","src":"14185:31:18"},{"nativeSrc":"14225:15:18","nodeType":"YulAssignment","src":"14225:15:18","value":{"name":"value","nativeSrc":"14235:5:18","nodeType":"YulIdentifier","src":"14235:5:18"},"variableNames":[{"name":"value1","nativeSrc":"14225:6:18","nodeType":"YulIdentifier","src":"14225:6:18"}]},{"nativeSrc":"14249:48:18","nodeType":"YulVariableDeclaration","src":"14249:48:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14282:9:18","nodeType":"YulIdentifier","src":"14282:9:18"},{"kind":"number","nativeSrc":"14293:2:18","nodeType":"YulLiteral","src":"14293:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14278:3:18","nodeType":"YulIdentifier","src":"14278:3:18"},"nativeSrc":"14278:18:18","nodeType":"YulFunctionCall","src":"14278:18:18"}],"functionName":{"name":"calldataload","nativeSrc":"14265:12:18","nodeType":"YulIdentifier","src":"14265:12:18"},"nativeSrc":"14265:32:18","nodeType":"YulFunctionCall","src":"14265:32:18"},"variables":[{"name":"offset_1","nativeSrc":"14253:8:18","nodeType":"YulTypedName","src":"14253:8:18","type":""}]},{"body":{"nativeSrc":"14342:16:18","nodeType":"YulBlock","src":"14342:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14351:1:18","nodeType":"YulLiteral","src":"14351:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"14354:1:18","nodeType":"YulLiteral","src":"14354:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14344:6:18","nodeType":"YulIdentifier","src":"14344:6:18"},"nativeSrc":"14344:12:18","nodeType":"YulFunctionCall","src":"14344:12:18"},"nativeSrc":"14344:12:18","nodeType":"YulExpressionStatement","src":"14344:12:18"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"14312:8:18","nodeType":"YulIdentifier","src":"14312:8:18"},{"kind":"number","nativeSrc":"14322:18:18","nodeType":"YulLiteral","src":"14322:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14309:2:18","nodeType":"YulIdentifier","src":"14309:2:18"},"nativeSrc":"14309:32:18","nodeType":"YulFunctionCall","src":"14309:32:18"},"nativeSrc":"14306:52:18","nodeType":"YulIf","src":"14306:52:18"},{"nativeSrc":"14367:73:18","nodeType":"YulAssignment","src":"14367:73:18","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14410:9:18","nodeType":"YulIdentifier","src":"14410:9:18"},{"name":"offset_1","nativeSrc":"14421:8:18","nodeType":"YulIdentifier","src":"14421:8:18"}],"functionName":{"name":"add","nativeSrc":"14406:3:18","nodeType":"YulIdentifier","src":"14406:3:18"},"nativeSrc":"14406:24:18","nodeType":"YulFunctionCall","src":"14406:24:18"},{"name":"dataEnd","nativeSrc":"14432:7:18","nodeType":"YulIdentifier","src":"14432:7:18"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"14377:28:18","nodeType":"YulIdentifier","src":"14377:28:18"},"nativeSrc":"14377:63:18","nodeType":"YulFunctionCall","src":"14377:63:18"},"variableNames":[{"name":"value2","nativeSrc":"14367:6:18","nodeType":"YulIdentifier","src":"14367:6:18"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"13721:725:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13825:9:18","nodeType":"YulTypedName","src":"13825:9:18","type":""},{"name":"dataEnd","nativeSrc":"13836:7:18","nodeType":"YulTypedName","src":"13836:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13848:6:18","nodeType":"YulTypedName","src":"13848:6:18","type":""},{"name":"value1","nativeSrc":"13856:6:18","nodeType":"YulTypedName","src":"13856:6:18","type":""},{"name":"value2","nativeSrc":"13864:6:18","nodeType":"YulTypedName","src":"13864:6:18","type":""}],"src":"13721:725:18"},{"body":{"nativeSrc":"14512:359:18","nodeType":"YulBlock","src":"14512:359:18","statements":[{"nativeSrc":"14522:26:18","nodeType":"YulVariableDeclaration","src":"14522:26:18","value":{"arguments":[{"name":"value","nativeSrc":"14542:5:18","nodeType":"YulIdentifier","src":"14542:5:18"}],"functionName":{"name":"mload","nativeSrc":"14536:5:18","nodeType":"YulIdentifier","src":"14536:5:18"},"nativeSrc":"14536:12:18","nodeType":"YulFunctionCall","src":"14536:12:18"},"variables":[{"name":"length","nativeSrc":"14526:6:18","nodeType":"YulTypedName","src":"14526:6:18","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"14564:3:18","nodeType":"YulIdentifier","src":"14564:3:18"},{"name":"length","nativeSrc":"14569:6:18","nodeType":"YulIdentifier","src":"14569:6:18"}],"functionName":{"name":"mstore","nativeSrc":"14557:6:18","nodeType":"YulIdentifier","src":"14557:6:18"},"nativeSrc":"14557:19:18","nodeType":"YulFunctionCall","src":"14557:19:18"},"nativeSrc":"14557:19:18","nodeType":"YulExpressionStatement","src":"14557:19:18"},{"nativeSrc":"14585:21:18","nodeType":"YulAssignment","src":"14585:21:18","value":{"arguments":[{"name":"pos","nativeSrc":"14596:3:18","nodeType":"YulIdentifier","src":"14596:3:18"},{"kind":"number","nativeSrc":"14601:4:18","nodeType":"YulLiteral","src":"14601:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14592:3:18","nodeType":"YulIdentifier","src":"14592:3:18"},"nativeSrc":"14592:14:18","nodeType":"YulFunctionCall","src":"14592:14:18"},"variableNames":[{"name":"pos","nativeSrc":"14585:3:18","nodeType":"YulIdentifier","src":"14585:3:18"}]},{"nativeSrc":"14615:30:18","nodeType":"YulVariableDeclaration","src":"14615:30:18","value":{"arguments":[{"name":"value","nativeSrc":"14633:5:18","nodeType":"YulIdentifier","src":"14633:5:18"},{"kind":"number","nativeSrc":"14640:4:18","nodeType":"YulLiteral","src":"14640:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14629:3:18","nodeType":"YulIdentifier","src":"14629:3:18"},"nativeSrc":"14629:16:18","nodeType":"YulFunctionCall","src":"14629:16:18"},"variables":[{"name":"srcPtr","nativeSrc":"14619:6:18","nodeType":"YulTypedName","src":"14619:6:18","type":""}]},{"nativeSrc":"14654:10:18","nodeType":"YulVariableDeclaration","src":"14654:10:18","value":{"kind":"number","nativeSrc":"14663:1:18","nodeType":"YulLiteral","src":"14663:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"14658:1:18","nodeType":"YulTypedName","src":"14658:1:18","type":""}]},{"body":{"nativeSrc":"14722:124:18","nodeType":"YulBlock","src":"14722:124:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"14743:3:18","nodeType":"YulIdentifier","src":"14743:3:18"},{"arguments":[{"name":"srcPtr","nativeSrc":"14754:6:18","nodeType":"YulIdentifier","src":"14754:6:18"}],"functionName":{"name":"mload","nativeSrc":"14748:5:18","nodeType":"YulIdentifier","src":"14748:5:18"},"nativeSrc":"14748:13:18","nodeType":"YulFunctionCall","src":"14748:13:18"}],"functionName":{"name":"mstore","nativeSrc":"14736:6:18","nodeType":"YulIdentifier","src":"14736:6:18"},"nativeSrc":"14736:26:18","nodeType":"YulFunctionCall","src":"14736:26:18"},"nativeSrc":"14736:26:18","nodeType":"YulExpressionStatement","src":"14736:26:18"},{"nativeSrc":"14775:21:18","nodeType":"YulAssignment","src":"14775:21:18","value":{"arguments":[{"name":"pos","nativeSrc":"14786:3:18","nodeType":"YulIdentifier","src":"14786:3:18"},{"kind":"number","nativeSrc":"14791:4:18","nodeType":"YulLiteral","src":"14791:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14782:3:18","nodeType":"YulIdentifier","src":"14782:3:18"},"nativeSrc":"14782:14:18","nodeType":"YulFunctionCall","src":"14782:14:18"},"variableNames":[{"name":"pos","nativeSrc":"14775:3:18","nodeType":"YulIdentifier","src":"14775:3:18"}]},{"nativeSrc":"14809:27:18","nodeType":"YulAssignment","src":"14809:27:18","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14823:6:18","nodeType":"YulIdentifier","src":"14823:6:18"},{"kind":"number","nativeSrc":"14831:4:18","nodeType":"YulLiteral","src":"14831:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14819:3:18","nodeType":"YulIdentifier","src":"14819:3:18"},"nativeSrc":"14819:17:18","nodeType":"YulFunctionCall","src":"14819:17:18"},"variableNames":[{"name":"srcPtr","nativeSrc":"14809:6:18","nodeType":"YulIdentifier","src":"14809:6:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"14684:1:18","nodeType":"YulIdentifier","src":"14684:1:18"},{"name":"length","nativeSrc":"14687:6:18","nodeType":"YulIdentifier","src":"14687:6:18"}],"functionName":{"name":"lt","nativeSrc":"14681:2:18","nodeType":"YulIdentifier","src":"14681:2:18"},"nativeSrc":"14681:13:18","nodeType":"YulFunctionCall","src":"14681:13:18"},"nativeSrc":"14673:173:18","nodeType":"YulForLoop","post":{"nativeSrc":"14695:18:18","nodeType":"YulBlock","src":"14695:18:18","statements":[{"nativeSrc":"14697:14:18","nodeType":"YulAssignment","src":"14697:14:18","value":{"arguments":[{"name":"i","nativeSrc":"14706:1:18","nodeType":"YulIdentifier","src":"14706:1:18"},{"kind":"number","nativeSrc":"14709:1:18","nodeType":"YulLiteral","src":"14709:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14702:3:18","nodeType":"YulIdentifier","src":"14702:3:18"},"nativeSrc":"14702:9:18","nodeType":"YulFunctionCall","src":"14702:9:18"},"variableNames":[{"name":"i","nativeSrc":"14697:1:18","nodeType":"YulIdentifier","src":"14697:1:18"}]}]},"pre":{"nativeSrc":"14677:3:18","nodeType":"YulBlock","src":"14677:3:18","statements":[]},"src":"14673:173:18"},{"nativeSrc":"14855:10:18","nodeType":"YulAssignment","src":"14855:10:18","value":{"name":"pos","nativeSrc":"14862:3:18","nodeType":"YulIdentifier","src":"14862:3:18"},"variableNames":[{"name":"end","nativeSrc":"14855:3:18","nodeType":"YulIdentifier","src":"14855:3:18"}]}]},"name":"abi_encode_array_uint256_dyn","nativeSrc":"14451:420:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"14489:5:18","nodeType":"YulTypedName","src":"14489:5:18","type":""},{"name":"pos","nativeSrc":"14496:3:18","nodeType":"YulTypedName","src":"14496:3:18","type":""}],"returnVariables":[{"name":"end","nativeSrc":"14504:3:18","nodeType":"YulTypedName","src":"14504:3:18","type":""}],"src":"14451:420:18"},{"body":{"nativeSrc":"15051:1032:18","nodeType":"YulBlock","src":"15051:1032:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15068:9:18","nodeType":"YulIdentifier","src":"15068:9:18"},{"kind":"number","nativeSrc":"15079:2:18","nodeType":"YulLiteral","src":"15079:2:18","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"15061:6:18","nodeType":"YulIdentifier","src":"15061:6:18"},"nativeSrc":"15061:21:18","nodeType":"YulFunctionCall","src":"15061:21:18"},"nativeSrc":"15061:21:18","nodeType":"YulExpressionStatement","src":"15061:21:18"},{"nativeSrc":"15091:33:18","nodeType":"YulVariableDeclaration","src":"15091:33:18","value":{"arguments":[{"name":"headStart","nativeSrc":"15109:9:18","nodeType":"YulIdentifier","src":"15109:9:18"},{"kind":"number","nativeSrc":"15120:3:18","nodeType":"YulLiteral","src":"15120:3:18","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"15105:3:18","nodeType":"YulIdentifier","src":"15105:3:18"},"nativeSrc":"15105:19:18","nodeType":"YulFunctionCall","src":"15105:19:18"},"variables":[{"name":"tail_1","nativeSrc":"15095:6:18","nodeType":"YulTypedName","src":"15095:6:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15144:9:18","nodeType":"YulIdentifier","src":"15144:9:18"},{"kind":"number","nativeSrc":"15155:2:18","nodeType":"YulLiteral","src":"15155:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15140:3:18","nodeType":"YulIdentifier","src":"15140:3:18"},"nativeSrc":"15140:18:18","nodeType":"YulFunctionCall","src":"15140:18:18"},{"arguments":[{"name":"value0","nativeSrc":"15166:6:18","nodeType":"YulIdentifier","src":"15166:6:18"}],"functionName":{"name":"mload","nativeSrc":"15160:5:18","nodeType":"YulIdentifier","src":"15160:5:18"},"nativeSrc":"15160:13:18","nodeType":"YulFunctionCall","src":"15160:13:18"}],"functionName":{"name":"mstore","nativeSrc":"15133:6:18","nodeType":"YulIdentifier","src":"15133:6:18"},"nativeSrc":"15133:41:18","nodeType":"YulFunctionCall","src":"15133:41:18"},"nativeSrc":"15133:41:18","nodeType":"YulExpressionStatement","src":"15133:41:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15194:9:18","nodeType":"YulIdentifier","src":"15194:9:18"},{"kind":"number","nativeSrc":"15205:2:18","nodeType":"YulLiteral","src":"15205:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15190:3:18","nodeType":"YulIdentifier","src":"15190:3:18"},"nativeSrc":"15190:18:18","nodeType":"YulFunctionCall","src":"15190:18:18"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15234:6:18","nodeType":"YulIdentifier","src":"15234:6:18"},{"kind":"number","nativeSrc":"15242:2:18","nodeType":"YulLiteral","src":"15242:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15230:3:18","nodeType":"YulIdentifier","src":"15230:3:18"},"nativeSrc":"15230:15:18","nodeType":"YulFunctionCall","src":"15230:15:18"}],"functionName":{"name":"mload","nativeSrc":"15224:5:18","nodeType":"YulIdentifier","src":"15224:5:18"},"nativeSrc":"15224:22:18","nodeType":"YulFunctionCall","src":"15224:22:18"}],"functionName":{"name":"iszero","nativeSrc":"15217:6:18","nodeType":"YulIdentifier","src":"15217:6:18"},"nativeSrc":"15217:30:18","nodeType":"YulFunctionCall","src":"15217:30:18"}],"functionName":{"name":"iszero","nativeSrc":"15210:6:18","nodeType":"YulIdentifier","src":"15210:6:18"},"nativeSrc":"15210:38:18","nodeType":"YulFunctionCall","src":"15210:38:18"}],"functionName":{"name":"mstore","nativeSrc":"15183:6:18","nodeType":"YulIdentifier","src":"15183:6:18"},"nativeSrc":"15183:66:18","nodeType":"YulFunctionCall","src":"15183:66:18"},"nativeSrc":"15183:66:18","nodeType":"YulExpressionStatement","src":"15183:66:18"},{"nativeSrc":"15258:42:18","nodeType":"YulVariableDeclaration","src":"15258:42:18","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15288:6:18","nodeType":"YulIdentifier","src":"15288:6:18"},{"kind":"number","nativeSrc":"15296:2:18","nodeType":"YulLiteral","src":"15296:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15284:3:18","nodeType":"YulIdentifier","src":"15284:3:18"},"nativeSrc":"15284:15:18","nodeType":"YulFunctionCall","src":"15284:15:18"}],"functionName":{"name":"mload","nativeSrc":"15278:5:18","nodeType":"YulIdentifier","src":"15278:5:18"},"nativeSrc":"15278:22:18","nodeType":"YulFunctionCall","src":"15278:22:18"},"variables":[{"name":"memberValue0","nativeSrc":"15262:12:18","nodeType":"YulTypedName","src":"15262:12:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15320:9:18","nodeType":"YulIdentifier","src":"15320:9:18"},{"kind":"number","nativeSrc":"15331:2:18","nodeType":"YulLiteral","src":"15331:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"15316:3:18","nodeType":"YulIdentifier","src":"15316:3:18"},"nativeSrc":"15316:18:18","nodeType":"YulFunctionCall","src":"15316:18:18"},{"kind":"number","nativeSrc":"15336:4:18","nodeType":"YulLiteral","src":"15336:4:18","type":"","value":"0xa0"}],"functionName":{"name":"mstore","nativeSrc":"15309:6:18","nodeType":"YulIdentifier","src":"15309:6:18"},"nativeSrc":"15309:32:18","nodeType":"YulFunctionCall","src":"15309:32:18"},"nativeSrc":"15309:32:18","nodeType":"YulExpressionStatement","src":"15309:32:18"},{"nativeSrc":"15350:17:18","nodeType":"YulVariableDeclaration","src":"15350:17:18","value":{"name":"tail_1","nativeSrc":"15361:6:18","nodeType":"YulIdentifier","src":"15361:6:18"},"variables":[{"name":"pos","nativeSrc":"15354:3:18","nodeType":"YulTypedName","src":"15354:3:18","type":""}]},{"nativeSrc":"15376:33:18","nodeType":"YulVariableDeclaration","src":"15376:33:18","value":{"arguments":[{"name":"memberValue0","nativeSrc":"15396:12:18","nodeType":"YulIdentifier","src":"15396:12:18"}],"functionName":{"name":"mload","nativeSrc":"15390:5:18","nodeType":"YulIdentifier","src":"15390:5:18"},"nativeSrc":"15390:19:18","nodeType":"YulFunctionCall","src":"15390:19:18"},"variables":[{"name":"length","nativeSrc":"15380:6:18","nodeType":"YulTypedName","src":"15380:6:18","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"15425:6:18","nodeType":"YulIdentifier","src":"15425:6:18"},{"name":"length","nativeSrc":"15433:6:18","nodeType":"YulIdentifier","src":"15433:6:18"}],"functionName":{"name":"mstore","nativeSrc":"15418:6:18","nodeType":"YulIdentifier","src":"15418:6:18"},"nativeSrc":"15418:22:18","nodeType":"YulFunctionCall","src":"15418:22:18"},"nativeSrc":"15418:22:18","nodeType":"YulExpressionStatement","src":"15418:22:18"},{"nativeSrc":"15449:26:18","nodeType":"YulAssignment","src":"15449:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"15460:9:18","nodeType":"YulIdentifier","src":"15460:9:18"},{"kind":"number","nativeSrc":"15471:3:18","nodeType":"YulLiteral","src":"15471:3:18","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"15456:3:18","nodeType":"YulIdentifier","src":"15456:3:18"},"nativeSrc":"15456:19:18","nodeType":"YulFunctionCall","src":"15456:19:18"},"variableNames":[{"name":"pos","nativeSrc":"15449:3:18","nodeType":"YulIdentifier","src":"15449:3:18"}]},{"nativeSrc":"15484:35:18","nodeType":"YulVariableDeclaration","src":"15484:35:18","value":{"arguments":[{"name":"memberValue0","nativeSrc":"15502:12:18","nodeType":"YulIdentifier","src":"15502:12:18"},{"kind":"number","nativeSrc":"15516:2:18","nodeType":"YulLiteral","src":"15516:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15498:3:18","nodeType":"YulIdentifier","src":"15498:3:18"},"nativeSrc":"15498:21:18","nodeType":"YulFunctionCall","src":"15498:21:18"},"variables":[{"name":"srcPtr","nativeSrc":"15488:6:18","nodeType":"YulTypedName","src":"15488:6:18","type":""}]},{"nativeSrc":"15528:10:18","nodeType":"YulVariableDeclaration","src":"15528:10:18","value":{"kind":"number","nativeSrc":"15537:1:18","nodeType":"YulLiteral","src":"15537:1:18","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15532:1:18","nodeType":"YulTypedName","src":"15532:1:18","type":""}]},{"body":{"nativeSrc":"15596:146:18","nodeType":"YulBlock","src":"15596:146:18","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15617:3:18","nodeType":"YulIdentifier","src":"15617:3:18"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"15632:6:18","nodeType":"YulIdentifier","src":"15632:6:18"}],"functionName":{"name":"mload","nativeSrc":"15626:5:18","nodeType":"YulIdentifier","src":"15626:5:18"},"nativeSrc":"15626:13:18","nodeType":"YulFunctionCall","src":"15626:13:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15649:3:18","nodeType":"YulLiteral","src":"15649:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"15654:1:18","nodeType":"YulLiteral","src":"15654:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15645:3:18","nodeType":"YulIdentifier","src":"15645:3:18"},"nativeSrc":"15645:11:18","nodeType":"YulFunctionCall","src":"15645:11:18"},{"kind":"number","nativeSrc":"15658:1:18","nodeType":"YulLiteral","src":"15658:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15641:3:18","nodeType":"YulIdentifier","src":"15641:3:18"},"nativeSrc":"15641:19:18","nodeType":"YulFunctionCall","src":"15641:19:18"}],"functionName":{"name":"and","nativeSrc":"15622:3:18","nodeType":"YulIdentifier","src":"15622:3:18"},"nativeSrc":"15622:39:18","nodeType":"YulFunctionCall","src":"15622:39:18"}],"functionName":{"name":"mstore","nativeSrc":"15610:6:18","nodeType":"YulIdentifier","src":"15610:6:18"},"nativeSrc":"15610:52:18","nodeType":"YulFunctionCall","src":"15610:52:18"},"nativeSrc":"15610:52:18","nodeType":"YulExpressionStatement","src":"15610:52:18"},{"nativeSrc":"15675:19:18","nodeType":"YulAssignment","src":"15675:19:18","value":{"arguments":[{"name":"pos","nativeSrc":"15686:3:18","nodeType":"YulIdentifier","src":"15686:3:18"},{"kind":"number","nativeSrc":"15691:2:18","nodeType":"YulLiteral","src":"15691:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15682:3:18","nodeType":"YulIdentifier","src":"15682:3:18"},"nativeSrc":"15682:12:18","nodeType":"YulFunctionCall","src":"15682:12:18"},"variableNames":[{"name":"pos","nativeSrc":"15675:3:18","nodeType":"YulIdentifier","src":"15675:3:18"}]},{"nativeSrc":"15707:25:18","nodeType":"YulAssignment","src":"15707:25:18","value":{"arguments":[{"name":"srcPtr","nativeSrc":"15721:6:18","nodeType":"YulIdentifier","src":"15721:6:18"},{"kind":"number","nativeSrc":"15729:2:18","nodeType":"YulLiteral","src":"15729:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15717:3:18","nodeType":"YulIdentifier","src":"15717:3:18"},"nativeSrc":"15717:15:18","nodeType":"YulFunctionCall","src":"15717:15:18"},"variableNames":[{"name":"srcPtr","nativeSrc":"15707:6:18","nodeType":"YulIdentifier","src":"15707:6:18"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15558:1:18","nodeType":"YulIdentifier","src":"15558:1:18"},{"name":"length","nativeSrc":"15561:6:18","nodeType":"YulIdentifier","src":"15561:6:18"}],"functionName":{"name":"lt","nativeSrc":"15555:2:18","nodeType":"YulIdentifier","src":"15555:2:18"},"nativeSrc":"15555:13:18","nodeType":"YulFunctionCall","src":"15555:13:18"},"nativeSrc":"15547:195:18","nodeType":"YulForLoop","post":{"nativeSrc":"15569:18:18","nodeType":"YulBlock","src":"15569:18:18","statements":[{"nativeSrc":"15571:14:18","nodeType":"YulAssignment","src":"15571:14:18","value":{"arguments":[{"name":"i","nativeSrc":"15580:1:18","nodeType":"YulIdentifier","src":"15580:1:18"},{"kind":"number","nativeSrc":"15583:1:18","nodeType":"YulLiteral","src":"15583:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15576:3:18","nodeType":"YulIdentifier","src":"15576:3:18"},"nativeSrc":"15576:9:18","nodeType":"YulFunctionCall","src":"15576:9:18"},"variableNames":[{"name":"i","nativeSrc":"15571:1:18","nodeType":"YulIdentifier","src":"15571:1:18"}]}]},"pre":{"nativeSrc":"15551:3:18","nodeType":"YulBlock","src":"15551:3:18","statements":[]},"src":"15547:195:18"},{"nativeSrc":"15751:44:18","nodeType":"YulVariableDeclaration","src":"15751:44:18","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15783:6:18","nodeType":"YulIdentifier","src":"15783:6:18"},{"kind":"number","nativeSrc":"15791:2:18","nodeType":"YulLiteral","src":"15791:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"15779:3:18","nodeType":"YulIdentifier","src":"15779:3:18"},"nativeSrc":"15779:15:18","nodeType":"YulFunctionCall","src":"15779:15:18"}],"functionName":{"name":"mload","nativeSrc":"15773:5:18","nodeType":"YulIdentifier","src":"15773:5:18"},"nativeSrc":"15773:22:18","nodeType":"YulFunctionCall","src":"15773:22:18"},"variables":[{"name":"memberValue0_1","nativeSrc":"15755:14:18","nodeType":"YulTypedName","src":"15755:14:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15815:9:18","nodeType":"YulIdentifier","src":"15815:9:18"},{"kind":"number","nativeSrc":"15826:3:18","nodeType":"YulLiteral","src":"15826:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15811:3:18","nodeType":"YulIdentifier","src":"15811:3:18"},"nativeSrc":"15811:19:18","nodeType":"YulFunctionCall","src":"15811:19:18"},{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15840:3:18","nodeType":"YulIdentifier","src":"15840:3:18"},{"name":"headStart","nativeSrc":"15845:9:18","nodeType":"YulIdentifier","src":"15845:9:18"}],"functionName":{"name":"sub","nativeSrc":"15836:3:18","nodeType":"YulIdentifier","src":"15836:3:18"},"nativeSrc":"15836:19:18","nodeType":"YulFunctionCall","src":"15836:19:18"},{"arguments":[{"kind":"number","nativeSrc":"15861:2:18","nodeType":"YulLiteral","src":"15861:2:18","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"15857:3:18","nodeType":"YulIdentifier","src":"15857:3:18"},"nativeSrc":"15857:7:18","nodeType":"YulFunctionCall","src":"15857:7:18"}],"functionName":{"name":"add","nativeSrc":"15832:3:18","nodeType":"YulIdentifier","src":"15832:3:18"},"nativeSrc":"15832:33:18","nodeType":"YulFunctionCall","src":"15832:33:18"}],"functionName":{"name":"mstore","nativeSrc":"15804:6:18","nodeType":"YulIdentifier","src":"15804:6:18"},"nativeSrc":"15804:62:18","nodeType":"YulFunctionCall","src":"15804:62:18"},"nativeSrc":"15804:62:18","nodeType":"YulExpressionStatement","src":"15804:62:18"},{"nativeSrc":"15875:63:18","nodeType":"YulVariableDeclaration","src":"15875:63:18","value":{"arguments":[{"name":"memberValue0_1","nativeSrc":"15918:14:18","nodeType":"YulIdentifier","src":"15918:14:18"},{"name":"pos","nativeSrc":"15934:3:18","nodeType":"YulIdentifier","src":"15934:3:18"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nativeSrc":"15889:28:18","nodeType":"YulIdentifier","src":"15889:28:18"},"nativeSrc":"15889:49:18","nodeType":"YulFunctionCall","src":"15889:49:18"},"variables":[{"name":"tail_2","nativeSrc":"15879:6:18","nodeType":"YulTypedName","src":"15879:6:18","type":""}]},{"nativeSrc":"15947:45:18","nodeType":"YulVariableDeclaration","src":"15947:45:18","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15979:6:18","nodeType":"YulIdentifier","src":"15979:6:18"},{"kind":"number","nativeSrc":"15987:3:18","nodeType":"YulLiteral","src":"15987:3:18","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15975:3:18","nodeType":"YulIdentifier","src":"15975:3:18"},"nativeSrc":"15975:16:18","nodeType":"YulFunctionCall","src":"15975:16:18"}],"functionName":{"name":"mload","nativeSrc":"15969:5:18","nodeType":"YulIdentifier","src":"15969:5:18"},"nativeSrc":"15969:23:18","nodeType":"YulFunctionCall","src":"15969:23:18"},"variables":[{"name":"memberValue0_2","nativeSrc":"15951:14:18","nodeType":"YulTypedName","src":"15951:14:18","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nativeSrc":"16017:14:18","nodeType":"YulIdentifier","src":"16017:14:18"},{"arguments":[{"name":"headStart","nativeSrc":"16037:9:18","nodeType":"YulIdentifier","src":"16037:9:18"},{"kind":"number","nativeSrc":"16048:4:18","nodeType":"YulLiteral","src":"16048:4:18","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"16033:3:18","nodeType":"YulIdentifier","src":"16033:3:18"},"nativeSrc":"16033:20:18","nodeType":"YulFunctionCall","src":"16033:20:18"}],"functionName":{"name":"abi_encode_bool","nativeSrc":"16001:15:18","nodeType":"YulIdentifier","src":"16001:15:18"},"nativeSrc":"16001:53:18","nodeType":"YulFunctionCall","src":"16001:53:18"},"nativeSrc":"16001:53:18","nodeType":"YulExpressionStatement","src":"16001:53:18"},{"nativeSrc":"16063:14:18","nodeType":"YulAssignment","src":"16063:14:18","value":{"name":"tail_2","nativeSrc":"16071:6:18","nodeType":"YulIdentifier","src":"16071:6:18"},"variableNames":[{"name":"tail","nativeSrc":"16063:4:18","nodeType":"YulIdentifier","src":"16063:4:18"}]}]},"name":"abi_encode_tuple_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__to_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__fromStack_reversed","nativeSrc":"14876:1207:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15020:9:18","nodeType":"YulTypedName","src":"15020:9:18","type":""},{"name":"value0","nativeSrc":"15031:6:18","nodeType":"YulTypedName","src":"15031:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15042:4:18","nodeType":"YulTypedName","src":"15042:4:18","type":""}],"src":"14876:1207:18"},{"body":{"nativeSrc":"16166:177:18","nodeType":"YulBlock","src":"16166:177:18","statements":[{"body":{"nativeSrc":"16212:16:18","nodeType":"YulBlock","src":"16212:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16221:1:18","nodeType":"YulLiteral","src":"16221:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"16224:1:18","nodeType":"YulLiteral","src":"16224:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16214:6:18","nodeType":"YulIdentifier","src":"16214:6:18"},"nativeSrc":"16214:12:18","nodeType":"YulFunctionCall","src":"16214:12:18"},"nativeSrc":"16214:12:18","nodeType":"YulExpressionStatement","src":"16214:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16187:7:18","nodeType":"YulIdentifier","src":"16187:7:18"},{"name":"headStart","nativeSrc":"16196:9:18","nodeType":"YulIdentifier","src":"16196:9:18"}],"functionName":{"name":"sub","nativeSrc":"16183:3:18","nodeType":"YulIdentifier","src":"16183:3:18"},"nativeSrc":"16183:23:18","nodeType":"YulFunctionCall","src":"16183:23:18"},{"kind":"number","nativeSrc":"16208:2:18","nodeType":"YulLiteral","src":"16208:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16179:3:18","nodeType":"YulIdentifier","src":"16179:3:18"},"nativeSrc":"16179:32:18","nodeType":"YulFunctionCall","src":"16179:32:18"},"nativeSrc":"16176:52:18","nodeType":"YulIf","src":"16176:52:18"},{"nativeSrc":"16237:36:18","nodeType":"YulVariableDeclaration","src":"16237:36:18","value":{"arguments":[{"name":"headStart","nativeSrc":"16263:9:18","nodeType":"YulIdentifier","src":"16263:9:18"}],"functionName":{"name":"calldataload","nativeSrc":"16250:12:18","nodeType":"YulIdentifier","src":"16250:12:18"},"nativeSrc":"16250:23:18","nodeType":"YulFunctionCall","src":"16250:23:18"},"variables":[{"name":"value","nativeSrc":"16241:5:18","nodeType":"YulTypedName","src":"16241:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16307:5:18","nodeType":"YulIdentifier","src":"16307:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16282:24:18","nodeType":"YulIdentifier","src":"16282:24:18"},"nativeSrc":"16282:31:18","nodeType":"YulFunctionCall","src":"16282:31:18"},"nativeSrc":"16282:31:18","nodeType":"YulExpressionStatement","src":"16282:31:18"},{"nativeSrc":"16322:15:18","nodeType":"YulAssignment","src":"16322:15:18","value":{"name":"value","nativeSrc":"16332:5:18","nodeType":"YulIdentifier","src":"16332:5:18"},"variableNames":[{"name":"value0","nativeSrc":"16322:6:18","nodeType":"YulIdentifier","src":"16322:6:18"}]}]},"name":"abi_decode_tuple_t_address_payable","nativeSrc":"16088:255:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16132:9:18","nodeType":"YulTypedName","src":"16132:9:18","type":""},{"name":"dataEnd","nativeSrc":"16143:7:18","nodeType":"YulTypedName","src":"16143:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16155:6:18","nodeType":"YulTypedName","src":"16155:6:18","type":""}],"src":"16088:255:18"},{"body":{"nativeSrc":"16457:76:18","nodeType":"YulBlock","src":"16457:76:18","statements":[{"nativeSrc":"16467:26:18","nodeType":"YulAssignment","src":"16467:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"16479:9:18","nodeType":"YulIdentifier","src":"16479:9:18"},{"kind":"number","nativeSrc":"16490:2:18","nodeType":"YulLiteral","src":"16490:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16475:3:18","nodeType":"YulIdentifier","src":"16475:3:18"},"nativeSrc":"16475:18:18","nodeType":"YulFunctionCall","src":"16475:18:18"},"variableNames":[{"name":"tail","nativeSrc":"16467:4:18","nodeType":"YulIdentifier","src":"16467:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16509:9:18","nodeType":"YulIdentifier","src":"16509:9:18"},{"name":"value0","nativeSrc":"16520:6:18","nodeType":"YulIdentifier","src":"16520:6:18"}],"functionName":{"name":"mstore","nativeSrc":"16502:6:18","nodeType":"YulIdentifier","src":"16502:6:18"},"nativeSrc":"16502:25:18","nodeType":"YulFunctionCall","src":"16502:25:18"},"nativeSrc":"16502:25:18","nodeType":"YulExpressionStatement","src":"16502:25:18"}]},"name":"abi_encode_tuple_t_rational_0_by_1__to_t_uint256__fromStack_reversed","nativeSrc":"16348:185:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16426:9:18","nodeType":"YulTypedName","src":"16426:9:18","type":""},{"name":"value0","nativeSrc":"16437:6:18","nodeType":"YulTypedName","src":"16437:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16448:4:18","nodeType":"YulTypedName","src":"16448:4:18","type":""}],"src":"16348:185:18"},{"body":{"nativeSrc":"16570:95:18","nodeType":"YulBlock","src":"16570:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16587:1:18","nodeType":"YulLiteral","src":"16587:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16594:3:18","nodeType":"YulLiteral","src":"16594:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"16599:10:18","nodeType":"YulLiteral","src":"16599:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16590:3:18","nodeType":"YulIdentifier","src":"16590:3:18"},"nativeSrc":"16590:20:18","nodeType":"YulFunctionCall","src":"16590:20:18"}],"functionName":{"name":"mstore","nativeSrc":"16580:6:18","nodeType":"YulIdentifier","src":"16580:6:18"},"nativeSrc":"16580:31:18","nodeType":"YulFunctionCall","src":"16580:31:18"},"nativeSrc":"16580:31:18","nodeType":"YulExpressionStatement","src":"16580:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16627:1:18","nodeType":"YulLiteral","src":"16627:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"16630:4:18","nodeType":"YulLiteral","src":"16630:4:18","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"16620:6:18","nodeType":"YulIdentifier","src":"16620:6:18"},"nativeSrc":"16620:15:18","nodeType":"YulFunctionCall","src":"16620:15:18"},"nativeSrc":"16620:15:18","nodeType":"YulExpressionStatement","src":"16620:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16651:1:18","nodeType":"YulLiteral","src":"16651:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"16654:4:18","nodeType":"YulLiteral","src":"16654:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16644:6:18","nodeType":"YulIdentifier","src":"16644:6:18"},"nativeSrc":"16644:15:18","nodeType":"YulFunctionCall","src":"16644:15:18"},"nativeSrc":"16644:15:18","nodeType":"YulExpressionStatement","src":"16644:15:18"}]},"name":"panic_error_0x11","nativeSrc":"16538:127:18","nodeType":"YulFunctionDefinition","src":"16538:127:18"},{"body":{"nativeSrc":"16717:89:18","nodeType":"YulBlock","src":"16717:89:18","statements":[{"body":{"nativeSrc":"16744:22:18","nodeType":"YulBlock","src":"16744:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16746:16:18","nodeType":"YulIdentifier","src":"16746:16:18"},"nativeSrc":"16746:18:18","nodeType":"YulFunctionCall","src":"16746:18:18"},"nativeSrc":"16746:18:18","nodeType":"YulExpressionStatement","src":"16746:18:18"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"16737:5:18","nodeType":"YulIdentifier","src":"16737:5:18"}],"functionName":{"name":"iszero","nativeSrc":"16730:6:18","nodeType":"YulIdentifier","src":"16730:6:18"},"nativeSrc":"16730:13:18","nodeType":"YulFunctionCall","src":"16730:13:18"},"nativeSrc":"16727:39:18","nodeType":"YulIf","src":"16727:39:18"},{"nativeSrc":"16775:25:18","nodeType":"YulAssignment","src":"16775:25:18","value":{"arguments":[{"name":"value","nativeSrc":"16786:5:18","nodeType":"YulIdentifier","src":"16786:5:18"},{"arguments":[{"kind":"number","nativeSrc":"16797:1:18","nodeType":"YulLiteral","src":"16797:1:18","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"16793:3:18","nodeType":"YulIdentifier","src":"16793:3:18"},"nativeSrc":"16793:6:18","nodeType":"YulFunctionCall","src":"16793:6:18"}],"functionName":{"name":"add","nativeSrc":"16782:3:18","nodeType":"YulIdentifier","src":"16782:3:18"},"nativeSrc":"16782:18:18","nodeType":"YulFunctionCall","src":"16782:18:18"},"variableNames":[{"name":"ret","nativeSrc":"16775:3:18","nodeType":"YulIdentifier","src":"16775:3:18"}]}]},"name":"decrement_t_uint256","nativeSrc":"16670:136:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"16699:5:18","nodeType":"YulTypedName","src":"16699:5:18","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"16709:3:18","nodeType":"YulTypedName","src":"16709:3:18","type":""}],"src":"16670:136:18"},{"body":{"nativeSrc":"16843:95:18","nodeType":"YulBlock","src":"16843:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16860:1:18","nodeType":"YulLiteral","src":"16860:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16867:3:18","nodeType":"YulLiteral","src":"16867:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"16872:10:18","nodeType":"YulLiteral","src":"16872:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16863:3:18","nodeType":"YulIdentifier","src":"16863:3:18"},"nativeSrc":"16863:20:18","nodeType":"YulFunctionCall","src":"16863:20:18"}],"functionName":{"name":"mstore","nativeSrc":"16853:6:18","nodeType":"YulIdentifier","src":"16853:6:18"},"nativeSrc":"16853:31:18","nodeType":"YulFunctionCall","src":"16853:31:18"},"nativeSrc":"16853:31:18","nodeType":"YulExpressionStatement","src":"16853:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16900:1:18","nodeType":"YulLiteral","src":"16900:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"16903:4:18","nodeType":"YulLiteral","src":"16903:4:18","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"16893:6:18","nodeType":"YulIdentifier","src":"16893:6:18"},"nativeSrc":"16893:15:18","nodeType":"YulFunctionCall","src":"16893:15:18"},"nativeSrc":"16893:15:18","nodeType":"YulExpressionStatement","src":"16893:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16924:1:18","nodeType":"YulLiteral","src":"16924:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"16927:4:18","nodeType":"YulLiteral","src":"16927:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16917:6:18","nodeType":"YulIdentifier","src":"16917:6:18"},"nativeSrc":"16917:15:18","nodeType":"YulFunctionCall","src":"16917:15:18"},"nativeSrc":"16917:15:18","nodeType":"YulExpressionStatement","src":"16917:15:18"}]},"name":"panic_error_0x32","nativeSrc":"16811:127:18","nodeType":"YulFunctionDefinition","src":"16811:127:18"},{"body":{"nativeSrc":"17051:101:18","nodeType":"YulBlock","src":"17051:101:18","statements":[{"nativeSrc":"17061:26:18","nodeType":"YulAssignment","src":"17061:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"17073:9:18","nodeType":"YulIdentifier","src":"17073:9:18"},{"kind":"number","nativeSrc":"17084:2:18","nodeType":"YulLiteral","src":"17084:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17069:3:18","nodeType":"YulIdentifier","src":"17069:3:18"},"nativeSrc":"17069:18:18","nodeType":"YulFunctionCall","src":"17069:18:18"},"variableNames":[{"name":"tail","nativeSrc":"17061:4:18","nodeType":"YulIdentifier","src":"17061:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17103:9:18","nodeType":"YulIdentifier","src":"17103:9:18"},{"arguments":[{"name":"value0","nativeSrc":"17118:6:18","nodeType":"YulIdentifier","src":"17118:6:18"},{"kind":"number","nativeSrc":"17126:18:18","nodeType":"YulLiteral","src":"17126:18:18","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"17114:3:18","nodeType":"YulIdentifier","src":"17114:3:18"},"nativeSrc":"17114:31:18","nodeType":"YulFunctionCall","src":"17114:31:18"}],"functionName":{"name":"mstore","nativeSrc":"17096:6:18","nodeType":"YulIdentifier","src":"17096:6:18"},"nativeSrc":"17096:50:18","nodeType":"YulFunctionCall","src":"17096:50:18"},"nativeSrc":"17096:50:18","nodeType":"YulExpressionStatement","src":"17096:50:18"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"16943:209:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17020:9:18","nodeType":"YulTypedName","src":"17020:9:18","type":""},{"name":"value0","nativeSrc":"17031:6:18","nodeType":"YulTypedName","src":"17031:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17042:4:18","nodeType":"YulTypedName","src":"17042:4:18","type":""}],"src":"16943:209:18"},{"body":{"nativeSrc":"17206:79:18","nodeType":"YulBlock","src":"17206:79:18","statements":[{"nativeSrc":"17216:17:18","nodeType":"YulAssignment","src":"17216:17:18","value":{"arguments":[{"name":"x","nativeSrc":"17228:1:18","nodeType":"YulIdentifier","src":"17228:1:18"},{"name":"y","nativeSrc":"17231:1:18","nodeType":"YulIdentifier","src":"17231:1:18"}],"functionName":{"name":"sub","nativeSrc":"17224:3:18","nodeType":"YulIdentifier","src":"17224:3:18"},"nativeSrc":"17224:9:18","nodeType":"YulFunctionCall","src":"17224:9:18"},"variableNames":[{"name":"diff","nativeSrc":"17216:4:18","nodeType":"YulIdentifier","src":"17216:4:18"}]},{"body":{"nativeSrc":"17257:22:18","nodeType":"YulBlock","src":"17257:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17259:16:18","nodeType":"YulIdentifier","src":"17259:16:18"},"nativeSrc":"17259:18:18","nodeType":"YulFunctionCall","src":"17259:18:18"},"nativeSrc":"17259:18:18","nodeType":"YulExpressionStatement","src":"17259:18:18"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"17248:4:18","nodeType":"YulIdentifier","src":"17248:4:18"},{"name":"x","nativeSrc":"17254:1:18","nodeType":"YulIdentifier","src":"17254:1:18"}],"functionName":{"name":"gt","nativeSrc":"17245:2:18","nodeType":"YulIdentifier","src":"17245:2:18"},"nativeSrc":"17245:11:18","nodeType":"YulFunctionCall","src":"17245:11:18"},"nativeSrc":"17242:37:18","nodeType":"YulIf","src":"17242:37:18"}]},"name":"checked_sub_t_uint256","nativeSrc":"17157:128:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17188:1:18","nodeType":"YulTypedName","src":"17188:1:18","type":""},{"name":"y","nativeSrc":"17191:1:18","nodeType":"YulTypedName","src":"17191:1:18","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"17197:4:18","nodeType":"YulTypedName","src":"17197:4:18","type":""}],"src":"17157:128:18"},{"body":{"nativeSrc":"17322:95:18","nodeType":"YulBlock","src":"17322:95:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17339:1:18","nodeType":"YulLiteral","src":"17339:1:18","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"17346:3:18","nodeType":"YulLiteral","src":"17346:3:18","type":"","value":"224"},{"kind":"number","nativeSrc":"17351:10:18","nodeType":"YulLiteral","src":"17351:10:18","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"17342:3:18","nodeType":"YulIdentifier","src":"17342:3:18"},"nativeSrc":"17342:20:18","nodeType":"YulFunctionCall","src":"17342:20:18"}],"functionName":{"name":"mstore","nativeSrc":"17332:6:18","nodeType":"YulIdentifier","src":"17332:6:18"},"nativeSrc":"17332:31:18","nodeType":"YulFunctionCall","src":"17332:31:18"},"nativeSrc":"17332:31:18","nodeType":"YulExpressionStatement","src":"17332:31:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17379:1:18","nodeType":"YulLiteral","src":"17379:1:18","type":"","value":"4"},{"kind":"number","nativeSrc":"17382:4:18","nodeType":"YulLiteral","src":"17382:4:18","type":"","value":"0x31"}],"functionName":{"name":"mstore","nativeSrc":"17372:6:18","nodeType":"YulIdentifier","src":"17372:6:18"},"nativeSrc":"17372:15:18","nodeType":"YulFunctionCall","src":"17372:15:18"},"nativeSrc":"17372:15:18","nodeType":"YulExpressionStatement","src":"17372:15:18"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17403:1:18","nodeType":"YulLiteral","src":"17403:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"17406:4:18","nodeType":"YulLiteral","src":"17406:4:18","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17396:6:18","nodeType":"YulIdentifier","src":"17396:6:18"},"nativeSrc":"17396:15:18","nodeType":"YulFunctionCall","src":"17396:15:18"},"nativeSrc":"17396:15:18","nodeType":"YulExpressionStatement","src":"17396:15:18"}]},"name":"panic_error_0x31","nativeSrc":"17290:127:18","nodeType":"YulFunctionDefinition","src":"17290:127:18"},{"body":{"nativeSrc":"17503:170:18","nodeType":"YulBlock","src":"17503:170:18","statements":[{"body":{"nativeSrc":"17549:16:18","nodeType":"YulBlock","src":"17549:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17558:1:18","nodeType":"YulLiteral","src":"17558:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"17561:1:18","nodeType":"YulLiteral","src":"17561:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17551:6:18","nodeType":"YulIdentifier","src":"17551:6:18"},"nativeSrc":"17551:12:18","nodeType":"YulFunctionCall","src":"17551:12:18"},"nativeSrc":"17551:12:18","nodeType":"YulExpressionStatement","src":"17551:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"17524:7:18","nodeType":"YulIdentifier","src":"17524:7:18"},{"name":"headStart","nativeSrc":"17533:9:18","nodeType":"YulIdentifier","src":"17533:9:18"}],"functionName":{"name":"sub","nativeSrc":"17520:3:18","nodeType":"YulIdentifier","src":"17520:3:18"},"nativeSrc":"17520:23:18","nodeType":"YulFunctionCall","src":"17520:23:18"},{"kind":"number","nativeSrc":"17545:2:18","nodeType":"YulLiteral","src":"17545:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"17516:3:18","nodeType":"YulIdentifier","src":"17516:3:18"},"nativeSrc":"17516:32:18","nodeType":"YulFunctionCall","src":"17516:32:18"},"nativeSrc":"17513:52:18","nodeType":"YulIf","src":"17513:52:18"},{"nativeSrc":"17574:29:18","nodeType":"YulVariableDeclaration","src":"17574:29:18","value":{"arguments":[{"name":"headStart","nativeSrc":"17593:9:18","nodeType":"YulIdentifier","src":"17593:9:18"}],"functionName":{"name":"mload","nativeSrc":"17587:5:18","nodeType":"YulIdentifier","src":"17587:5:18"},"nativeSrc":"17587:16:18","nodeType":"YulFunctionCall","src":"17587:16:18"},"variables":[{"name":"value","nativeSrc":"17578:5:18","nodeType":"YulTypedName","src":"17578:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"17637:5:18","nodeType":"YulIdentifier","src":"17637:5:18"}],"functionName":{"name":"validator_revert_address","nativeSrc":"17612:24:18","nodeType":"YulIdentifier","src":"17612:24:18"},"nativeSrc":"17612:31:18","nodeType":"YulFunctionCall","src":"17612:31:18"},"nativeSrc":"17612:31:18","nodeType":"YulExpressionStatement","src":"17612:31:18"},{"nativeSrc":"17652:15:18","nodeType":"YulAssignment","src":"17652:15:18","value":{"name":"value","nativeSrc":"17662:5:18","nodeType":"YulIdentifier","src":"17662:5:18"},"variableNames":[{"name":"value0","nativeSrc":"17652:6:18","nodeType":"YulIdentifier","src":"17652:6:18"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"17422:251:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17469:9:18","nodeType":"YulTypedName","src":"17469:9:18","type":""},{"name":"dataEnd","nativeSrc":"17480:7:18","nodeType":"YulTypedName","src":"17480:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"17492:6:18","nodeType":"YulTypedName","src":"17492:6:18","type":""}],"src":"17422:251:18"},{"body":{"nativeSrc":"17835:214:18","nodeType":"YulBlock","src":"17835:214:18","statements":[{"nativeSrc":"17845:26:18","nodeType":"YulAssignment","src":"17845:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"17857:9:18","nodeType":"YulIdentifier","src":"17857:9:18"},{"kind":"number","nativeSrc":"17868:2:18","nodeType":"YulLiteral","src":"17868:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"17853:3:18","nodeType":"YulIdentifier","src":"17853:3:18"},"nativeSrc":"17853:18:18","nodeType":"YulFunctionCall","src":"17853:18:18"},"variableNames":[{"name":"tail","nativeSrc":"17845:4:18","nodeType":"YulIdentifier","src":"17845:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17887:9:18","nodeType":"YulIdentifier","src":"17887:9:18"},{"arguments":[{"name":"value0","nativeSrc":"17902:6:18","nodeType":"YulIdentifier","src":"17902:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17918:3:18","nodeType":"YulLiteral","src":"17918:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"17923:1:18","nodeType":"YulLiteral","src":"17923:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17914:3:18","nodeType":"YulIdentifier","src":"17914:3:18"},"nativeSrc":"17914:11:18","nodeType":"YulFunctionCall","src":"17914:11:18"},{"kind":"number","nativeSrc":"17927:1:18","nodeType":"YulLiteral","src":"17927:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17910:3:18","nodeType":"YulIdentifier","src":"17910:3:18"},"nativeSrc":"17910:19:18","nodeType":"YulFunctionCall","src":"17910:19:18"}],"functionName":{"name":"and","nativeSrc":"17898:3:18","nodeType":"YulIdentifier","src":"17898:3:18"},"nativeSrc":"17898:32:18","nodeType":"YulFunctionCall","src":"17898:32:18"}],"functionName":{"name":"mstore","nativeSrc":"17880:6:18","nodeType":"YulIdentifier","src":"17880:6:18"},"nativeSrc":"17880:51:18","nodeType":"YulFunctionCall","src":"17880:51:18"},"nativeSrc":"17880:51:18","nodeType":"YulExpressionStatement","src":"17880:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17951:9:18","nodeType":"YulIdentifier","src":"17951:9:18"},{"kind":"number","nativeSrc":"17962:2:18","nodeType":"YulLiteral","src":"17962:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17947:3:18","nodeType":"YulIdentifier","src":"17947:3:18"},"nativeSrc":"17947:18:18","nodeType":"YulFunctionCall","src":"17947:18:18"},{"arguments":[{"name":"value1","nativeSrc":"17971:6:18","nodeType":"YulIdentifier","src":"17971:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17987:3:18","nodeType":"YulLiteral","src":"17987:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"17992:1:18","nodeType":"YulLiteral","src":"17992:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17983:3:18","nodeType":"YulIdentifier","src":"17983:3:18"},"nativeSrc":"17983:11:18","nodeType":"YulFunctionCall","src":"17983:11:18"},{"kind":"number","nativeSrc":"17996:1:18","nodeType":"YulLiteral","src":"17996:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17979:3:18","nodeType":"YulIdentifier","src":"17979:3:18"},"nativeSrc":"17979:19:18","nodeType":"YulFunctionCall","src":"17979:19:18"}],"functionName":{"name":"and","nativeSrc":"17967:3:18","nodeType":"YulIdentifier","src":"17967:3:18"},"nativeSrc":"17967:32:18","nodeType":"YulFunctionCall","src":"17967:32:18"}],"functionName":{"name":"mstore","nativeSrc":"17940:6:18","nodeType":"YulIdentifier","src":"17940:6:18"},"nativeSrc":"17940:60:18","nodeType":"YulFunctionCall","src":"17940:60:18"},"nativeSrc":"17940:60:18","nodeType":"YulExpressionStatement","src":"17940:60:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18020:9:18","nodeType":"YulIdentifier","src":"18020:9:18"},{"kind":"number","nativeSrc":"18031:2:18","nodeType":"YulLiteral","src":"18031:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18016:3:18","nodeType":"YulIdentifier","src":"18016:3:18"},"nativeSrc":"18016:18:18","nodeType":"YulFunctionCall","src":"18016:18:18"},{"name":"value2","nativeSrc":"18036:6:18","nodeType":"YulIdentifier","src":"18036:6:18"}],"functionName":{"name":"mstore","nativeSrc":"18009:6:18","nodeType":"YulIdentifier","src":"18009:6:18"},"nativeSrc":"18009:34:18","nodeType":"YulFunctionCall","src":"18009:34:18"},"nativeSrc":"18009:34:18","nodeType":"YulExpressionStatement","src":"18009:34:18"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"17678:371:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17788:9:18","nodeType":"YulTypedName","src":"17788:9:18","type":""},{"name":"value2","nativeSrc":"17799:6:18","nodeType":"YulTypedName","src":"17799:6:18","type":""},{"name":"value1","nativeSrc":"17807:6:18","nodeType":"YulTypedName","src":"17807:6:18","type":""},{"name":"value0","nativeSrc":"17815:6:18","nodeType":"YulTypedName","src":"17815:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17826:4:18","nodeType":"YulTypedName","src":"17826:4:18","type":""}],"src":"17678:371:18"},{"body":{"nativeSrc":"18183:145:18","nodeType":"YulBlock","src":"18183:145:18","statements":[{"nativeSrc":"18193:26:18","nodeType":"YulAssignment","src":"18193:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"18205:9:18","nodeType":"YulIdentifier","src":"18205:9:18"},{"kind":"number","nativeSrc":"18216:2:18","nodeType":"YulLiteral","src":"18216:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18201:3:18","nodeType":"YulIdentifier","src":"18201:3:18"},"nativeSrc":"18201:18:18","nodeType":"YulFunctionCall","src":"18201:18:18"},"variableNames":[{"name":"tail","nativeSrc":"18193:4:18","nodeType":"YulIdentifier","src":"18193:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18235:9:18","nodeType":"YulIdentifier","src":"18235:9:18"},{"arguments":[{"name":"value0","nativeSrc":"18250:6:18","nodeType":"YulIdentifier","src":"18250:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18266:3:18","nodeType":"YulLiteral","src":"18266:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"18271:1:18","nodeType":"YulLiteral","src":"18271:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18262:3:18","nodeType":"YulIdentifier","src":"18262:3:18"},"nativeSrc":"18262:11:18","nodeType":"YulFunctionCall","src":"18262:11:18"},{"kind":"number","nativeSrc":"18275:1:18","nodeType":"YulLiteral","src":"18275:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18258:3:18","nodeType":"YulIdentifier","src":"18258:3:18"},"nativeSrc":"18258:19:18","nodeType":"YulFunctionCall","src":"18258:19:18"}],"functionName":{"name":"and","nativeSrc":"18246:3:18","nodeType":"YulIdentifier","src":"18246:3:18"},"nativeSrc":"18246:32:18","nodeType":"YulFunctionCall","src":"18246:32:18"}],"functionName":{"name":"mstore","nativeSrc":"18228:6:18","nodeType":"YulIdentifier","src":"18228:6:18"},"nativeSrc":"18228:51:18","nodeType":"YulFunctionCall","src":"18228:51:18"},"nativeSrc":"18228:51:18","nodeType":"YulExpressionStatement","src":"18228:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18299:9:18","nodeType":"YulIdentifier","src":"18299:9:18"},{"kind":"number","nativeSrc":"18310:2:18","nodeType":"YulLiteral","src":"18310:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18295:3:18","nodeType":"YulIdentifier","src":"18295:3:18"},"nativeSrc":"18295:18:18","nodeType":"YulFunctionCall","src":"18295:18:18"},{"name":"value1","nativeSrc":"18315:6:18","nodeType":"YulIdentifier","src":"18315:6:18"}],"functionName":{"name":"mstore","nativeSrc":"18288:6:18","nodeType":"YulIdentifier","src":"18288:6:18"},"nativeSrc":"18288:34:18","nodeType":"YulFunctionCall","src":"18288:34:18"},"nativeSrc":"18288:34:18","nodeType":"YulExpressionStatement","src":"18288:34:18"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"18054:274:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18144:9:18","nodeType":"YulTypedName","src":"18144:9:18","type":""},{"name":"value1","nativeSrc":"18155:6:18","nodeType":"YulTypedName","src":"18155:6:18","type":""},{"name":"value0","nativeSrc":"18163:6:18","nodeType":"YulTypedName","src":"18163:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18174:4:18","nodeType":"YulTypedName","src":"18174:4:18","type":""}],"src":"18054:274:18"},{"body":{"nativeSrc":"18381:77:18","nodeType":"YulBlock","src":"18381:77:18","statements":[{"nativeSrc":"18391:16:18","nodeType":"YulAssignment","src":"18391:16:18","value":{"arguments":[{"name":"x","nativeSrc":"18402:1:18","nodeType":"YulIdentifier","src":"18402:1:18"},{"name":"y","nativeSrc":"18405:1:18","nodeType":"YulIdentifier","src":"18405:1:18"}],"functionName":{"name":"add","nativeSrc":"18398:3:18","nodeType":"YulIdentifier","src":"18398:3:18"},"nativeSrc":"18398:9:18","nodeType":"YulFunctionCall","src":"18398:9:18"},"variableNames":[{"name":"sum","nativeSrc":"18391:3:18","nodeType":"YulIdentifier","src":"18391:3:18"}]},{"body":{"nativeSrc":"18430:22:18","nodeType":"YulBlock","src":"18430:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18432:16:18","nodeType":"YulIdentifier","src":"18432:16:18"},"nativeSrc":"18432:18:18","nodeType":"YulFunctionCall","src":"18432:18:18"},"nativeSrc":"18432:18:18","nodeType":"YulExpressionStatement","src":"18432:18:18"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"18422:1:18","nodeType":"YulIdentifier","src":"18422:1:18"},{"name":"sum","nativeSrc":"18425:3:18","nodeType":"YulIdentifier","src":"18425:3:18"}],"functionName":{"name":"gt","nativeSrc":"18419:2:18","nodeType":"YulIdentifier","src":"18419:2:18"},"nativeSrc":"18419:10:18","nodeType":"YulFunctionCall","src":"18419:10:18"},"nativeSrc":"18416:36:18","nodeType":"YulIf","src":"18416:36:18"}]},"name":"checked_add_t_uint256","nativeSrc":"18333:125:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"18364:1:18","nodeType":"YulTypedName","src":"18364:1:18","type":""},{"name":"y","nativeSrc":"18367:1:18","nodeType":"YulTypedName","src":"18367:1:18","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"18373:3:18","nodeType":"YulTypedName","src":"18373:3:18","type":""}],"src":"18333:125:18"},{"body":{"nativeSrc":"18654:14:18","nodeType":"YulBlock","src":"18654:14:18","statements":[{"nativeSrc":"18656:10:18","nodeType":"YulAssignment","src":"18656:10:18","value":{"name":"pos","nativeSrc":"18663:3:18","nodeType":"YulIdentifier","src":"18663:3:18"},"variableNames":[{"name":"end","nativeSrc":"18656:3:18","nodeType":"YulIdentifier","src":"18656:3:18"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"18463:205:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"18638:3:18","nodeType":"YulTypedName","src":"18638:3:18","type":""}],"returnVariables":[{"name":"end","nativeSrc":"18646:3:18","nodeType":"YulTypedName","src":"18646:3:18","type":""}],"src":"18463:205:18"},{"body":{"nativeSrc":"18838:214:18","nodeType":"YulBlock","src":"18838:214:18","statements":[{"nativeSrc":"18848:26:18","nodeType":"YulAssignment","src":"18848:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"18860:9:18","nodeType":"YulIdentifier","src":"18860:9:18"},{"kind":"number","nativeSrc":"18871:2:18","nodeType":"YulLiteral","src":"18871:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18856:3:18","nodeType":"YulIdentifier","src":"18856:3:18"},"nativeSrc":"18856:18:18","nodeType":"YulFunctionCall","src":"18856:18:18"},"variableNames":[{"name":"tail","nativeSrc":"18848:4:18","nodeType":"YulIdentifier","src":"18848:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18890:9:18","nodeType":"YulIdentifier","src":"18890:9:18"},{"arguments":[{"name":"value0","nativeSrc":"18905:6:18","nodeType":"YulIdentifier","src":"18905:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18921:3:18","nodeType":"YulLiteral","src":"18921:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"18926:1:18","nodeType":"YulLiteral","src":"18926:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18917:3:18","nodeType":"YulIdentifier","src":"18917:3:18"},"nativeSrc":"18917:11:18","nodeType":"YulFunctionCall","src":"18917:11:18"},{"kind":"number","nativeSrc":"18930:1:18","nodeType":"YulLiteral","src":"18930:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18913:3:18","nodeType":"YulIdentifier","src":"18913:3:18"},"nativeSrc":"18913:19:18","nodeType":"YulFunctionCall","src":"18913:19:18"}],"functionName":{"name":"and","nativeSrc":"18901:3:18","nodeType":"YulIdentifier","src":"18901:3:18"},"nativeSrc":"18901:32:18","nodeType":"YulFunctionCall","src":"18901:32:18"}],"functionName":{"name":"mstore","nativeSrc":"18883:6:18","nodeType":"YulIdentifier","src":"18883:6:18"},"nativeSrc":"18883:51:18","nodeType":"YulFunctionCall","src":"18883:51:18"},"nativeSrc":"18883:51:18","nodeType":"YulExpressionStatement","src":"18883:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18954:9:18","nodeType":"YulIdentifier","src":"18954:9:18"},{"kind":"number","nativeSrc":"18965:2:18","nodeType":"YulLiteral","src":"18965:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18950:3:18","nodeType":"YulIdentifier","src":"18950:3:18"},"nativeSrc":"18950:18:18","nodeType":"YulFunctionCall","src":"18950:18:18"},{"arguments":[{"name":"value1","nativeSrc":"18974:6:18","nodeType":"YulIdentifier","src":"18974:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18990:3:18","nodeType":"YulLiteral","src":"18990:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"18995:1:18","nodeType":"YulLiteral","src":"18995:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18986:3:18","nodeType":"YulIdentifier","src":"18986:3:18"},"nativeSrc":"18986:11:18","nodeType":"YulFunctionCall","src":"18986:11:18"},{"kind":"number","nativeSrc":"18999:1:18","nodeType":"YulLiteral","src":"18999:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18982:3:18","nodeType":"YulIdentifier","src":"18982:3:18"},"nativeSrc":"18982:19:18","nodeType":"YulFunctionCall","src":"18982:19:18"}],"functionName":{"name":"and","nativeSrc":"18970:3:18","nodeType":"YulIdentifier","src":"18970:3:18"},"nativeSrc":"18970:32:18","nodeType":"YulFunctionCall","src":"18970:32:18"}],"functionName":{"name":"mstore","nativeSrc":"18943:6:18","nodeType":"YulIdentifier","src":"18943:6:18"},"nativeSrc":"18943:60:18","nodeType":"YulFunctionCall","src":"18943:60:18"},"nativeSrc":"18943:60:18","nodeType":"YulExpressionStatement","src":"18943:60:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19023:9:18","nodeType":"YulIdentifier","src":"19023:9:18"},{"kind":"number","nativeSrc":"19034:2:18","nodeType":"YulLiteral","src":"19034:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19019:3:18","nodeType":"YulIdentifier","src":"19019:3:18"},"nativeSrc":"19019:18:18","nodeType":"YulFunctionCall","src":"19019:18:18"},{"name":"value2","nativeSrc":"19039:6:18","nodeType":"YulIdentifier","src":"19039:6:18"}],"functionName":{"name":"mstore","nativeSrc":"19012:6:18","nodeType":"YulIdentifier","src":"19012:6:18"},"nativeSrc":"19012:34:18","nodeType":"YulFunctionCall","src":"19012:34:18"},"nativeSrc":"19012:34:18","nodeType":"YulExpressionStatement","src":"19012:34:18"}]},"name":"abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"18673:379:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18791:9:18","nodeType":"YulTypedName","src":"18791:9:18","type":""},{"name":"value2","nativeSrc":"18802:6:18","nodeType":"YulTypedName","src":"18802:6:18","type":""},{"name":"value1","nativeSrc":"18810:6:18","nodeType":"YulTypedName","src":"18810:6:18","type":""},{"name":"value0","nativeSrc":"18818:6:18","nodeType":"YulTypedName","src":"18818:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18829:4:18","nodeType":"YulTypedName","src":"18829:4:18","type":""}],"src":"18673:379:18"},{"body":{"nativeSrc":"19135:167:18","nodeType":"YulBlock","src":"19135:167:18","statements":[{"body":{"nativeSrc":"19181:16:18","nodeType":"YulBlock","src":"19181:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19190:1:18","nodeType":"YulLiteral","src":"19190:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"19193:1:18","nodeType":"YulLiteral","src":"19193:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19183:6:18","nodeType":"YulIdentifier","src":"19183:6:18"},"nativeSrc":"19183:12:18","nodeType":"YulFunctionCall","src":"19183:12:18"},"nativeSrc":"19183:12:18","nodeType":"YulExpressionStatement","src":"19183:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"19156:7:18","nodeType":"YulIdentifier","src":"19156:7:18"},{"name":"headStart","nativeSrc":"19165:9:18","nodeType":"YulIdentifier","src":"19165:9:18"}],"functionName":{"name":"sub","nativeSrc":"19152:3:18","nodeType":"YulIdentifier","src":"19152:3:18"},"nativeSrc":"19152:23:18","nodeType":"YulFunctionCall","src":"19152:23:18"},{"kind":"number","nativeSrc":"19177:2:18","nodeType":"YulLiteral","src":"19177:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"19148:3:18","nodeType":"YulIdentifier","src":"19148:3:18"},"nativeSrc":"19148:32:18","nodeType":"YulFunctionCall","src":"19148:32:18"},"nativeSrc":"19145:52:18","nodeType":"YulIf","src":"19145:52:18"},{"nativeSrc":"19206:29:18","nodeType":"YulVariableDeclaration","src":"19206:29:18","value":{"arguments":[{"name":"headStart","nativeSrc":"19225:9:18","nodeType":"YulIdentifier","src":"19225:9:18"}],"functionName":{"name":"mload","nativeSrc":"19219:5:18","nodeType":"YulIdentifier","src":"19219:5:18"},"nativeSrc":"19219:16:18","nodeType":"YulFunctionCall","src":"19219:16:18"},"variables":[{"name":"value","nativeSrc":"19210:5:18","nodeType":"YulTypedName","src":"19210:5:18","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"19266:5:18","nodeType":"YulIdentifier","src":"19266:5:18"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"19244:21:18","nodeType":"YulIdentifier","src":"19244:21:18"},"nativeSrc":"19244:28:18","nodeType":"YulFunctionCall","src":"19244:28:18"},"nativeSrc":"19244:28:18","nodeType":"YulExpressionStatement","src":"19244:28:18"},{"nativeSrc":"19281:15:18","nodeType":"YulAssignment","src":"19281:15:18","value":{"name":"value","nativeSrc":"19291:5:18","nodeType":"YulIdentifier","src":"19291:5:18"},"variableNames":[{"name":"value0","nativeSrc":"19281:6:18","nodeType":"YulIdentifier","src":"19281:6:18"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"19057:245:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19101:9:18","nodeType":"YulTypedName","src":"19101:9:18","type":""},{"name":"dataEnd","nativeSrc":"19112:7:18","nodeType":"YulTypedName","src":"19112:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"19124:6:18","nodeType":"YulTypedName","src":"19124:6:18","type":""}],"src":"19057:245:18"},{"body":{"nativeSrc":"19514:222:18","nodeType":"YulBlock","src":"19514:222:18","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19531:9:18","nodeType":"YulIdentifier","src":"19531:9:18"},{"kind":"number","nativeSrc":"19542:2:18","nodeType":"YulLiteral","src":"19542:2:18","type":"","value":"96"}],"functionName":{"name":"mstore","nativeSrc":"19524:6:18","nodeType":"YulIdentifier","src":"19524:6:18"},"nativeSrc":"19524:21:18","nodeType":"YulFunctionCall","src":"19524:21:18"},"nativeSrc":"19524:21:18","nodeType":"YulExpressionStatement","src":"19524:21:18"},{"nativeSrc":"19554:64:18","nodeType":"YulAssignment","src":"19554:64:18","value":{"arguments":[{"name":"value0","nativeSrc":"19591:6:18","nodeType":"YulIdentifier","src":"19591:6:18"},{"arguments":[{"name":"headStart","nativeSrc":"19603:9:18","nodeType":"YulIdentifier","src":"19603:9:18"},{"kind":"number","nativeSrc":"19614:2:18","nodeType":"YulLiteral","src":"19614:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"19599:3:18","nodeType":"YulIdentifier","src":"19599:3:18"},"nativeSrc":"19599:18:18","nodeType":"YulFunctionCall","src":"19599:18:18"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nativeSrc":"19562:28:18","nodeType":"YulIdentifier","src":"19562:28:18"},"nativeSrc":"19562:56:18","nodeType":"YulFunctionCall","src":"19562:56:18"},"variableNames":[{"name":"tail","nativeSrc":"19554:4:18","nodeType":"YulIdentifier","src":"19554:4:18"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19638:9:18","nodeType":"YulIdentifier","src":"19638:9:18"},{"kind":"number","nativeSrc":"19649:2:18","nodeType":"YulLiteral","src":"19649:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19634:3:18","nodeType":"YulIdentifier","src":"19634:3:18"},"nativeSrc":"19634:18:18","nodeType":"YulFunctionCall","src":"19634:18:18"},{"arguments":[{"name":"value1","nativeSrc":"19658:6:18","nodeType":"YulIdentifier","src":"19658:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19674:3:18","nodeType":"YulLiteral","src":"19674:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"19679:1:18","nodeType":"YulLiteral","src":"19679:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19670:3:18","nodeType":"YulIdentifier","src":"19670:3:18"},"nativeSrc":"19670:11:18","nodeType":"YulFunctionCall","src":"19670:11:18"},{"kind":"number","nativeSrc":"19683:1:18","nodeType":"YulLiteral","src":"19683:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19666:3:18","nodeType":"YulIdentifier","src":"19666:3:18"},"nativeSrc":"19666:19:18","nodeType":"YulFunctionCall","src":"19666:19:18"}],"functionName":{"name":"and","nativeSrc":"19654:3:18","nodeType":"YulIdentifier","src":"19654:3:18"},"nativeSrc":"19654:32:18","nodeType":"YulFunctionCall","src":"19654:32:18"}],"functionName":{"name":"mstore","nativeSrc":"19627:6:18","nodeType":"YulIdentifier","src":"19627:6:18"},"nativeSrc":"19627:60:18","nodeType":"YulFunctionCall","src":"19627:60:18"},"nativeSrc":"19627:60:18","nodeType":"YulExpressionStatement","src":"19627:60:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19707:9:18","nodeType":"YulIdentifier","src":"19707:9:18"},{"kind":"number","nativeSrc":"19718:2:18","nodeType":"YulLiteral","src":"19718:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19703:3:18","nodeType":"YulIdentifier","src":"19703:3:18"},"nativeSrc":"19703:18:18","nodeType":"YulFunctionCall","src":"19703:18:18"},{"name":"value2","nativeSrc":"19723:6:18","nodeType":"YulIdentifier","src":"19723:6:18"}],"functionName":{"name":"mstore","nativeSrc":"19696:6:18","nodeType":"YulIdentifier","src":"19696:6:18"},"nativeSrc":"19696:34:18","nodeType":"YulFunctionCall","src":"19696:34:18"},"nativeSrc":"19696:34:18","nodeType":"YulExpressionStatement","src":"19696:34:18"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed","nativeSrc":"19307:429:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19467:9:18","nodeType":"YulTypedName","src":"19467:9:18","type":""},{"name":"value2","nativeSrc":"19478:6:18","nodeType":"YulTypedName","src":"19478:6:18","type":""},{"name":"value1","nativeSrc":"19486:6:18","nodeType":"YulTypedName","src":"19486:6:18","type":""},{"name":"value0","nativeSrc":"19494:6:18","nodeType":"YulTypedName","src":"19494:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19505:4:18","nodeType":"YulTypedName","src":"19505:4:18","type":""}],"src":"19307:429:18"},{"body":{"nativeSrc":"19898:188:18","nodeType":"YulBlock","src":"19898:188:18","statements":[{"nativeSrc":"19908:26:18","nodeType":"YulAssignment","src":"19908:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"19920:9:18","nodeType":"YulIdentifier","src":"19920:9:18"},{"kind":"number","nativeSrc":"19931:2:18","nodeType":"YulLiteral","src":"19931:2:18","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"19916:3:18","nodeType":"YulIdentifier","src":"19916:3:18"},"nativeSrc":"19916:18:18","nodeType":"YulFunctionCall","src":"19916:18:18"},"variableNames":[{"name":"tail","nativeSrc":"19908:4:18","nodeType":"YulIdentifier","src":"19908:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19950:9:18","nodeType":"YulIdentifier","src":"19950:9:18"},{"arguments":[{"name":"value0","nativeSrc":"19965:6:18","nodeType":"YulIdentifier","src":"19965:6:18"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19981:3:18","nodeType":"YulLiteral","src":"19981:3:18","type":"","value":"160"},{"kind":"number","nativeSrc":"19986:1:18","nodeType":"YulLiteral","src":"19986:1:18","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19977:3:18","nodeType":"YulIdentifier","src":"19977:3:18"},"nativeSrc":"19977:11:18","nodeType":"YulFunctionCall","src":"19977:11:18"},{"kind":"number","nativeSrc":"19990:1:18","nodeType":"YulLiteral","src":"19990:1:18","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19973:3:18","nodeType":"YulIdentifier","src":"19973:3:18"},"nativeSrc":"19973:19:18","nodeType":"YulFunctionCall","src":"19973:19:18"}],"functionName":{"name":"and","nativeSrc":"19961:3:18","nodeType":"YulIdentifier","src":"19961:3:18"},"nativeSrc":"19961:32:18","nodeType":"YulFunctionCall","src":"19961:32:18"}],"functionName":{"name":"mstore","nativeSrc":"19943:6:18","nodeType":"YulIdentifier","src":"19943:6:18"},"nativeSrc":"19943:51:18","nodeType":"YulFunctionCall","src":"19943:51:18"},"nativeSrc":"19943:51:18","nodeType":"YulExpressionStatement","src":"19943:51:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20014:9:18","nodeType":"YulIdentifier","src":"20014:9:18"},{"kind":"number","nativeSrc":"20025:2:18","nodeType":"YulLiteral","src":"20025:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20010:3:18","nodeType":"YulIdentifier","src":"20010:3:18"},"nativeSrc":"20010:18:18","nodeType":"YulFunctionCall","src":"20010:18:18"},{"name":"value1","nativeSrc":"20030:6:18","nodeType":"YulIdentifier","src":"20030:6:18"}],"functionName":{"name":"mstore","nativeSrc":"20003:6:18","nodeType":"YulIdentifier","src":"20003:6:18"},"nativeSrc":"20003:34:18","nodeType":"YulFunctionCall","src":"20003:34:18"},"nativeSrc":"20003:34:18","nodeType":"YulExpressionStatement","src":"20003:34:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20057:9:18","nodeType":"YulIdentifier","src":"20057:9:18"},{"kind":"number","nativeSrc":"20068:2:18","nodeType":"YulLiteral","src":"20068:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20053:3:18","nodeType":"YulIdentifier","src":"20053:3:18"},"nativeSrc":"20053:18:18","nodeType":"YulFunctionCall","src":"20053:18:18"},{"name":"value2","nativeSrc":"20073:6:18","nodeType":"YulIdentifier","src":"20073:6:18"}],"functionName":{"name":"mstore","nativeSrc":"20046:6:18","nodeType":"YulIdentifier","src":"20046:6:18"},"nativeSrc":"20046:34:18","nodeType":"YulFunctionCall","src":"20046:34:18"},"nativeSrc":"20046:34:18","nodeType":"YulExpressionStatement","src":"20046:34:18"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"19741:345:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19851:9:18","nodeType":"YulTypedName","src":"19851:9:18","type":""},{"name":"value2","nativeSrc":"19862:6:18","nodeType":"YulTypedName","src":"19862:6:18","type":""},{"name":"value1","nativeSrc":"19870:6:18","nodeType":"YulTypedName","src":"19870:6:18","type":""},{"name":"value0","nativeSrc":"19878:6:18","nodeType":"YulTypedName","src":"19878:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19889:4:18","nodeType":"YulTypedName","src":"19889:4:18","type":""}],"src":"19741:345:18"},{"body":{"nativeSrc":"20172:103:18","nodeType":"YulBlock","src":"20172:103:18","statements":[{"body":{"nativeSrc":"20218:16:18","nodeType":"YulBlock","src":"20218:16:18","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20227:1:18","nodeType":"YulLiteral","src":"20227:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"20230:1:18","nodeType":"YulLiteral","src":"20230:1:18","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20220:6:18","nodeType":"YulIdentifier","src":"20220:6:18"},"nativeSrc":"20220:12:18","nodeType":"YulFunctionCall","src":"20220:12:18"},"nativeSrc":"20220:12:18","nodeType":"YulExpressionStatement","src":"20220:12:18"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"20193:7:18","nodeType":"YulIdentifier","src":"20193:7:18"},{"name":"headStart","nativeSrc":"20202:9:18","nodeType":"YulIdentifier","src":"20202:9:18"}],"functionName":{"name":"sub","nativeSrc":"20189:3:18","nodeType":"YulIdentifier","src":"20189:3:18"},"nativeSrc":"20189:23:18","nodeType":"YulFunctionCall","src":"20189:23:18"},{"kind":"number","nativeSrc":"20214:2:18","nodeType":"YulLiteral","src":"20214:2:18","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"20185:3:18","nodeType":"YulIdentifier","src":"20185:3:18"},"nativeSrc":"20185:32:18","nodeType":"YulFunctionCall","src":"20185:32:18"},"nativeSrc":"20182:52:18","nodeType":"YulIf","src":"20182:52:18"},{"nativeSrc":"20243:26:18","nodeType":"YulAssignment","src":"20243:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"20259:9:18","nodeType":"YulIdentifier","src":"20259:9:18"}],"functionName":{"name":"mload","nativeSrc":"20253:5:18","nodeType":"YulIdentifier","src":"20253:5:18"},"nativeSrc":"20253:16:18","nodeType":"YulFunctionCall","src":"20253:16:18"},"variableNames":[{"name":"value0","nativeSrc":"20243:6:18","nodeType":"YulIdentifier","src":"20243:6:18"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"20091:184:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20138:9:18","nodeType":"YulTypedName","src":"20138:9:18","type":""},{"name":"dataEnd","nativeSrc":"20149:7:18","nodeType":"YulTypedName","src":"20149:7:18","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"20161:6:18","nodeType":"YulTypedName","src":"20161:6:18","type":""}],"src":"20091:184:18"},{"body":{"nativeSrc":"20409:119:18","nodeType":"YulBlock","src":"20409:119:18","statements":[{"nativeSrc":"20419:26:18","nodeType":"YulAssignment","src":"20419:26:18","value":{"arguments":[{"name":"headStart","nativeSrc":"20431:9:18","nodeType":"YulIdentifier","src":"20431:9:18"},{"kind":"number","nativeSrc":"20442:2:18","nodeType":"YulLiteral","src":"20442:2:18","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20427:3:18","nodeType":"YulIdentifier","src":"20427:3:18"},"nativeSrc":"20427:18:18","nodeType":"YulFunctionCall","src":"20427:18:18"},"variableNames":[{"name":"tail","nativeSrc":"20419:4:18","nodeType":"YulIdentifier","src":"20419:4:18"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20461:9:18","nodeType":"YulIdentifier","src":"20461:9:18"},{"name":"value0","nativeSrc":"20472:6:18","nodeType":"YulIdentifier","src":"20472:6:18"}],"functionName":{"name":"mstore","nativeSrc":"20454:6:18","nodeType":"YulIdentifier","src":"20454:6:18"},"nativeSrc":"20454:25:18","nodeType":"YulFunctionCall","src":"20454:25:18"},"nativeSrc":"20454:25:18","nodeType":"YulExpressionStatement","src":"20454:25:18"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20499:9:18","nodeType":"YulIdentifier","src":"20499:9:18"},{"kind":"number","nativeSrc":"20510:2:18","nodeType":"YulLiteral","src":"20510:2:18","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20495:3:18","nodeType":"YulIdentifier","src":"20495:3:18"},"nativeSrc":"20495:18:18","nodeType":"YulFunctionCall","src":"20495:18:18"},{"name":"value1","nativeSrc":"20515:6:18","nodeType":"YulIdentifier","src":"20515:6:18"}],"functionName":{"name":"mstore","nativeSrc":"20488:6:18","nodeType":"YulIdentifier","src":"20488:6:18"},"nativeSrc":"20488:34:18","nodeType":"YulFunctionCall","src":"20488:34:18"},"nativeSrc":"20488:34:18","nodeType":"YulExpressionStatement","src":"20488:34:18"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"20280:248:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20370:9:18","nodeType":"YulTypedName","src":"20370:9:18","type":""},{"name":"value1","nativeSrc":"20381:6:18","nodeType":"YulTypedName","src":"20381:6:18","type":""},{"name":"value0","nativeSrc":"20389:6:18","nodeType":"YulTypedName","src":"20389:6:18","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20400:4:18","nodeType":"YulTypedName","src":"20400:4:18","type":""}],"src":"20280:248:18"},{"body":{"nativeSrc":"20580:88:18","nodeType":"YulBlock","src":"20580:88:18","statements":[{"body":{"nativeSrc":"20611:22:18","nodeType":"YulBlock","src":"20611:22:18","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20613:16:18","nodeType":"YulIdentifier","src":"20613:16:18"},"nativeSrc":"20613:18:18","nodeType":"YulFunctionCall","src":"20613:18:18"},"nativeSrc":"20613:18:18","nodeType":"YulExpressionStatement","src":"20613:18:18"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"20596:5:18","nodeType":"YulIdentifier","src":"20596:5:18"},{"arguments":[{"kind":"number","nativeSrc":"20607:1:18","nodeType":"YulLiteral","src":"20607:1:18","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"20603:3:18","nodeType":"YulIdentifier","src":"20603:3:18"},"nativeSrc":"20603:6:18","nodeType":"YulFunctionCall","src":"20603:6:18"}],"functionName":{"name":"eq","nativeSrc":"20593:2:18","nodeType":"YulIdentifier","src":"20593:2:18"},"nativeSrc":"20593:17:18","nodeType":"YulFunctionCall","src":"20593:17:18"},"nativeSrc":"20590:43:18","nodeType":"YulIf","src":"20590:43:18"},{"nativeSrc":"20642:20:18","nodeType":"YulAssignment","src":"20642:20:18","value":{"arguments":[{"name":"value","nativeSrc":"20653:5:18","nodeType":"YulIdentifier","src":"20653:5:18"},{"kind":"number","nativeSrc":"20660:1:18","nodeType":"YulLiteral","src":"20660:1:18","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"20649:3:18","nodeType":"YulIdentifier","src":"20649:3:18"},"nativeSrc":"20649:13:18","nodeType":"YulFunctionCall","src":"20649:13:18"},"variableNames":[{"name":"ret","nativeSrc":"20642:3:18","nodeType":"YulIdentifier","src":"20642:3:18"}]}]},"name":"increment_t_uint256","nativeSrc":"20533:135:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20562:5:18","nodeType":"YulTypedName","src":"20562:5:18","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"20572:3:18","nodeType":"YulTypedName","src":"20572:3:18","type":""}],"src":"20533:135:18"},{"body":{"nativeSrc":"20810:150:18","nodeType":"YulBlock","src":"20810:150:18","statements":[{"nativeSrc":"20820:27:18","nodeType":"YulVariableDeclaration","src":"20820:27:18","value":{"arguments":[{"name":"value0","nativeSrc":"20840:6:18","nodeType":"YulIdentifier","src":"20840:6:18"}],"functionName":{"name":"mload","nativeSrc":"20834:5:18","nodeType":"YulIdentifier","src":"20834:5:18"},"nativeSrc":"20834:13:18","nodeType":"YulFunctionCall","src":"20834:13:18"},"variables":[{"name":"length","nativeSrc":"20824:6:18","nodeType":"YulTypedName","src":"20824:6:18","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"20895:6:18","nodeType":"YulIdentifier","src":"20895:6:18"},{"kind":"number","nativeSrc":"20903:4:18","nodeType":"YulLiteral","src":"20903:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20891:3:18","nodeType":"YulIdentifier","src":"20891:3:18"},"nativeSrc":"20891:17:18","nodeType":"YulFunctionCall","src":"20891:17:18"},{"name":"pos","nativeSrc":"20910:3:18","nodeType":"YulIdentifier","src":"20910:3:18"},{"name":"length","nativeSrc":"20915:6:18","nodeType":"YulIdentifier","src":"20915:6:18"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"20856:34:18","nodeType":"YulIdentifier","src":"20856:34:18"},"nativeSrc":"20856:66:18","nodeType":"YulFunctionCall","src":"20856:66:18"},"nativeSrc":"20856:66:18","nodeType":"YulExpressionStatement","src":"20856:66:18"},{"nativeSrc":"20931:23:18","nodeType":"YulAssignment","src":"20931:23:18","value":{"arguments":[{"name":"pos","nativeSrc":"20942:3:18","nodeType":"YulIdentifier","src":"20942:3:18"},{"name":"length","nativeSrc":"20947:6:18","nodeType":"YulIdentifier","src":"20947:6:18"}],"functionName":{"name":"add","nativeSrc":"20938:3:18","nodeType":"YulIdentifier","src":"20938:3:18"},"nativeSrc":"20938:16:18","nodeType":"YulFunctionCall","src":"20938:16:18"},"variableNames":[{"name":"end","nativeSrc":"20931:3:18","nodeType":"YulIdentifier","src":"20931:3:18"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"20673:287:18","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"20786:3:18","nodeType":"YulTypedName","src":"20786:3:18","type":""},{"name":"value0","nativeSrc":"20791:6:18","nodeType":"YulTypedName","src":"20791:6:18","type":""}],"returnVariables":[{"name":"end","nativeSrc":"20802:3:18","nodeType":"YulTypedName","src":"20802:3:18","type":""}],"src":"20673:287:18"}]},"contents":"{\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 tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\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, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\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 validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 96))\n        value3 := value_3\n        let value_4 := calldataload(add(headStart, 128))\n        validator_revert_bool(value_4)\n        value4 := value_4\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        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\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_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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := 0\n            value := calldataload(src)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_array_bool_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_bool(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 128))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_array_bool_dyn(add(headStart, offset_3), dataEnd)\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_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\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 length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_address_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_address_dyn(add(headStart, offset_1), dataEnd)\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        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(length, 0x1f), not(31)), 32))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), length)\n        mstore(add(add(array, length), 32), 0)\n        value1 := array\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_address_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\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_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_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_encode_struct_ViewPermission(value, pos)\n    {\n        mstore(pos, mload(value))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        mstore(add(pos, 0x40), iszero(iszero(mload(add(value, 0x40)))))\n    }\n    function abi_encode_tuple_t_struct$_ViewPermission_$4181_memory_ptr__to_t_struct$_ViewPermission_$4181_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_struct_ViewPermission(value0, headStart)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 64))\n        value2 := value_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_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4181_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            abi_encode_struct_ViewPermission(mload(srcPtr), pos)\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        pos := add(pos, 0x20)\n        let srcPtr := add(value, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__to_t_struct$_ContentPurchaseInfo_$3823_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let tail_1 := add(headStart, 192)\n        mstore(add(headStart, 32), mload(value0))\n        mstore(add(headStart, 64), iszero(iszero(mload(add(value0, 32)))))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 96), 0xa0)\n        let pos := tail_1\n        let length := mload(memberValue0)\n        mstore(tail_1, length)\n        pos := add(headStart, 224)\n        let srcPtr := add(memberValue0, 32)\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, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        let memberValue0_1 := mload(add(value0, 96))\n        mstore(add(headStart, 128), add(sub(pos, headStart), not(31)))\n        let tail_2 := abi_encode_array_uint256_dyn(memberValue0_1, pos)\n        let memberValue0_2 := mload(add(value0, 128))\n        abi_encode_bool(memberValue0_2, add(headStart, 0xa0))\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_address_payable(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_rational_0_by_1__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\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_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\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 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_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 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        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\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_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__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), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\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_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 96))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__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    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_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 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_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":18,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"287":[{"length":32,"start":10226},{"length":32,"start":10267},{"length":32,"start":10631}]},"linkReferences":{},"object":"6080604052600436106101e35760003560e01c8063704802751161010257806399ea24fe11610095578063b6f4fe9811610064578063b6f4fe98146105cf578063b8e8f98e146105ef578063caae24b31461061c578063f0f442601461063c57600080fd5b806399ea24fe1461053e578063ad3cb1cc14610551578063b303f53f1461058f578063b6f1d140146105bc57600080fd5b80638d13660e116100d15780638d13660e146104be5780638da5cb5b146104eb5780638fd3ab80146105095780639981007b1461051e57600080fd5b8063704802751461044957806376319190146104695780638456cb5914610489578063867786411461049e57600080fd5b80633f4ba83a1161017a578063529e2b3211610149578063529e2b32146103c457806352d1902d146103f157806354fd4d50146104145780636d69fcaf1461042957600080fd5b80633f4ba83a1461034957806340033b3d1461035e5780634a200fa5146103915780634f1ef286146103b157600080fd5b8063240028e8116101b6578063240028e81461028557806324d7806c146102be578063277148e3146102f75780633b19e84a1461031757600080fd5b80630107e472146101e8578063022360261461021357806305059571146102355780631785f53c14610265575b600080fd5b3480156101f457600080fd5b506101fd61065c565b60405161020a9190612f9f565b60405180910390f35b34801561021f57600080fd5b5061023361022e36600461300e565b6106c1565b005b34801561024157600080fd5b50610255610250366004613064565b6107bb565b604051901515815260200161020a565b34801561027157600080fd5b50610233610280366004613090565b610959565b34801561029157600080fd5b506102556102a0366004613090565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156102ca57600080fd5b506102556102d9366004613090565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561030357600080fd5b506102336103123660046131ea565b6109f4565b34801561032357600080fd5b50600a546001600160a01b03165b6040516001600160a01b03909116815260200161020a565b34801561035557600080fd5b50610233610c7e565b34801561036a57600080fd5b506102556103793660046132b9565b60009081526002602052604090206003015460ff1690565b34801561039d57600080fd5b506102336103ac366004613339565b610cde565b6102336103bf3660046133b2565b611149565b3480156103d057600080fd5b506103e46103df36600461345d565b611168565b60405161020a91906134c4565b3480156103fd57600080fd5b506104066114fe565b60405190815260200161020a565b34801561042057600080fd5b50600954610406565b34801561043557600080fd5b50610233610444366004613090565b61151b565b34801561045557600080fd5b50610233610464366004613090565b61162a565b34801561047557600080fd5b50610233610484366004613090565b6116cb565b34801561049557600080fd5b50610233611879565b3480156104aa57600080fd5b506102336104b93660046134fe565b6118dc565b3480156104ca57600080fd5b506104de6104d9366004613064565b611aa1565b60405161020a9190613536565b3480156104f757600080fd5b506000546001600160a01b0316610331565b34801561051557600080fd5b50610233611b1a565b34801561052a57600080fd5b506102336105393660046134fe565b611ba5565b61023361054c366004613559565b611c96565b34801561055d57600080fd5b50610582604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161020a91906135c5565b34801561059b57600080fd5b506105af6105aa3660046135f8565b61201d565b60405161020a9190613631565b6102336105ca3660046134fe565b612138565b3480156105db57600080fd5b506102336105ea36600461368a565b612414565b3480156105fb57600080fd5b5061060f61060a3660046132b9565b6125ea565b60405161020a9190613735565b34801561062857600080fd5b50610255610637366004613064565b612677565b34801561064857600080fd5b50610233610657366004613090565b612702565b606060006005018054806020026020016040519081016040528092919081815260200182805480156106b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610699575b5050505050905090565b3360009081526001602052604090205460ff166106f157604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03841660009081526004602052604090205460ff1661072a5760405163350b944160e11b815260040160405180910390fd5b60008581526002602081815260408084206001600160a01b03891680865281845291852088905593899052908290529082018490556003909101805460ff19168315151790556107895760008581526002602052604090206001018390555b60405185907fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426690600090a25050505050565b3360009081526001602052604081205460ff166107eb57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526003602090815260408083208584529091529020600281015460ff166108335760405163fcd7a1b560e01b815260040160405180910390fd5b6000838152600260208190526040822001549081900361088b5783856001600160a01b031660008051602061390b833981519152600060405161087891815260200190565b60405180910390a3600192505050610953565b81600101546000036108b05760405163fcd7a1b560e01b815260040160405180910390fd5b6001820180549060006108c2836137eb565b919050555083856001600160a01b031660008051602061390b83398151915284600101546040516108f591815260200190565b60405180910390a3816001015460000361094c5760028201805460ff1916905560405184906001600160a01b038716907f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e90600090a35b6001925050505b92915050565b6000546001600160a01b03163314610984576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166109ab5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9190a250565b3360009081526001602052604090205460ff16610a2457604051637bfa4b9f60e01b815260040160405180910390fd5b82518551141580610a3757508151855114155b80610a4457508051855114155b15610a625760405163512509d360e11b815260040160405180910390fd5b6001600160a01b03841660009081526004602052604090205460ff16610a9b5760405163350b944160e11b815260040160405180910390fd5b60005b8551811015610c7657838181518110610ab957610ab9613802565b602002602001015160006002016000888481518110610ada57610ada613802565b602002602001015181526020019081526020016000206000016000876001600160a01b03166001600160a01b0316815260200190815260200160002081905550828181518110610b2c57610b2c613802565b602002602001015160006002016000888481518110610b4d57610b4d613802565b6020026020010151815260200190815260200160002060020181905550818181518110610b7c57610b7c613802565b602002602001015160006002016000888481518110610b9d57610b9d613802565b6020908102919091018101518252810191909152604001600020600301805460ff19169115159190911790556001600160a01b038516610c2857838181518110610be957610be9613802565b602002602001015160006002016000888481518110610c0a57610c0a613802565b60200260200101518152602001908152602001600020600101819055505b858181518110610c3a57610c3a613802565b60200260200101517fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426660405160405180910390a2600101610a9e565b505050505050565b6000546001600160a01b03163314610ca9576040516330cd747160e01b815260040160405180910390fd5b6008805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6000610ce86127a6565b805490915060ff600160401b82041615906001600160401b0316600081158015610d0f5750825b90506000826001600160401b03166001148015610d2b5750303b155b905081158015610d39575080155b15610d575760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d8157845460ff60401b1916600160401b1785555b6001600160a01b038816610da85760405163d92e233d60e01b815260040160405180910390fd5b610db06127cf565b610db86127d7565b600080546001600160a01b0319166001600160a01b038a1617815560016009556008805460ff191690555b8751811015610ed15760006001600160a01b0316888281518110610e0957610e09613802565b60200260200101516001600160a01b031614610ec9576001600060010160008a8481518110610e3a57610e3a613802565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110610e8b57610e8b613802565b60200260200101516001600160a01b03167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a25b600101610de3565b5060005b8651811015610ffc576000878281518110610ef257610ef2613802565b6020026020010151905060006001600160a01b0316816001600160a01b031614610ff3576001600160a01b03811660009081526006602052604090205460ff16610fa9576001600160a01b0381166000818152600660209081526040808320805460ff19166001908117909155600580546007909452918420839055820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690911790555b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a25b50600101610ed5565b506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85460ff166110c4577f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805460ff191660019081179091556005805460076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df81905591820181556000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690555b6000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec805460ff19166001179055831561113f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6111516127e7565b61115a8261288c565b61116482826128ba565b5050565b3360009081526001602052604090205460609060ff1661119b57604051637bfa4b9f60e01b815260040160405180910390fd5b81518351146111bd5760405163512509d360e11b815260040160405180910390fd5b600083516001600160401b038111156111d8576111d86130ad565b604051908082528060200260200182016040528015611201578160200160208202803683370190505b50905060005b84518110156114f657600080600301600087848151811061122a5761122a613802565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061126657611266613802565b6020026020010151815260200190815260200160002090508060020160009054906101000a900460ff166112be5760008383815181106112a8576112a8613802565b91151560209283029190910190910152506114ee565b60008060020160008785815181106112d8576112d8613802565b602002602001015181526020019081526020016000206002015490508060000361138a5785838151811061130e5761130e613802565b602002602001015187848151811061132857611328613802565b60200260200101516001600160a01b031660008051602061390b833981519152600060405161135991815260200190565b60405180910390a3600184848151811061137557611375613802565b911515602092830291909101909101526114eb565b81600101546000036113c35760008484815181106113aa576113aa613802565b60200260200101901515908115158152505050506114ee565b6001820180549060006113d5836137eb565b91905055508583815181106113ec576113ec613802565b602002602001015187848151811061140657611406613802565b60200260200101516001600160a01b031660008051602061390b833981519152846001015460405161143a91815260200190565b60405180910390a381600101546000036114c65760028201805460ff19169055855186908490811061146e5761146e613802565b602002602001015187848151811061148857611488613802565b60200260200101516001600160a01b03167f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e60405160405180910390a35b60018484815181106114da576114da613802565b911515602092830291909101909101525b50505b600101611207565b509392505050565b600061150861297c565b5060008051602061392b83398151915290565b3360009081526001602052604090205460ff1661154b57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff166115de576001600160a01b0381166000818152600660209081526040808320805460ff19166001908117909155600580546007909452918420839055820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191690911790555b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a250565b6000546001600160a01b03163314611655576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661167c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399190a250565b3360009081526001602052604090205460ff166116fb57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600460209081526040808320805460ff19169055600690915290205460ff1615611842576001600160a01b03811660009081526007602052604081205460055490919061175990600190613818565b90508082146117e357600080600501828154811061177957611779613802565b600091825260209091200154600580546001600160a01b0390921692508291859081106117a8576117a8613802565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526007909152604090208290555b60058054806117f4576117f461382b565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252600681526040808320805460ff19169055600790915281205550505b6040516001600160a01b038216907fbea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a30690600090a250565b6000546001600160a01b031633146118a4576040516330cd747160e01b815260040160405180910390fd5b6008805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6118e46129c5565b60085460ff16156119085760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060030154839060ff1661193c5760405163ab4142cf60e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905233906001600160a01b03851690636352211e90602401602060405180830381865afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190613841565b6001600160a01b0316146119ce5760405163fcd7a1b560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b50505050611a3e33856129fd565b604080516001600160a01b038516815260208101849052859133917fd0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70910160405180910390a350611a9c600160008051602061394b83398151915255565b505050565b611ac7604051806060016040528060008152602001600081526020016000151581525090565b506001600160a01b03821660009081526003602090815260408083208484528252918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915292915050565b6000546001600160a01b03163314611b45576040516330cd747160e01b815260040160405180910390fd5b600a546001600160a01b0316611ba35760008054600a80546001600160a01b0319166001600160a01b0390921691821790556040519091907f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a908290a35b565b3360009081526001602052604090205460ff16611bd557604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611c0e5760405163350b944160e11b815260040160405180910390fd5b60008381526002602090815260408083206001600160a01b0386168085529252909120829055611c4d5760008381526002602052604090206001018190555b816001600160a01b0316837f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca983604051611c8991815260200190565b60405180910390a3505050565b611c9e6129c5565b60085460ff1615611cc25760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611cfb5760405163350b944160e11b815260040160405180910390fd5b6000805b8451811015611e1e5760006002016000868381518110611d2157611d21613802565b60209081029190910181015182528101919091526040016000206003015460ff16611d5f5760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b038416611db25760006002016000868381518110611d8657611d86613802565b602002602001015181526020019081526020016000206001015482611dab919061385e565b9150611e16565b60006002016000868381518110611dcb57611dcb613802565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b031681526020019081526020016000205482611e13919061385e565b91505b600101611cff565b50808214611e3f5760405163cd1c886760e01b815260040160405180910390fd5b6001600160a01b038316611ee757813414611e6d5760405163cd1c886760e01b815260040160405180910390fd5b600a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611eba576040519150601f19603f3d011682016040523d82523d6000602084013e611ebf565b606091505b5050905080611ee1576040516312171d8360e31b815260040160405180910390fd5b50611f88565b600a546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018490526000918516906323b872dd906064016020604051808303816000875af1158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613871565b905080611f86576040516312171d8360e31b815260040160405180910390fd5b505b60005b8451811015611fbf57611fb733868381518110611faa57611faa613802565b60200260200101516129fd565b600101611f8b565b50336001600160a01b03167f2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d858585604051611ffd9392919061388e565b60405180910390a250611a9c600160008051602061394b83398151915255565b6060600082516001600160401b0381111561203a5761203a6130ad565b60405190808252806020026020018201604052801561209157816020015b61207e604051806060016040528060008152602001600081526020016000151581525090565b8152602001906001900390816120585790505b50905060005b83518110156114f6576001600160a01b038516600090815260036020526040812085519091908690849081106120cf576120cf613802565b60209081029190910181015182528181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff16151590820152825183908390811061212557612125613802565b6020908102919091010152600101612097565b6121406129c5565b60085460ff16156121645760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060030154839060ff166121985760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff166121d15760405163350b944160e11b815260040160405180910390fd5b60006001600160a01b0384166122ae57506000848152600260205260409020600101543481146122145760405163cd1c886760e01b815260040160405180910390fd5b3483146122345760405163cd1c886760e01b815260040160405180910390fd5b600a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612281576040519150601f19603f3d011682016040523d82523d6000602084013e612286565b606091505b50509050806122a8576040516312171d8360e31b815260040160405180910390fd5b50612393565b5060008481526002602090815260408083206001600160a01b03871684529091529020548281146122f25760405163cd1c886760e01b815260040160405180910390fd5b600a546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018590526000918616906323b872dd906064016020604051808303816000875af115801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613871565b905080612391576040516312171d8360e31b815260040160405180910390fd5b505b61239d33866129fd565b6000858152600260208181526040928390209091015482516001600160a01b0388168152918201869052818301529051869133917fb46dc51df9908947f62607b9c4761b3ab411f6da0bb32c44477b87ac8775d8be9181900360600190a35050611a9c600160008051602061394b83398151915255565b3360009081526001602052604090205460ff1661244457604051637bfa4b9f60e01b815260040160405180910390fd5b80518351146124665760405163512509d360e11b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff1661249f5760405163350b944160e11b815260040160405180910390fd5b60005b83518110156125e4578181815181106124bd576124bd613802565b6020026020010151600060020160008684815181106124de576124de613802565b602090810291909101810151825281810192909252604090810160009081206001600160a01b038816808352935220919091556125665781818151811061252757612527613802565b60200260200101516000600201600086848151811061254857612548613802565b60200260200101518152602001908152602001600020600101819055505b826001600160a01b031684828151811061258257612582613802565b60200260200101517f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca98484815181106125bd576125bd613802565b60200260200101516040516125d491815260200190565b60405180910390a36001016124a2565b50505050565b6126206040518060a001604052806000815260200160001515815260200160608152602001606081526020016000151581525090565b6000828152600260205260408120908061263985612b16565b6040805160a081018252600287015480825260039097015460ff16151560208201529081019290925260608201529215608084015250909392505050565b6001600160a01b038216600090815260036020908152604080832084845282528083208151606081018352815481526001820154938101939093526002015460ff1615159082018190526126cf576000915050610953565b600083815260026020819052604082200154908190036126f457600192505050610953565b506020015115159050610953565b6000546001600160a01b0316331461272d576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166127545760405163d92e233d60e01b815260040160405180910390fd5b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a90600090a35050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610953565b611ba3612d80565b6127df612d80565b611ba3612da5565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061286e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661286260008051602061392b833981519152546001600160a01b031690565b6001600160a01b031614155b15611ba35760405163703e46dd60e11b815260040160405180910390fd5b6000546001600160a01b031633146128b7576040516330cd747160e01b815260040160405180910390fd5b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612914575060408051601f3d908101601f19168201909252612911918101906138bc565b60015b61294157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b60008051602061392b833981519152811461297257604051632a87526960e21b815260048101829052602401612938565b611a9c8383612dad565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611ba35760405163703e46dd60e11b815260040160405180910390fd5b60008051602061394b8339815191528054600119016129f757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b03821660009081526003602090815260408083208484528252808320600292839052908320909101549091819003612a6b57600282015460ff1615612a495750505050565b428255600060018084019190915560028301805460ff191690911790556125e4565b600282015460ff1615612ae25780826001016000828254612a8c919061385e565b9091555050600182015460408051838152602081019290925284916001600160a01b038716917fb76abe3c068fccae7ac0f9377f48f7261dcf952179a37060c5de877a493e67b7910160405180910390a36125e4565b428255600180830182905560028301805460ff1916909117905550505050565b600160008051602061394b83398151915255565b6005546060908190600090815b81811015612bde576000806005018281548110612b4257612b42613802565b60009182526020808320909101546001600160a01b0316808352600490915260409091205490915060ff1615612bd55760006001600160a01b038216612b9a5750600087815260026020526040902060010154612bbf565b5060008781526002602090815260408083206001600160a01b03851684529091529020545b8015612bd35784612bcf816138d5565b9550505b505b50600101612b23565b50816001600160401b03811115612bf757612bf76130ad565b604051908082528060200260200182016040528015612c20578160200160208202803683370190505b509350816001600160401b03811115612c3b57612c3b6130ad565b604051908082528060200260200182016040528015612c64578160200160208202803683370190505b5092506000805b82811015612d77576000806005018281548110612c8a57612c8a613802565b60009182526020808320909101546001600160a01b0316808352600490915260409091205490915060ff1615612d6e5760006001600160a01b038216612ce25750600088815260026020526040902060010154612d07565b5060008881526002602090815260408083206001600160a01b03851684529091529020545b8015612d6c5781888581518110612d2057612d20613802565b60200260200101906001600160a01b031690816001600160a01b03168152505080878581518110612d5357612d53613802565b602090810291909101015283612d68816138d5565b9450505b505b50600101612c6b565b50505050915091565b612d88612e03565b611ba357604051631afcd79f60e31b815260040160405180910390fd5b612b02612d80565b612db682612e1d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612dfb57611a9c8282612e82565b611164612ef8565b6000612e0d6127a6565b54600160401b900460ff16919050565b806001600160a01b03163b600003612e5357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401612938565b60008051602061392b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e9f91906138ee565b600060405180830381855af49150503d8060008114612eda576040519150601f19603f3d011682016040523d82523d6000602084013e612edf565b606091505b5091509150612eef858383612f17565b95945050505050565b3415611ba35760405163b398979f60e01b815260040160405180910390fd5b606082612f2c57612f2782612f76565b612f6f565b8151158015612f4357506001600160a01b0384163b155b15612f6c57604051639996b31560e01b81526001600160a01b0385166004820152602401612938565b50805b9392505050565b805115612f865780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b602080825282518282018190526000918401906040840190835b81811015612fe05783516001600160a01b0316835260209384019390920191600101612fb9565b509095945050505050565b6001600160a01b03811681146128b757600080fd5b80151581146128b757600080fd5b600080600080600060a0868803121561302657600080fd5b85359450602086013561303881612feb565b93506040860135925060608601359150608086013561305681613000565b809150509295509295909350565b6000806040838503121561307757600080fd5b823561308281612feb565b946020939093013593505050565b6000602082840312156130a257600080fd5b8135612f6f81612feb565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130eb576130eb6130ad565b604052919050565b60006001600160401b0382111561310c5761310c6130ad565b5060051b60200190565b600082601f83011261312757600080fd5b813561313a613135826130f3565b6130c3565b8082825260208201915060208360051b86010192508583111561315c57600080fd5b602085015b83811015613179578035835260209283019201613161565b5095945050505050565b600082601f83011261319457600080fd5b81356131a2613135826130f3565b8082825260208201915060208360051b8601019250858311156131c457600080fd5b602085015b838110156131795780356131dc81613000565b8352602092830192016131c9565b600080600080600060a0868803121561320257600080fd5b85356001600160401b0381111561321857600080fd5b61322488828901613116565b955050602086013561323581612feb565b935060408601356001600160401b0381111561325057600080fd5b61325c88828901613116565b93505060608601356001600160401b0381111561327857600080fd5b61328488828901613116565b92505060808601356001600160401b038111156132a057600080fd5b6132ac88828901613183565b9150509295509295909350565b6000602082840312156132cb57600080fd5b5035919050565b600082601f8301126132e357600080fd5b81356132f1613135826130f3565b8082825260208201915060208360051b86010192508583111561331357600080fd5b602085015b8381101561317957803561332b81612feb565b835260209283019201613318565b60008060006060848603121561334e57600080fd5b833561335981612feb565b925060208401356001600160401b0381111561337457600080fd5b613380868287016132d2565b92505060408401356001600160401b0381111561339c57600080fd5b6133a8868287016132d2565b9150509250925092565b600080604083850312156133c557600080fd5b82356133d081612feb565b915060208301356001600160401b038111156133eb57600080fd5b8301601f810185136133fc57600080fd5b80356001600160401b03811115613415576134156130ad565b613428601f8201601f19166020016130c3565b81815286602083850101111561343d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806040838503121561347057600080fd5b82356001600160401b0381111561348657600080fd5b613492858286016132d2565b92505060208301356001600160401b038111156134ae57600080fd5b6134ba85828601613116565b9150509250929050565b602080825282518282018190526000918401906040840190835b81811015612fe057835115158352602093840193909201916001016134de565b60008060006060848603121561351357600080fd5b83359250602084013561352581612feb565b929592945050506040919091013590565b815181526020808301519082015260408083015115159082015260608101610953565b60008060006060848603121561356e57600080fd5b83356001600160401b0381111561358457600080fd5b61359086828701613116565b935050602084013561352581612feb565b60005b838110156135bc5781810151838201526020016135a4565b50506000910152565b60208152600082518060208401526135e48160408501602087016135a1565b601f01601f19169190910160400192915050565b6000806040838503121561360b57600080fd5b823561361681612feb565b915060208301356001600160401b038111156134ae57600080fd5b602080825282518282018190526000918401906040840190835b81811015612fe05761367483855180518252602080820151908301526040908101511515910152565b602093909301926060929092019160010161364b565b60008060006060848603121561369f57600080fd5b83356001600160401b038111156136b557600080fd5b6136c186828701613116565b93505060208401356136d281612feb565b915060408401356001600160401b038111156136ed57600080fd5b6133a886828701613116565b600081518084526020840193506020830160005b8281101561372b57815186526020958601959091019060010161370d565b5093949350505050565b60208152600060c0820183516020840152602084015115156040840152604084015160a0606085015281815180845260e086019150602083019350600092505b808310156137a05783516001600160a01b031682526020938401936001939093019290910190613775565b506060860151858203601f1901608087015292506137be81846136f9565b9250505060808401516114f660a085018215159052565b634e487b7160e01b600052601160045260246000fd5b6000816137fa576137fa6137d5565b506000190190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610953576109536137d5565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561385357600080fd5b8151612f6f81612feb565b80820180821115610953576109536137d5565b60006020828403121561388357600080fd5b8151612f6f81613000565b6060815260006138a160608301866136f9565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156138ce57600080fd5b5051919050565b6000600182016138e7576138e76137d5565b5060010190565b600082516139008184602087016135a1565b919091019291505056fe2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220ac88b5016d296e3a47d224faf1b2ba2f327a46e227dcceb3d51524e23a44130664736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70480275 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0x99EA24FE GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xB6F4FE98 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xB6F4FE98 EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xB8E8F98E EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0xCAAE24B3 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x99EA24FE EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0xB303F53F EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xB6F1D140 EQ PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8D13660E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D13660E EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4EB JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0x9981007B EQ PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70480275 EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x86778641 EQ PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x529E2B32 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x529E2B32 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x40033B3D EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x4A200FA5 EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x240028E8 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x240028E8 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x24D7806C EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x277148E3 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x107E472 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2236026 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x5059571 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x265 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x65C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x2F9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x300E JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x9F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0xC7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x379 CALLDATASIZE PUSH1 0x4 PUSH2 0x32B9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x3339 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x233 PUSH2 0x3BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33B2 JUMP JUMPDEST PUSH2 0x1149 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E4 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x345D JUMP JUMPDEST PUSH2 0x1168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x34C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x14FE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x20A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x444 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x151B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x16CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x1879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x18DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3536 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x331 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x1B1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x1BA5 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x54C CALLDATASIZE PUSH1 0x4 PUSH2 0x3559 JUMP JUMPDEST PUSH2 0x1C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x582 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 PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x35C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AF PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x201D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3631 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x34FE JUMP JUMPDEST PUSH2 0x2138 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x5EA CALLDATASIZE PUSH1 0x4 PUSH2 0x368A JUMP JUMPDEST PUSH2 0x2414 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60F PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x32B9 JUMP JUMPDEST PUSH2 0x25EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3735 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x637 CALLDATASIZE PUSH1 0x4 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x2677 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x3090 JUMP JUMPDEST PUSH2 0x2702 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x5 ADD 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 0x6B7 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 0x699 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x6F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP7 MSTORE DUP2 DUP5 MSTORE SWAP2 DUP6 KECCAK256 DUP9 SWAP1 SSTORE SWAP4 DUP10 SWAP1 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP1 DUP3 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE PUSH2 0x789 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP4 SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x7EB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xFF AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x88B JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x878 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x953 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x8B0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x8C2 DUP4 PUSH2 0x37EB JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x8F5 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x94C JUMPI PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x984 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x9AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 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 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA24 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP6 MLOAD EQ ISZERO DUP1 PUSH2 0xA37 JUMPI POP DUP2 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xA44 JUMPI POP DUP1 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xA62 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 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 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA9B JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0xC76 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xAB9 JUMPI PUSH2 0xAB9 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xADA JUMPI PUSH2 0xADA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB4D JUMPI PUSH2 0xB4D PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xB7C JUMPI PUSH2 0xB7C PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB9D JUMPI PUSH2 0xB9D PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0xC28 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC0A JUMPI PUSH2 0xC0A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xC3A JUMPI PUSH2 0xC3A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0xA9E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE8 PUSH2 0x27A6 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 0xD0F JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xD2B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xD39 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xD57 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 PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xD81 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xDA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB0 PUSH2 0x27CF JUMP JUMPDEST PUSH2 0xDB8 PUSH2 0x27D7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x9 SSTORE PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE09 JUMPI PUSH2 0xE09 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEC9 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 ADD PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE3A JUMPI PUSH2 0xE3A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE8B JUMPI PUSH2 0xE8B PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEF2 JUMPI PUSH2 0xEF2 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFF3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xFA9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 SWAP1 SWAP5 MSTORE SWAP2 DUP5 KECCAK256 DUP4 SWAP1 SSTORE DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xED5 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH32 0x54CDD369E4E8A8515E52CA72EC816C2101831AD1F18BF44102ED171459C9B4F8 SLOAD PUSH1 0xFF AND PUSH2 0x10C4 JUMPI PUSH32 0x54CDD369E4E8A8515E52CA72EC816C2101831AD1F18BF44102ED171459C9B4F8 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 PUSH1 0x20 MSTORE PUSH32 0x6D5257204EBE7D88FD91AE87941CB2DD9D8062B64AE5A2BD2D28EC40B9FBF6DF DUP2 SWAP1 SSTORE SWAP2 DUP3 ADD DUP2 SSTORE PUSH1 0x0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0x17EF568E3E12AB5B9C7254A8D58478811DE00F9E6EB34345ACD53BF8FD09D3EC DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x113F 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 POP JUMP JUMPDEST PUSH2 0x1151 PUSH2 0x27E7 JUMP JUMPDEST PUSH2 0x115A DUP3 PUSH2 0x288C JUMP JUMPDEST PUSH2 0x1164 DUP3 DUP3 PUSH2 0x28BA JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x119B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x11BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11D8 JUMPI PUSH2 0x11D8 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1201 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x122A JUMPI PUSH2 0x122A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1266 JUMPI PUSH2 0x1266 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x12BE JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12A8 JUMPI PUSH2 0x12A8 PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x14EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x12D8 JUMPI PUSH2 0x12D8 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0x138A JUMPI DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1328 JUMPI PUSH2 0x1328 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1359 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1375 JUMPI PUSH2 0x1375 PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH2 0x14EB JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x13C3 JUMPI PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13AA JUMPI PUSH2 0x13AA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP POP POP PUSH2 0x14EE JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x13D5 DUP4 PUSH2 0x37EB JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13EC JUMPI PUSH2 0x13EC PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1406 JUMPI PUSH2 0x1406 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x390B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x143A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x14C6 JUMPI PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP6 MLOAD DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x146E JUMPI PUSH2 0x146E PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1488 JUMPI PUSH2 0x1488 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x14DA JUMPI PUSH2 0x14DA PUSH2 0x3802 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1207 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1508 PUSH2 0x297C JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 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 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x15DE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x7 SWAP1 SWAP5 MSTORE SWAP2 DUP5 KECCAK256 DUP4 SWAP1 SSTORE DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1655 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x167C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 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 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x16FB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 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 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1842 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1759 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3818 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x17E3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1779 JUMPI PUSH2 0x1779 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x17A8 JUMPI PUSH2 0x17A8 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP1 SLOAD DUP1 PUSH2 0x17F4 JUMPI PUSH2 0x17F4 PUSH2 0x382B 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBEA12876694C4055C71F74308F752B9027CF3D554194000A366ABDDFC239A306 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x18A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x18E4 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1908 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x193C JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1983 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 0x19A7 SWAP2 SWAP1 PUSH2 0x3841 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x19CE JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1A3E CALLER DUP6 PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 CALLER SWAP2 PUSH32 0xD0DE3E759B6D8AE4AB8DFD56F0869B691034BF2F14B896155287E5CD61D66A70 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AC7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B45 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BA3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x4AB5BE82436D353E61CA18726E984E561F5C1CC7C6D38B29D2553C790434705A SWAP1 DUP3 SWAP1 LOG3 JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1BD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1C0E JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP3 SWAP1 SSTORE PUSH2 0x1C4D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C89 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1C9E PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CC2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1CFB JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D21 JUMPI PUSH2 0x1D21 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1DB2 JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D86 JUMPI PUSH2 0x1D86 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1DAB SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E16 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1DCB JUMPI PUSH2 0x1DCB PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x1E13 SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CFF JUMP JUMPDEST POP DUP1 DUP3 EQ PUSH2 0x1E3F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1EE7 JUMPI DUP2 CALLVALUE EQ PUSH2 0x1E6D JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLVALUE SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EBA 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 0x1EBF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1F88 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F42 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 0x1F66 SWAP2 SWAP1 PUSH2 0x3871 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1F86 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1FBF JUMPI PUSH2 0x1FB7 CALLER DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FAA JUMPI PUSH2 0x1FAA PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1F8B JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BE07A645F06BFA8B189B4F0ABA9BF2109D098D03CBEDE0449641495BBA5D53D DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1FFD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x388E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x203A JUMPI PUSH2 0x203A PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2091 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x207E PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2058 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 MLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x20CF JUMPI PUSH2 0x20CF PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x2125 JUMPI PUSH2 0x2125 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2097 JUMP JUMPDEST PUSH2 0x2140 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2164 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x2198 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x21D1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x22AE JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE DUP2 EQ PUSH2 0x2214 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP4 EQ PUSH2 0x2234 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLVALUE SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2281 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 0x2286 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x22A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2393 JUMP JUMPDEST POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 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 DUP3 DUP2 EQ PUSH2 0x22F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP7 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234D 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 0x2371 SWAP2 SWAP1 PUSH2 0x3871 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2391 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH2 0x239D CALLER DUP7 PUSH2 0x29FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE DUP2 DUP4 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 CALLER SWAP2 PUSH32 0xB46DC51DF9908947F62607B9C4761B3AB411F6DA0BB32C44477B87AC8775D8BE SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH2 0x1A9C PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2444 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP4 MLOAD EQ PUSH2 0x2466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 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 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x249F JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x25E4 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24BD JUMPI PUSH2 0x24BD PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24DE JUMPI PUSH2 0x24DE PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP4 MSTORE SWAP4 MSTORE KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2566 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2527 JUMPI PUSH2 0x2527 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2548 JUMPI PUSH2 0x2548 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2582 JUMPI PUSH2 0x2582 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x25BD JUMPI PUSH2 0x25BD PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x25D4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x24A2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2620 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x2639 DUP6 PUSH2 0x2B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x2 DUP8 ADD SLOAD DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 SWAP8 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP3 ISZERO PUSH1 0x80 DUP5 ADD MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x26CF JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x26F4 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x953 JUMP JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO ISZERO SWAP1 POP PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x272D JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 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 0x2754 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x4AB5BE82436D353E61CA18726E984E561F5C1CC7C6D38B29D2553C790434705A SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x953 JUMP JUMPDEST PUSH2 0x1BA3 PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x27DF PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x1BA3 PUSH2 0x2DA5 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x286E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2862 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B 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 0x1BA3 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 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP 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 0x2914 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2911 SWAP2 DUP2 ADD SWAP1 PUSH2 0x38BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2941 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2972 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST PUSH2 0x1A9C DUP4 DUP4 PUSH2 0x2DAD JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1BA3 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 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 NOT ADD PUSH2 0x29F7 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x2 SWAP3 DUP4 SWAP1 MSTORE SWAP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 DUP2 SWAP1 SUB PUSH2 0x2A6B JUMPI PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A49 JUMPI POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP3 SSTORE PUSH1 0x0 PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x25E4 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2AE2 JUMPI DUP1 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2A8C SWAP2 SWAP1 PUSH2 0x385E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP5 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xB76ABE3C068FCCAE7AC0F9377F48F7261DCF952179A37060C5DE877A493E67B7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x25E4 JUMP JUMPDEST TIMESTAMP DUP3 SSTORE PUSH1 0x1 DUP1 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x394B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BDE JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B42 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x2BD5 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2B9A JUMPI POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2BBF JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2BD3 JUMPI DUP5 PUSH2 0x2BCF DUP2 PUSH2 0x38D5 JUMP JUMPDEST SWAP6 POP POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2B23 JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BF7 JUMPI PUSH2 0x2BF7 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C20 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C3B JUMPI PUSH2 0x2C3B PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C64 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 PUSH1 0x5 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x2D6E JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2CE2 JUMPI POP PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2D07 JUMP JUMPDEST POP PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2D6C JUMPI DUP2 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2D20 JUMPI PUSH2 0x2D20 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP1 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2D53 JUMPI PUSH2 0x2D53 PUSH2 0x3802 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 PUSH2 0x2D68 DUP2 PUSH2 0x38D5 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2C6B JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2D88 PUSH2 0x2E03 JUMP JUMPDEST PUSH2 0x1BA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B02 PUSH2 0x2D80 JUMP JUMPDEST PUSH2 0x2DB6 DUP3 PUSH2 0x2E1D 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 0x2DFB JUMPI PUSH2 0x1A9C DUP3 DUP3 PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0x1164 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E0D PUSH2 0x27A6 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 0x2E53 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x392B 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 0x2E9F SWAP2 SWAP1 PUSH2 0x38EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EDA 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 0x2EDF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2EEF DUP6 DUP4 DUP4 PUSH2 0x2F17 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1BA3 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 0x2F2C JUMPI PUSH2 0x2F27 DUP3 PUSH2 0x2F76 JUMP JUMPDEST PUSH2 0x2F6F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2F43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2F6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2938 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F86 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2FB9 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x28B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x28B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3038 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3056 DUP2 PUSH2 0x3000 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3082 DUP2 PUSH2 0x2FEB 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 0x30A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F6F DUP2 PUSH2 0x2FEB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x30EB JUMPI PUSH2 0x30EB PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x310C JUMPI PUSH2 0x310C PUSH2 0x30AD JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x313A PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST PUSH2 0x30C3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x315C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x3161 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x31A2 PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x31C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD PUSH2 0x31DC DUP2 PUSH2 0x3000 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x31C9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3224 DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3235 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x325C DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3284 DUP9 DUP3 DUP10 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x32A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32AC DUP9 DUP3 DUP10 ADD PUSH2 0x3183 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32F1 PUSH2 0x3135 DUP3 PUSH2 0x30F3 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x3313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3179 JUMPI DUP1 CALLDATALOAD PUSH2 0x332B DUP2 PUSH2 0x2FEB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x3318 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x334E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3359 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3380 DUP7 DUP3 DUP8 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x339C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33A8 DUP7 DUP3 DUP8 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33D0 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x33EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x33FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3415 JUMPI PUSH2 0x3415 PUSH2 0x30AD JUMP JUMPDEST PUSH2 0x3428 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x30C3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x343D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3492 DUP6 DUP3 DUP7 ADD PUSH2 0x32D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x34AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34BA DUP6 DUP3 DUP7 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x34DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3525 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD PUSH2 0x953 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x356E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3590 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3525 DUP2 PUSH2 0x2FEB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35A4 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x35E4 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x35A1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x360B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3616 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x34AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2FE0 JUMPI PUSH2 0x3674 DUP4 DUP6 MLOAD DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x364B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x36B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C1 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36D2 DUP2 PUSH2 0x2FEB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x36ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33A8 DUP7 DUP3 DUP8 ADD PUSH2 0x3116 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x372B JUMPI DUP2 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x370D JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP4 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x60 DUP6 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0xE0 DUP7 ADD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP4 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x37A0 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3775 JUMP JUMPDEST POP PUSH1 0x60 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP8 ADD MSTORE SWAP3 POP PUSH2 0x37BE DUP2 DUP5 PUSH2 0x36F9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x14F6 PUSH1 0xA0 DUP6 ADD DUP3 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x37FA JUMPI PUSH2 0x37FA PUSH2 0x37D5 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x953 JUMPI PUSH2 0x953 PUSH2 0x37D5 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 0x3853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F6F DUP2 PUSH2 0x2FEB JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x953 JUMPI PUSH2 0x953 PUSH2 0x37D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F6F DUP2 PUSH2 0x3000 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x38A1 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x37D5 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3900 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x35A1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID 0x2C 0xCC PUSH13 0x74B339E9D58B89AA6BB58D0519 PUSH18 0x2AEFF106F7981D466F54572CB88B42360894 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 0xD1 STATICCALL CHAINID 0xE0 PUSH18 0x723D6817E2486D003BECC55F00A264697066 PUSH20 0x58221220AC88B5016D296E3A47D224FAF1B2BA2F ORIGIN PUSH27 0x46E227DCCEB3D51524E23A44130664736F6C634300081C00330000 ","sourceMap":"716:27615:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12788:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6566:677;;;;;;;;;;-1:-1:-1;6566:677:15;;;;;:::i;:::-;;:::i;:::-;;21530:1272;;;;;;;;;;-1:-1:-1;21530:1272:15;;;;;:::i;:::-;;:::i;:::-;;;2297:14:18;;2290:22;2272:41;;2260:2;2245:18;21530:1272:15;2132:187:18;5371:192:15;;;;;;;;;;-1:-1:-1;5371:192:15;;;;;:::i;:::-;;:::i;12497:125::-;;;;;;;;;;-1:-1:-1;12497:125:15;;;;;:::i;:::-;-1:-1:-1;;;;;12584:31:15;12561:4;12584:31;;;:24;:31;;;;;;;;;12497:125;4897:112;;;;;;;;;;-1:-1:-1;4897:112:15;;;;;:::i;:::-;-1:-1:-1;;;;;4977:25:15;4954:4;4977:25;;;:16;:25;;;;;;;;;4897:112;7533:1107;;;;;;;;;;-1:-1:-1;7533:1107:15;;;;;:::i;:::-;;:::i;6138:96::-;;;;;;;;;;-1:-1:-1;6210:17:15;;-1:-1:-1;;;;;6210:17:15;6138:96;;;-1:-1:-1;;;;;6021:32:18;;;6003:51;;5991:2;5976:18;6138:96:15;5857:203:18;28226:103:15;;;;;;;;;;;;;:::i;8777:140::-;;;;;;;;;;-1:-1:-1;8777:140:15;;;;;:::i;:::-;8844:4;8867:34;;;:23;:34;;;;;:43;;;;;;8777:140;1859:1878;;;;;;;;;;-1:-1:-1;1859:1878:15;;;;;:::i;:::-;;:::i;4161:214:1:-;;;;;;:::i;:::-;;:::i;22992:1834:15:-;;;;;;;;;;-1:-1:-1;22992:1834:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3708:134:1:-;;;;;;;;;;;;;:::i;:::-;;;10047:25:18;;;10035:2;10020:18;3708:134:1;9901:177:18;3792:91:15;;;;;;;;;;-1:-1:-1;3860:16:15;;3792:91;;10927:391;;;;;;;;;;-1:-1:-1;10927:391:15;;;;;:::i;:::-;;:::i;5094:186::-;;;;;;;;;;-1:-1:-1;5094:186:15;;;;;:::i;:::-;;:::i;11473:877::-;;;;;;;;;;-1:-1:-1;11473:877:15;;;;;:::i;:::-;;:::i;28077:98::-;;;;;;;;;;;;;:::i;17053:646::-;;;;;;;;;;-1:-1:-1;17053:646:15;;;;;:::i;:::-;;:::i;21157:216::-;;;;;;;;;;-1:-1:-1;21157:216:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4601:157::-;;;;;;;;;;-1:-1:-1;4707:7:15;4737:14;-1:-1:-1;;;;;4737:14:15;4601:157;;3956:307;;;;;;;;;;;;;:::i;9202:507::-;;;;;;;;;;-1:-1:-1;9202:507:15;;;;;:::i;:::-;;:::i;15098:1778::-;;;;;;:::i;:::-;;:::i;1819:58:1:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:1;;;;;;;;;;;;:::i;20482:511:15:-;;;;;;;;;;-1:-1:-1;20482:511:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13202:1636::-;;;;;;:::i;:::-;;:::i;9953:756::-;;;;;;;;;;-1:-1:-1;9953:756:15;;;;;:::i;:::-;;:::i;25060:754::-;;;;;;;;;;-1:-1:-1;25060:754:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19594:705::-;;;;;;;;;;-1:-1:-1;19594:705:15;;;;;:::i;:::-;;:::i;5752:283::-;;;;;;;;;;-1:-1:-1;5752:283:15;;;;;:::i;:::-;;:::i;12788:125::-;12844:16;12879:8;:27;;12872:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12872:34:15;;;;;;;;;;;;;;;;;;;;;;;12788:125;:::o;6566:677::-;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;-1:-1:-1;;;;;6755:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;::::1;;6750:63;;6795:18;;-1:-1:-1::0;;;6795:18:15::1;;;;;;;;;;;6750:63;6824:8;:34:::0;;;:23:::1;:34;::::0;;;;;;;-1:-1:-1;;;;;6824:53:15;::::1;::::0;;;;;;;;;:61;;;6895:34;;;;;;;;:44;;::::1;:56:::0;;;6961:43:::1;::::0;;::::1;:54:::0;;-1:-1:-1;;6961:54:15::1;::::0;::::1;;;::::0;;7086:104:::1;;7125:8;:34:::0;;;:23:::1;:34;::::0;;;;:46:::1;;:54:::0;;;7086:104:::1;7205:31;::::0;7226:9;;7205:31:::1;::::0;;;::::1;6566:677:::0;;;;;:::o;21530:1272::-;1193:10;21634:4;1176:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;-1:-1:-1;;;;;21706:43:15;::::1;21650:53;21706:43:::0;;;:37:::1;:43;::::0;;;;;;;:54;;;;;;;;21776:18:::1;::::0;::::1;::::0;::::1;;21771:76;;21817:19;;-1:-1:-1::0;;;21817:19:15::1;;;;;;;;;;;21771:76;21932:17;21952:34:::0;;;:23:::1;:34;::::0;;;;;;:44:::1;::::0;;22011:14;;;22007:789:::1;;22139:9;22133:4;-1:-1:-1::0;;;;;22120:32:15::1;-1:-1:-1::0;;;;;;;;;;;22150:1:15::1;22120:32;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;22120:32:15::1;;;;;;;;22198:4;22191:11;;;;;;22007:789;22300:10;:25;;;22329:1;22300:30:::0;22296:95:::1;;22357:19;;-1:-1:-1::0;;;22357:19:15::1;;;;;;;;;;;22296:95;22437:25;::::0;::::1;:27:::0;;;:25:::1;:27;::::0;::::1;:::i;:::-;;;;;;22503:9;22497:4;-1:-1:-1::0;;;;;22484:56:15::1;-1:-1:-1::0;;;;;;;;;;;22514:10:15::1;:25;;;22484:56;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;22484:56:15::1;;;;;;;;22612:10;:25;;;22641:1;22612:30:::0;22608:152:::1;;22662:18;::::0;::::1;:26:::0;;-1:-1:-1;;22662:26:15::1;::::0;;22711:34:::1;::::0;22735:9;;-1:-1:-1;;;;;22711:34:15;::::1;::::0;::::1;::::0;22683:5:::1;::::0;22711:34:::1;22608:152;22781:4;22774:11;;;;1233:1;21530:1272:::0;;;;:::o;5371:192::-;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;-1:-1:-1;;;;;5440:19:15;::::1;5436:45;;5468:13;;-1:-1:-1::0;;;5468:13:15::1;;;;;;;;;;;5436:45;-1:-1:-1::0;;;;;5491:23:15;::::1;5517:5;5491:23:::0;;;:16:::1;:23;::::0;;;;;:31;;-1:-1:-1;;5491:31:15::1;::::0;;5537:19;::::1;::::0;5517:5;5537:19:::1;5371:192:::0;:::o;7533:1107::-;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;7804:6:::1;:13;7783:10;:17;:34;;:88;;;;7854:10;:17;7833:10;:17;:38;;7783:88;:145;;;;7908:13;:20;7887:10;:17;:41;;7783:145;7766:201;;;7946:21;;-1:-1:-1::0;;;7946:21:15::1;;;;;;;;;;;7766:201;-1:-1:-1::0;;;;;7982:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;::::1;;7977:63;;8022:18;;-1:-1:-1::0;;;8022:18:15::1;;;;;;;;;;;7977:63;8056:9;8051:583;8075:10;:17;8071:1;:21;8051:583;;;8173:6;8197:1;8173:39;;;;;;;;:::i;:::-;;;;;;;8113:8;:23;;:38;8137:10;8148:1;8137:13;;;;;;;;:::i;:::-;;;;;;;8113:38;;;;;;;;;;;:50;;:57;8164:5;-1:-1:-1::0;;;;;8113:57:15::1;-1:-1:-1::0;;;;;8113:57:15::1;;;;;;;;;;;;:99;;;;8277:10;8288:1;8277:13;;;;;;;;:::i;:::-;;;;;;;8226:8;:23;;:38;8250:10;8261:1;8250:13;;;;;;;;:::i;:::-;;;;;;;8226:38;;;;;;;;;;;:48;;:64;;;;8354:13;8368:1;8354:16;;;;;;;;:::i;:::-;;;;;;;8304:8;:23;;:38;8328:10;8339:1;8328:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;8304:38;;;::::1;::::0;;;;;;-1:-1:-1;8304:38:15;:47:::1;;:66:::0;;-1:-1:-1;;8304:66:15::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;;;8453:19:15;::::1;8449:120;;8545:6;8552:1;8545:9;;;;;;;;:::i;:::-;;;;;;;8492:8;:23;;:38;8516:10;8527:1;8516:13;;;;;;;;:::i;:::-;;;;;;;8492:38;;;;;;;;;;;:50;;:62;;;;8449:120;8609:10;8620:1;8609:13;;;;;;;;:::i;:::-;;;;;;;8588:35;;;;;;;;;;8094:3;;8051:583;;;;7533:1107:::0;;;;;:::o;28226:103::-;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;28274:15:::1;:23:::0;;-1:-1:-1;;28274:23:15::1;::::0;;28312:10:::1;::::0;::::1;::::0;28292:5:::1;::::0;28312:10:::1;28226:103::o:0;1859:1878::-;4158:30:0;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:0;-1:-1:-1;;;4302:15:0;;;4301:16;;-1:-1:-1;;;;;4348:14:0;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:0;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:0;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:0;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:0;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:0;-1:-1:-1;;;5011:22:0;;;4977:67;-1:-1:-1;;;;;2040:26:15;::::1;2036:52;;2075:13;;-1:-1:-1::0;;;2075:13:15::1;;;;;;;;;;;2036:52;2099:24;:22;:24::i;:::-;2133;:22;:24::i;:::-;2168:8;:29:::0;;-1:-1:-1;;;;;;2168:29:15::1;-1:-1:-1::0;;;;;2168:29:15;::::1;;::::0;;-1:-1:-1;2207:16:15::1;:20:::0;2237:15:::1;:23:::0;;-1:-1:-1;;2237:23:15::1;::::0;;2301:236:::1;2325:13;:20;2321:1;:24;2301:236;;;2398:1;-1:-1:-1::0;;;;;2370:30:15::1;:13;2384:1;2370:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2370:30:15::1;;2366:161;;2457:4;2420:8;:16;;:34;2437:13;2451:1;2437:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2420:34:15::1;-1:-1:-1::0;;;;;2420:34:15::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;2495:13;2509:1;2495:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2484:28:15::1;;;;;;;;;;;2366:161;2347:3;;2301:236;;;;2592:9;2587:659;2611:23;:30;2607:1;:34;2587:659;;;2662:13;2678:23;2702:1;2678:26;;;;;;;;:::i;:::-;;;;;;;2662:42;;2739:1;-1:-1:-1::0;;;;;2722:19:15::1;:5;-1:-1:-1::0;;;;;2722:19:15::1;;2718:518;;-1:-1:-1::0;;;;;2815:27:15;::::1;:8;:27:::0;;;:20:::1;:27;::::0;;;;;::::1;;2810:307;;-1:-1:-1::0;;;;;2866:27:15;::::1;:8;:27:::0;;;:20:::1;:27;::::0;;;;;;;:34;;-1:-1:-1;;2866:34:15::1;2896:4;2866:34:::0;;::::1;::::0;;;2953:52:::1;:84:::0;;2922:21:::1;:28:::0;;;;;;:115;;;3059:39;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;3059:39:15::1;::::0;;::::1;::::0;;2810:307:::1;-1:-1:-1::0;;;;;3134:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;:38;;-1:-1:-1;;3134:38:15::1;3168:4;3134:38;::::0;;3195:26;::::1;::::0;3134:8;3195:26:::1;2718:518;-1:-1:-1::0;2643:3:15::1;;2587:659;;;-1:-1:-1::0;3342:8:15::1;:32:::0;;:20:::1;:32;::::0;;;::::1;;3337:279;;3390:32:::0;:39;;-1:-1:-1;;3390:39:15::1;3425:4;3390:39:::0;;::::1;::::0;;;3479:44:::1;:68:::0;;3443:21:::1;3390:32;3443:33:::0;;:104;;;3561:44;;::::1;::::0;;3390:8:::1;3561:44:::0;;::::1;::::0;;-1:-1:-1;;;;;;3561:44:15::1;::::0;;3337:279:::1;3687:8;:36:::0;;:24:::1;:36;::::0;;:43;;-1:-1:-1;;3687:43:15::1;3726:4;3687:43;::::0;;5064:101:0;;;;5098:23;;-1:-1:-1;;;;5098:23:0;;;5140:14;;-1:-1:-1;17096:50:18;;5140:14:0;;17084:2:18;17069:18;5140:14:0;;;;;;;5064:101;4092:1079;;;;;1859:1878:15;;;:::o;4161:214:1:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;22992:1834:15:-;1193:10;1176:8;:28;;;:16;:28;;;;;;23121:13;;1176:28;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;23166:10:::1;:17;23150:5;:12;:33;23146:67;;23192:21;;-1:-1:-1::0;;;23192:21:15::1;;;;;;;;;;;23146:67;23224:21;23259:5;:12;-1:-1:-1::0;;;;;23248:24:15::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;23248:24:15::1;;23224:48;;23288:9;23283:1512;23307:5;:12;23303:1;:16;23283:1512;;;23340:53;23396:8:::0;:41:::1;;:51;23438:5;23444:1;23438:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;23396:51:15::1;-1:-1:-1::0;;;;;23396:51:15::1;;;;;;;;;;;;:66;23448:10;23459:1;23448:13;;;;;;;;:::i;:::-;;;;;;;23396:66;;;;;;;;;;;23340:122;;23482:10;:18;;;;;;;;;;;;23477:102;;23533:5;23520:7;23528:1;23520:10;;;;;;;;:::i;:::-;:18:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:18;-1:-1:-1;23556:8:15::1;;23477:102;23672:17;23692:8:::0;:40:::1;;:55;23733:10;23744:1;23733:13;;;;;;;;:::i;:::-;;;;;;;23692:55;;;;;;;;;;;:82;;;23672:102;;23793:9;23806:1;23793:14:::0;23789:996:::1;;23933:10;23944:1;23933:13;;;;;;;;:::i;:::-;;;;;;;23923:5;23929:1;23923:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;23910:40:15::1;-1:-1:-1::0;;;;;;;;;;;23948:1:15::1;23910:40;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;23910:40:15::1;;;;;;;;24006:4;23993:7;24001:1;23993:10;;;;;;;;:::i;:::-;:17:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:17;23789:996:::1;;;24120:10;:25;;;24149:1;24120:30:::0;24116:125:::1;;24187:5;24174:7;24182:1;24174:10;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;::::0;::::1;24214:8;;;;24116:125;24295:25;::::0;::::1;:27:::0;;;:25:::1;:27;::::0;::::1;:::i;:::-;;;;;;24409:10;24420:1;24409:13;;;;;;;;:::i;:::-;;;;;;;24379:5;24385:1;24379:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24345:142:15::1;-1:-1:-1::0;;;;;;;;;;;24444:10:15::1;:25;;;24345:142;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;24345:142:15::1;;;;;;;;24567:10;:25;;;24596:1;24567:30:::0;24563:172:::1;;24621:18;::::0;::::1;:26:::0;;-1:-1:-1;;24621:26:15::1;::::0;;24702:13;;:10;;24713:1;;24702:13;::::1;;;;;:::i;:::-;;;;;;;24692:5;24698:1;24692:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24674:42:15::1;;;;;;;;;;;24563:172;24766:4;24753:7;24761:1;24753:10;;;;;;;;:::i;:::-;:17:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:17;23789:996:::1;23326:1469;;23283:1512;23321:3;;23283:1512;;;-1:-1:-1::0;24812:7:15;22992:1834;-1:-1:-1;;;22992:1834:15:o;3708:134:1:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:1;:::o;10927:391:15:-;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;-1:-1:-1;;;;;11003:27:15;::::1;:8;:27:::0;;;:20:::1;:27;::::0;;;;;::::1;;10998:225;;-1:-1:-1::0;;;;;11046:27:15;::::1;:8;:27:::0;;;:20:::1;:27;::::0;;;;;;;:34;;-1:-1:-1;;11046:34:15::1;11076:4;11046:34:::0;;::::1;::::0;;;11125:27:::1;:34:::0;;11094:21:::1;:28:::0;;;;;;:65;;;11173:39;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11173:39:15::1;::::0;;::::1;::::0;;10998:225:::1;-1:-1:-1::0;;;;;11232:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;:38;;-1:-1:-1;;11232:38:15::1;11266:4;11232:38;::::0;;11285:26;::::1;::::0;11232:8;11285:26:::1;10927:391:::0;:::o;5094:186::-;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;-1:-1:-1;;;;;5160:19:15;::::1;5156:45;;5188:13;;-1:-1:-1::0;;;5188:13:15::1;;;;;;;;;;;5156:45;-1:-1:-1::0;;;;;5211:23:15;::::1;:8;:23:::0;;;5237:4:::1;5211:23;::::0;;;;;;;:30;;-1:-1:-1;;5211:30:15::1;::::0;;::::1;::::0;;;5256:17;::::1;::::0;5211:8;5256:17:::1;5094:186:::0;:::o;11473:877::-;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;-1:-1:-1;;;;;11547:31:15;::::1;11581:5;11547:31:::0;;;:24:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;11547:39:15::1;::::0;;11601:20:::1;:27:::0;;;;;;11547:39:::1;11601:27;11597:703;;;-1:-1:-1::0;;;;;11665:28:15;::::1;11644:18;11665:28:::0;;;:21:::1;:28;::::0;;;;;11727:27:::1;:34:::0;11665:28;;11644:18;11727:38:::1;::::0;11764:1:::1;::::0;11727:38:::1;:::i;:::-;11707:58;;11872:9;11858:10;:23;11854:252;;11901:17;11921:8:::0;:27:::1;;11949:9;11921:38;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11977:27:::1;:39:::0;;-1:-1:-1;;;;;11921:38:15;;::::1;::::0;-1:-1:-1;11921:38:15;;12005:10;;11977:39;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:51:::0;;-1:-1:-1;;;;;;11977:51:15::1;-1:-1:-1::0;;;;;11977:51:15;;::::1;;::::0;;12046:32;;;::::1;::::0;;:21:::1;:32:::0;;;;;;:45;;;11854:252:::1;12159:27;:33:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;12159:33:15;;;;;-1:-1:-1;;;;;;12159:33:15::1;::::0;;;;;;;;-1:-1:-1;;;;;12213:27:15;::::1;::::0;;:20:::1;:27:::0;;;;;;12206:34;;-1:-1:-1;;12206:34:15::1;::::0;;12261:21:::1;:28:::0;;;;;12254:35;-1:-1:-1;;11597:703:15::1;12315:28;::::0;-1:-1:-1;;;;;12315:28:15;::::1;::::0;::::1;::::0;;;::::1;11473:877:::0;:::o;28077:98::-;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;28123:15:::1;:22:::0;;-1:-1:-1;;28123:22:15::1;28141:4;28123:22;::::0;;28160:8:::1;::::0;::::1;::::0;28123::::1;::::0;28160::::1;28077:98::o:0;17053:646::-;3395:21:2;:19;:21::i;:::-;1286:15:15::1;::::0;::::1;;1282:44;;;1310:16;;-1:-1:-1::0;;;1310:16:15::1;;;;;;;;;;;1282:44;1406:8:::2;:34:::0;;;:23:::2;:34;::::0;;;;:43:::2;;::::0;17214:9;;1406:43:::2;;1401:85;;1470:16;;-1:-1:-1::0;;;1470:16:15::2;;;;;;;;;;;1401:85;17270:37:::3;::::0;-1:-1:-1;;;17270:37:15;;::::3;::::0;::::3;10047:25:18::0;;;17311:10:15::3;::::0;-1:-1:-1;;;;;17270:28:15;::::3;::::0;::::3;::::0;10020:18:18;;17270:37:15::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17270:51:15::3;;17266:95;;17342:19;;-1:-1:-1::0;;;17342:19:15::3;;;;;;;;;;;17266:95;17439:69;::::0;-1:-1:-1;;;17439:69:15;;17473:10:::3;17439:69;::::0;::::3;17880:51:18::0;17493:4:15::3;17947:18:18::0;;;17940:60;18016:18;;;18009:34;;;-1:-1:-1;;;;;17439:33:15;::::3;::::0;::::3;::::0;17853:18:18;;17439:69:15::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;17553:44;17575:10;17587:9;17553:21;:44::i;:::-;17635:57;::::0;;-1:-1:-1;;;;;18246:32:18;;18228:51;;18310:2;18295:18;;18288:34;;;17660:9:15;;17648:10:::3;::::0;17635:57:::3;::::0;18201:18:18;17635:57:15::3;;;;;;;1336:1:::2;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;3437:20;17053:646:15;;;:::o;21157:216::-;21265:41;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;21265:41:15;-1:-1:-1;;;;;;21325:30:15;;:8;:30;;;:24;:30;;;;;;;;:41;;;;;;;;;21318:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21157:216;;;;:::o;3956:307::-;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;4094:17:::1;::::0;-1:-1:-1;;;;;4094:17:15::1;4090:167;;4169:8;:14:::0;;4141:17:::1;:43:::0;;-1:-1:-1;;;;;;4141:43:15::1;-1:-1:-1::0;;;;;4169:14:15;;::::1;4141:43:::0;;::::1;::::0;;4203::::1;::::0;4169:14;;:8;4203:43:::1;::::0;4169:8;;4203:43:::1;4090:167;3956:307::o:0;9202:507::-;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;-1:-1:-1;;;;;9340:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;::::1;;9335:63;;9380:18;;-1:-1:-1::0;;;9380:18:15::1;;;;;;;;;;;9335:63;9409:8;:34:::0;;;:23:::1;:34;::::0;;;;;;;-1:-1:-1;;;;;9409:53:15;::::1;::::0;;;;;;;;:61;;;9541:104:::1;;9580:8;:34:::0;;;:23:::1;:34;::::0;;;;:46:::1;;:54:::0;;;9541:104:::1;9689:5;-1:-1:-1::0;;;;;9660:42:15::1;9678:9;9660:42;9696:5;9660:42;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;9660:42:15::1;;;;;;;;9202:507:::0;;;:::o;15098:1778::-;3395:21:2;:19;:21::i;:::-;1286:15:15::1;::::0;::::1;;1282:44;;;1310:16;;-1:-1:-1::0;;;1310:16:15::1;;;;;;;;;;;1282:44;-1:-1:-1::0;;;;;15282:38:15;::::2;:8;:38:::0;;;:24:::2;:38;::::0;;;;;::::2;;15277:70;;15329:18;;-1:-1:-1::0;;;15329:18:15::2;;;;;;;;;;;15277:70;15358:21;15398:9:::0;15393:516:::2;15417:10;:17;15413:1;:21;15393:516;;;15460:8;:23;;:38;15484:10;15495:1;15484:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;15460:38;;;::::2;::::0;;;;;;-1:-1:-1;15460:38:15;:47:::2;;::::0;::::2;;15455:93;;15532:16;;-1:-1:-1::0;;;15532:16:15::2;;;;;;;;;;;15455:93;-1:-1:-1::0;;;;;15567:26:15;::::2;15563:336;;15630:8;:44;;:59;15675:10;15686:1;15675:13;;;;;;;;:::i;:::-;;;;;;;15630:59;;;;;;;;;;;:92;;;15613:109;;;;;:::i;:::-;;;15563:336;;;15778:8;:44;;:59;15823:10;15834:1;15823:13;;;;;;;;:::i;:::-;;;;;;;15778:59;;;;;;;;;;;:92;;:106;15871:12;-1:-1:-1::0;;;;;15778:106:15::2;-1:-1:-1::0;;;;;15778:106:15::2;;;;;;;;;;;;;15761:123;;;;;:::i;:::-;;;15563:336;15436:3;;15393:516;;;;15938:13;15923:11;:28;15919:62;;15960:21;;-1:-1:-1::0;;;15960:21:15::2;;;;;;;;;;;15919:62;-1:-1:-1::0;;;;;15996:26:15;::::2;15992:609;;16091:11;16078:9;:24;16074:58;;16111:21;;-1:-1:-1::0;;;16111:21:15::2;;;;;;;;;;;16074:58;16224:17;::::0;:44:::2;::::0;16206:12:::2;::::0;-1:-1:-1;;;;;16224:17:15::2;::::0;16254:9:::2;::::0;16206:12;16224:44;16206:12;16224:44;16254:9;16224:17;:44:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16205:63;;;16287:7;16282:37;;16303:16;;-1:-1:-1::0;;;16303:16:15::2;;;;;;;;;;;16282:37;16024:306;15992:609;;;16479:17;::::0;16400:139:::2;::::0;-1:-1:-1;;;16400:139:15;;16451:10:::2;16400:139;::::0;::::2;17880:51:18::0;-1:-1:-1;;;;;16479:17:15;;::::2;17947:18:18::0;;;17940:60;18016:18;;;18009:34;;;16385:12:15::2;::::0;16400:33;::::2;::::0;::::2;::::0;17853:18:18;;16400:139:15::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16385:154;;16558:7;16553:37;;16574:16;;-1:-1:-1::0;;;16574:16:15::2;;;;;;;;;;;16553:37;16336:265;15992:609;16651:9;16646:121;16670:10;:17;16666:1;:21;16646:121;;;16708:48;16730:10;16742;16753:1;16742:13;;;;;;;;:::i;:::-;;;;;;;16708:21;:48::i;:::-;16689:3;;16646:121;;;;16819:10;-1:-1:-1::0;;;;;16804:65:15::2;;16831:10;16843:12;16857:11;16804:65;;;;;;;;:::i;:::-;;;;;;;;15267:1609;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;20482:511:15;20598:43;20653:67;20781:10;:17;-1:-1:-1;;;;;20723:89:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;20723:89:15;;;;;;;;;;;;;;;;;20653:159;;20828:9;20823:135;20847:10;:17;20843:1;:21;20823:135;;;-1:-1:-1;;;;;20902:30:15;;:8;:30;;;:24;:30;;;;;20933:13;;20902:30;;:8;20933:10;;20944:1;;20933:13;;;;;;:::i;:::-;;;;;;;;;;;;20902:45;;;;;;;;;;;;;-1:-1:-1;20902:45:15;20885:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;:11;;20897:1;;20885:14;;;;;;:::i;:::-;;;;;;;;;;:62;20866:3;;20823:135;;13202:1636;3395:21:2;:19;:21::i;:::-;1286:15:15::1;::::0;::::1;;1282:44;;;1310:16;;-1:-1:-1::0;;;1310:16:15::1;;;;;;;;;;;1282:44;1406:8:::2;:34:::0;;;:23:::2;:34;::::0;;;;:43:::2;;::::0;13371:9;;1406:43:::2;;1401:85;;1470:16;;-1:-1:-1::0;;;1470:16:15::2;;;;;;;;;;;1401:85;-1:-1:-1::0;;;;;13397:38:15;::::3;:8;:38:::0;;;:24:::3;:38;::::0;;;;;::::3;;13392:70;;13444:18;;-1:-1:-1::0;;;13444:18:15::3;;;;;;;;;;;13392:70;13473:21;-1:-1:-1::0;;;;;13508:26:15;::::3;13504:998;;-1:-1:-1::0;13602:8:15::3;:34:::0;;;:23:::3;:34;::::0;;;;:46:::3;;::::0;13666:9:::3;:26:::0;::::3;13662:60;;13701:21;;-1:-1:-1::0;;;13701:21:15::3;;;;;;;;;;;13662:60;13750:9;13740:6;:19;13736:53;;13768:21;;-1:-1:-1::0;;;13768:21:15::3;;;;;;;;;;;13736:53;13881:17;::::0;:44:::3;::::0;13863:12:::3;::::0;-1:-1:-1;;;;;13881:17:15::3;::::0;13911:9:::3;::::0;13863:12;13881:44;13863:12;13881:44;13911:9;13881:17;:44:::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13862:63;;;13944:7;13939:37;;13960:16;;-1:-1:-1::0;;;13960:16:15::3;;;;;;;;;;;13939:37;13536:451;13504:998;;;-1:-1:-1::0;14058:8:15::3;:34:::0;;;:23:::3;:34;::::0;;;;;;;-1:-1:-1;;;;;14058:90:15;::::3;::::0;;;;;;;;14166:23;;::::3;14162:57;;14198:21;;-1:-1:-1::0;;;14198:21:15::3;;;;;;;;;;;14162:57;14385:17;::::0;14306:134:::3;::::0;-1:-1:-1;;;14306:134:15;;14357:10:::3;14306:134;::::0;::::3;17880:51:18::0;-1:-1:-1;;;;;14385:17:15;;::::3;17947:18:18::0;;;17940:60;18016:18;;;18009:34;;;14291:12:15::3;::::0;14306:33;::::3;::::0;::::3;::::0;17853:18:18;;14306:134:15::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14291:149;;14459:7;14454:37;;14475:16;;-1:-1:-1::0;;;14475:16:15::3;;;;;;;;;;;14454:37;13993:509;13504:998;14546:44;14568:10;14580:9;14546:21;:44::i;:::-;14777:8;:34:::0;;;:23:::3;:34;::::0;;;;;;;;:44;;::::3;::::0;14654:177;;-1:-1:-1;;;;;19961:32:18;;19943:51;;20010:18;;;20003:34;;;20053:18;;;20046:34;14654:177:15;;14777:34;;14684:10:::3;::::0;14654:177:::3;::::0;;;;19931:2:18;14654:177:15;;::::3;13382:1456;1336:1:::2;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;9953:756:15;1193:10;1176:8;:28;;;:16;:28;;;;;;;;1171:52;;1213:10;;-1:-1:-1;;;1213:10:15;;;;;;;;;;;1171:52;10136:6:::1;:13;10115:10;:17;:34;10111:68;;10158:21;;-1:-1:-1::0;;;10158:21:15::1;;;;;;;;;;;10111:68;-1:-1:-1::0;;;;;10194:31:15;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;::::1;;10189:63;;10234:18;;-1:-1:-1::0;;;10234:18:15::1;;;;;;;;;;;10189:63;10268:9;10263:440;10287:10;:17;10283:1;:21;10263:440;;;10385:6;10409:1;10385:39;;;;;;;;:::i;:::-;;;;;;;10325:8;:23;;:38;10349:10;10360:1;10349:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;10325:38;;;;::::1;::::0;;;;;;;;-1:-1:-1;10325:38:15;;;-1:-1:-1;;;;;10325:57:15;::::1;::::0;;;;;;:99;;;;10503:120:::1;;10599:6;10606:1;10599:9;;;;;;;;:::i;:::-;;;;;;;10546:8;:23;;:38;10570:10;10581:1;10570:13;;;;;;;;:::i;:::-;;;;;;;10546:38;;;;;;;;;;;:50;;:62;;;;10503:120;10675:5;-1:-1:-1::0;;;;;10642:50:15::1;10660:10;10671:1;10660:13;;;;;;;;:::i;:::-;;;;;;;10642:50;10682:6;10689:1;10682:9;;;;;;;;:::i;:::-;;;;;;;10642:50;;;;10047:25:18::0;;10035:2;10020:18;;9901:177;10642:50:15::1;;;;;;;;10306:3;;10263:440;;;;9953:756:::0;;;:::o;25060:754::-;25148:40;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25148:40:15;25200:48;25251:47;;;:36;:47;;;;;;25200:48;25454:40;25288:9;25454:29;:40::i;:::-;25524:283;;;;;;;;25587:16;;;;25524:283;;;25631:15;;;;;;;25524:283;;;;;;;;;;;;;;;;;25771:21;;25524:283;;;;-1:-1:-1;25524:283:15;;25060:754;-1:-1:-1;;;25060:754:15:o;19594:705::-;-1:-1:-1;;;;;19770:43:15;;19699:4;19770:43;;;:37;:43;;;;;;;;:54;;;;;;;;19715:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19835:62;;19881:5;19874:12;;;;;19835:62;19959:17;19979:34;;;:23;:34;;;;;;;:44;;;20038:14;;;20034:259;;20143:4;20136:11;;;;;;20034:259;-1:-1:-1;20253:25:15;;;:29;;;-1:-1:-1;20246:36:15;;5752:283;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;-1:-1:-1;;;;;5835:25:15;::::1;5831:51;;5869:13;;-1:-1:-1::0;;;5869:13:15::1;;;;;;;;;;;5831:51;5914:17;::::0;;-1:-1:-1;;;;;5941:31:15;;::::1;-1:-1:-1::0;;;;;;5941:31:15;::::1;::::0;::::1;::::0;;;5987:41:::1;::::0;5914:17;::::1;::::0;5941:31;5914:17;;5987:41:::1;::::0;5892:19:::1;::::0;5987:41:::1;5821:214;5752:283:::0;:::o;9071:205:0:-;9129:30;;3147:66;9186:27;8819:122;2970:67:1;6929:20:0;:18;:20::i;2684:111:2:-;6929:20:0;:18;:20::i;:::-;2754:34:2::1;:32;:34::i;4578:312:1:-:0;4658:4;-1:-1:-1;;;;;4667:6:1;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:1;:32;-1:-1:-1;;;;;;;;;;;1519:53:6;-1:-1:-1;;;;;1519:53:6;;1441:138;4728:32:1;-1:-1:-1;;;;;4728:42:1;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:1;;;;;;;;;;;4345:98:15;1083:8;:14;-1:-1:-1;;;;;1083:14:15;1069:10;:28;1065:51;;1106:10;;-1:-1:-1;;;1106:10:15;;;;;;;;;;;1065:51;4345:98;:::o;6032:538:1:-;6149:17;-1:-1:-1;;;;;6131:50:1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:1;;;;;;;;-1:-1:-1;;6131:52:1;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:1;;-1:-1:-1;;;;;6021:32:18;;6493:60:1;;;6003:51:18;5976:18;;6493:60:1;;;;;;;;6127:437;-1:-1:-1;;;;;;;;;;;6225:40:1;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:1;;;;;10047:25:18;;;10020:18;;6292:34:1;9901:177:18;6221:120:1;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:1;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:1;;;;;;;;;;;3470:384:2;-1:-1:-1;;;;;;;;;;;3670:9:2;;-1:-1:-1;;3670:20:2;3666:88;;3713:30;;-1:-1:-1;;;3713:30:2;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;17844:1492:15:-;-1:-1:-1;;;;;17981:43:15;;17927:51;17981:43;;;:37;:43;;;;;;;;:54;;;;;;;;18065:23;:34;;;;;;;:44;;;;17981:54;;18124:14;;;18120:1210;;18219:16;;;;;;18215:219;;;18413:7;;17844:1492;;:::o;18215:219::-;18530:15;18506:39;;:21;18559:23;;;;:27;;;;18621:16;;;:23;;-1:-1:-1;;18621:23:15;;;;;;18120:1210;;;18742:16;;;;;;18738:582;;;18882:9;18855:8;:23;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;19038:23:15;;;;18914:165;;;20454:25:18;;;20510:2;20495:18;;20488:34;;;;18976:9:15;;-1:-1:-1;;;;;18914:165:15;;;;;20427:18:18;18914:165:15;;;;;;;18738:582;;;19196:15;19172:39;;19229:23;;;;:35;;;19282:16;;;:23;;-1:-1:-1;;19282:23:15;;;;;;17917:1419;;17844:1492;;:::o;3860:283:2:-;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283::o;26066:1900:15:-;26374:27;:34;26185:32;;;;26325:13;;;26482:580;26506:11;26502:1;:15;26482:580;;;26538:13;26554:8;:27;;26582:1;26554:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26554:30:15;26602:31;;;:24;:31;;;;;;;;26554:30;;-1:-1:-1;26602:31:15;;26598:454;;;26653:13;-1:-1:-1;;;;;26688:19:15;;26684:274;;-1:-1:-1;26739:8:15;:34;;;:23;:34;;;;;:46;;;26684:274;;;-1:-1:-1;26840:8:15;:34;;;:23;:34;;;;;;;;-1:-1:-1;;;;;26840:99:15;;;;;;;;;;26684:274;26979:9;;26975:63;;27012:7;;;;:::i;:::-;;;;26975:63;26635:417;26598:454;-1:-1:-1;26519:3:15;;26482:580;;;;27145:5;-1:-1:-1;;;;;27131:20:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27131:20:15;;27113:38;;27184:5;-1:-1:-1;;;;;27170:20:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27170:20:15;;27161:29;;27201:13;27290:9;27285:675;27309:11;27305:1;:15;27285:675;;;27341:13;27357:8;:27;;27385:1;27357:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27357:30:15;27405:31;;;:24;:31;;;;;;;;27357:30;;-1:-1:-1;27405:31:15;;27401:549;;;27456:13;-1:-1:-1;;;;;27491:19:15;;27487:274;;-1:-1:-1;27542:8:15;:34;;;:23;:34;;;;;:46;;;27487:274;;;-1:-1:-1;27643:8:15;:34;;;:23;:34;;;;;;;;-1:-1:-1;;;;;27643:99:15;;;;;;;;;;27487:274;27782:9;;27778:158;;27840:5;27815:15;27831:5;27815:22;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;27815:30:15;;;-1:-1:-1;;;;;27815:30:15;;;;;27883:5;27867:6;27874:5;27867:13;;;;;;;;:::i;:::-;;;;;;;;;;:21;27910:7;;;;:::i;:::-;;;;27778:158;27438:512;27401:549;-1:-1:-1;27322:3:15;;27285:675;;;;26248:1718;;;26066:1900;;;:::o;7082:141:0:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:0;;;;;;;;;;;2801:183:2;6929:20:0;:18;:20::i;2264:344:6:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:6;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;8485:120:0:-;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:0;;;;;;-1:-1:-1;8485:120:0:o;1671:281:6:-;1748:17;-1:-1:-1;;;;;1748:29:6;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:6;;-1:-1:-1;;;;;6021:32:18;;1805:47:6;;;6003:51:18;5976:18;;1805:47:6;5857:203:18;1744:119:6;-1:-1:-1;;;;;;;;;;;1872:73:6;;-1:-1:-1;;;;;;1872:73:6;-1:-1:-1;;;;;1872:73:6;;;;;;;;;;1671:281::o;3916:253:11:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:11;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:11:o;6113:122:6:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:6;;;;;;;;;;;4437:582:11;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:11;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:11;;-1:-1:-1;;;;;6021:32:18;;4933:24:11;;;6003:51:18;5976:18;;4933:24:11;5857:203:18;4853:119:11;-1:-1:-1;4992:10:11;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:11;;;;;;;;;;;14:637:18;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:195;444:6;441:1;438:13;430:195;;;509:13;;-1:-1:-1;;;;;505:39:18;493:52;;574:2;600:15;;;;565:12;;;;541:1;459:9;430:195;;;-1:-1:-1;642:3:18;;14:637;-1:-1:-1;;;;;14:637:18:o;656:131::-;-1:-1:-1;;;;;731:31:18;;721:42;;711:70;;777:1;774;767:12;792:118;878:5;871:13;864:21;857:5;854:32;844:60;;900:1;897;890:12;915:744;1007:6;1015;1023;1031;1039;1092:3;1080:9;1071:7;1067:23;1063:33;1060:53;;;1109:1;1106;1099:12;1060:53;1154:23;;;-1:-1:-1;1253:2:18;1238:18;;1225:32;1266:33;1225:32;1266:33;:::i;:::-;1318:7;-1:-1:-1;1398:2:18;1383:18;;1370:32;;-1:-1:-1;1501:2:18;1486:18;;1473:32;;-1:-1:-1;1583:3:18;1568:19;;1555:33;1597:30;1555:33;1597:30;:::i;:::-;1646:7;1636:17;;;915:744;;;;;;;;:::o;1664:367::-;1732:6;1740;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1848:9;1835:23;1867:31;1892:5;1867:31;:::i;:::-;1917:5;1995:2;1980:18;;;;1967:32;;-1:-1:-1;;;1664:367:18:o;2324:247::-;2383:6;2436:2;2424:9;2415:7;2411:23;2407:32;2404:52;;;2452:1;2449;2442:12;2404:52;2491:9;2478:23;2510:31;2535:5;2510:31;:::i;2576:127::-;2637:10;2632:3;2628:20;2625:1;2618:31;2668:4;2665:1;2658:15;2692:4;2689:1;2682:15;2708:275;2779:2;2773:9;2844:2;2825:13;;-1:-1:-1;;2821:27:18;2809:40;;-1:-1:-1;;;;;2864:34:18;;2900:22;;;2861:62;2858:88;;;2926:18;;:::i;:::-;2962:2;2955:22;2708:275;;-1:-1:-1;2708:275:18:o;2988:183::-;3048:4;-1:-1:-1;;;;;3073:6:18;3070:30;3067:56;;;3103:18;;:::i;:::-;-1:-1:-1;3148:1:18;3144:14;3160:4;3140:25;;2988:183::o;3176:723::-;3230:5;3283:3;3276:4;3268:6;3264:17;3260:27;3250:55;;3301:1;3298;3291:12;3250:55;3341:6;3328:20;3368:64;3384:47;3424:6;3384:47;:::i;:::-;3368:64;:::i;:::-;3456:3;3480:6;3475:3;3468:19;3512:4;3507:3;3503:14;3496:21;;3573:4;3563:6;3560:1;3556:14;3548:6;3544:27;3540:38;3526:52;;3601:3;3593:6;3590:15;3587:35;;;3618:1;3615;3608:12;3587:35;3654:4;3646:6;3642:17;3668:200;3684:6;3679:3;3676:15;3668:200;;;3776:17;;3806:18;;3853:4;3844:14;;;;3701;3668:200;;;-1:-1:-1;3886:7:18;3176:723;-1:-1:-1;;;;;3176:723:18:o;3904:738::-;3955:5;4008:3;4001:4;3993:6;3989:17;3985:27;3975:55;;4026:1;4023;4016:12;3975:55;4066:6;4053:20;4093:64;4109:47;4149:6;4109:47;:::i;4093:64::-;4181:3;4205:6;4200:3;4193:19;4237:4;4232:3;4228:14;4221:21;;4298:4;4288:6;4285:1;4281:14;4273:6;4269:27;4265:38;4251:52;;4326:3;4318:6;4315:15;4312:35;;;4343:1;4340;4333:12;4312:35;4379:4;4371:6;4367:17;4393:218;4409:6;4404:3;4401:15;4393:218;;;4491:3;4478:17;4508:28;4530:5;4508:28;:::i;:::-;4549:18;;4596:4;4587:14;;;;4426;4393:218;;4647:1205;4839:6;4847;4855;4863;4871;4924:3;4912:9;4903:7;4899:23;4895:33;4892:53;;;4941:1;4938;4931:12;4892:53;4981:9;4968:23;-1:-1:-1;;;;;5006:6:18;5003:30;5000:50;;;5046:1;5043;5036:12;5000:50;5069:61;5122:7;5113:6;5102:9;5098:22;5069:61;:::i;:::-;5059:71;;;5180:2;5169:9;5165:18;5152:32;5193:31;5218:5;5193:31;:::i;:::-;5243:5;-1:-1:-1;5301:2:18;5286:18;;5273:32;-1:-1:-1;;;;;5317:32:18;;5314:52;;;5362:1;5359;5352:12;5314:52;5385:63;5440:7;5429:8;5418:9;5414:24;5385:63;:::i;:::-;5375:73;;;5501:2;5490:9;5486:18;5473:32;-1:-1:-1;;;;;5520:8:18;5517:32;5514:52;;;5562:1;5559;5552:12;5514:52;5585:63;5640:7;5629:8;5618:9;5614:24;5585:63;:::i;:::-;5575:73;;;5701:3;5690:9;5686:19;5673:33;-1:-1:-1;;;;;5721:8:18;5718:32;5715:52;;;5763:1;5760;5753:12;5715:52;5786:60;5838:7;5827:8;5816:9;5812:24;5786:60;:::i;:::-;5776:70;;;4647:1205;;;;;;;;:::o;6065:226::-;6124:6;6177:2;6165:9;6156:7;6152:23;6148:32;6145:52;;;6193:1;6190;6183:12;6145:52;-1:-1:-1;6238:23:18;;6065:226;-1:-1:-1;6065:226:18:o;6296:744::-;6350:5;6403:3;6396:4;6388:6;6384:17;6380:27;6370:55;;6421:1;6418;6411:12;6370:55;6461:6;6448:20;6488:64;6504:47;6544:6;6504:47;:::i;6488:64::-;6576:3;6600:6;6595:3;6588:19;6632:4;6627:3;6623:14;6616:21;;6693:4;6683:6;6680:1;6676:14;6668:6;6664:27;6660:38;6646:52;;6721:3;6713:6;6710:15;6707:35;;;6738:1;6735;6728:12;6707:35;6774:4;6766:6;6762:17;6788:221;6804:6;6799:3;6796:15;6788:221;;;6886:3;6873:17;6903:31;6928:5;6903:31;:::i;:::-;6947:18;;6994:4;6985:14;;;;6821;6788:221;;7045:725;7172:6;7180;7188;7241:2;7229:9;7220:7;7216:23;7212:32;7209:52;;;7257:1;7254;7247:12;7209:52;7296:9;7283:23;7315:31;7340:5;7315:31;:::i;:::-;7365:5;-1:-1:-1;7421:2:18;7406:18;;7393:32;-1:-1:-1;;;;;7437:30:18;;7434:50;;;7480:1;7477;7470:12;7434:50;7503:61;7556:7;7547:6;7536:9;7532:22;7503:61;:::i;:::-;7493:71;;;7617:2;7606:9;7602:18;7589:32;-1:-1:-1;;;;;7636:8:18;7633:32;7630:52;;;7678:1;7675;7668:12;7630:52;7701:63;7756:7;7745:8;7734:9;7730:24;7701:63;:::i;:::-;7691:73;;;7045:725;;;;;:::o;7775:900::-;7852:6;7860;7913:2;7901:9;7892:7;7888:23;7884:32;7881:52;;;7929:1;7926;7919:12;7881:52;7968:9;7955:23;7987:31;8012:5;7987:31;:::i;:::-;8037:5;-1:-1:-1;8093:2:18;8078:18;;8065:32;-1:-1:-1;;;;;8109:30:18;;8106:50;;;8152:1;8149;8142:12;8106:50;8175:22;;8228:4;8220:13;;8216:27;-1:-1:-1;8206:55:18;;8257:1;8254;8247:12;8206:55;8297:2;8284:16;-1:-1:-1;;;;;8315:6:18;8312:30;8309:56;;;8345:18;;:::i;:::-;8387:57;8434:2;8411:17;;-1:-1:-1;;8407:31:18;8440:2;8403:40;8387:57;:::i;:::-;8467:6;8460:5;8453:21;8515:7;8510:2;8501:6;8497:2;8493:15;8489:24;8486:37;8483:57;;;8536:1;8533;8526:12;8483:57;8591:6;8586:2;8582;8578:11;8573:2;8566:5;8562:14;8549:49;8643:1;8638:2;8629:6;8622:5;8618:18;8614:27;8607:38;8664:5;8654:15;;;;;7775:900;;;;;:::o;8680:590::-;8798:6;8806;8859:2;8847:9;8838:7;8834:23;8830:32;8827:52;;;8875:1;8872;8865:12;8827:52;8915:9;8902:23;-1:-1:-1;;;;;8940:6:18;8937:30;8934:50;;;8980:1;8977;8970:12;8934:50;9003:61;9056:7;9047:6;9036:9;9032:22;9003:61;:::i;:::-;8993:71;;;9117:2;9106:9;9102:18;9089:32;-1:-1:-1;;;;;9136:8:18;9133:32;9130:52;;;9178:1;9175;9168:12;9130:52;9201:63;9256:7;9245:8;9234:9;9230:24;9201:63;:::i;:::-;9191:73;;;8680:590;;;;;:::o;9275:621::-;9459:2;9471:21;;;9541:13;;9444:18;;;9563:22;;;9411:4;;9642:15;;;9616:2;9601:18;;;9411:4;9685:185;9699:6;9696:1;9693:13;9685:185;;;9774:13;;9767:21;9760:29;9748:42;;9819:2;9845:15;;;;9810:12;;;;9721:1;9714:9;9685:185;;10265:487;10342:6;10350;10358;10411:2;10399:9;10390:7;10386:23;10382:32;10379:52;;;10427:1;10424;10417:12;10379:52;10472:23;;;-1:-1:-1;10571:2:18;10556:18;;10543:32;10584:33;10543:32;10584:33;:::i;:::-;10265:487;;10636:7;;-1:-1:-1;;;10716:2:18;10701:18;;;;10688:32;;10265:487::o;10989:267::-;10837:12;;10825:25;;10899:4;10888:16;;;10882:23;10866:14;;;10859:47;10969:4;10958:16;;;10952:23;10945:31;10938:39;10922:14;;;10915:63;11187:2;11172:18;;11199:51;10757:227;11261:603;11363:6;11371;11379;11432:2;11420:9;11411:7;11407:23;11403:32;11400:52;;;11448:1;11445;11438:12;11400:52;11488:9;11475:23;-1:-1:-1;;;;;11513:6:18;11510:30;11507:50;;;11553:1;11550;11543:12;11507:50;11576:61;11629:7;11620:6;11609:9;11605:22;11576:61;:::i;:::-;11566:71;;;11687:2;11676:9;11672:18;11659:32;11700:31;11725:5;11700:31;:::i;11869:250::-;11954:1;11964:113;11978:6;11975:1;11972:13;11964:113;;;12054:11;;;12048:18;12035:11;;;12028:39;12000:2;11993:10;11964:113;;;-1:-1:-1;;12111:1:18;12093:16;;12086:27;11869:250::o;12124:396::-;12273:2;12262:9;12255:21;12236:4;12305:6;12299:13;12348:6;12343:2;12332:9;12328:18;12321:34;12364:79;12436:6;12431:2;12420:9;12416:18;12411:2;12403:6;12399:15;12364:79;:::i;:::-;12504:2;12483:15;-1:-1:-1;;12479:29:18;12464:45;;;;12511:2;12460:54;;12124:396;-1:-1:-1;;12124:396:18:o;12525:483::-;12618:6;12626;12679:2;12667:9;12658:7;12654:23;12650:32;12647:52;;;12695:1;12692;12685:12;12647:52;12734:9;12721:23;12753:31;12778:5;12753:31;:::i;:::-;12803:5;-1:-1:-1;12859:2:18;12844:18;;12831:32;-1:-1:-1;;;;;12875:30:18;;12872:50;;;12918:1;12915;12908:12;13013:703;13267:2;13279:21;;;13349:13;;13252:18;;;13371:22;;;13219:4;;13450:15;;;13424:2;13409:18;;;13219:4;13493:197;13507:6;13504:1;13501:13;13493:197;;;13556:52;13604:3;13595:6;13589:13;10837:12;;10825:25;;10899:4;10888:16;;;10882:23;10866:14;;;10859:47;10969:4;10958:16;;;10952:23;10945:31;10938:39;10922:14;;10915:63;10757:227;13556:52;13677:2;13665:15;;;;;13637:4;13628:14;;;;;13529:1;13522:9;13493:197;;13721:725;13848:6;13856;13864;13917:2;13905:9;13896:7;13892:23;13888:32;13885:52;;;13933:1;13930;13923:12;13885:52;13973:9;13960:23;-1:-1:-1;;;;;13998:6:18;13995:30;13992:50;;;14038:1;14035;14028:12;13992:50;14061:61;14114:7;14105:6;14094:9;14090:22;14061:61;:::i;:::-;14051:71;;;14172:2;14161:9;14157:18;14144:32;14185:31;14210:5;14185:31;:::i;:::-;14235:5;-1:-1:-1;14293:2:18;14278:18;;14265:32;-1:-1:-1;;;;;14309:32:18;;14306:52;;;14354:1;14351;14344:12;14306:52;14377:63;14432:7;14421:8;14410:9;14406:24;14377:63;:::i;14451:420::-;14504:3;14542:5;14536:12;14569:6;14564:3;14557:19;14601:4;14596:3;14592:14;14585:21;;14640:4;14633:5;14629:16;14663:1;14673:173;14687:6;14684:1;14681:13;14673:173;;;14748:13;;14736:26;;14791:4;14782:14;;;;14819:17;;;;14709:1;14702:9;14673:173;;;-1:-1:-1;14862:3:18;;14451:420;-1:-1:-1;;;;14451:420:18:o;14876:1207::-;15079:2;15068:9;15061:21;15042:4;15120:3;15109:9;15105:19;15166:6;15160:13;15155:2;15144:9;15140:18;15133:41;15242:2;15234:6;15230:15;15224:22;15217:30;15210:38;15205:2;15194:9;15190:18;15183:66;15296:2;15288:6;15284:15;15278:22;15336:4;15331:2;15320:9;15316:18;15309:32;15361:6;15396:12;15390:19;15433:6;15425;15418:22;15471:3;15460:9;15456:19;15449:26;;15516:2;15502:12;15498:21;15484:35;;15537:1;15528:10;;15547:195;15561:6;15558:1;15555:13;15547:195;;;15626:13;;-1:-1:-1;;;;;15622:39:18;15610:52;;15691:2;15717:15;;;;15658:1;15576:9;;;;;15682:12;;;;15547:195;;;-1:-1:-1;15791:2:18;15779:15;;15773:22;15836:19;;;-1:-1:-1;;15832:33:18;15826:3;15811:19;;15804:62;15773:22;-1:-1:-1;15889:49:18;15840:3;15773:22;15889:49;:::i;:::-;15875:63;;;;15987:3;15979:6;15975:16;15969:23;16001:53;16048:4;16037:9;16033:20;16017:14;2106:13;2099:21;2087:34;;2036:91;16538:127;16599:10;16594:3;16590:20;16587:1;16580:31;16630:4;16627:1;16620:15;16654:4;16651:1;16644:15;16670:136;16709:3;16737:5;16727:39;;16746:18;;:::i;:::-;-1:-1:-1;;;16782:18:18;;16670:136::o;16811:127::-;16872:10;16867:3;16863:20;16860:1;16853:31;16903:4;16900:1;16893:15;16927:4;16924:1;16917:15;17157:128;17224:9;;;17245:11;;;17242:37;;;17259:18;;:::i;17290:127::-;17351:10;17346:3;17342:20;17339:1;17332:31;17382:4;17379:1;17372:15;17406:4;17403:1;17396:15;17422:251;17492:6;17545:2;17533:9;17524:7;17520:23;17516:32;17513:52;;;17561:1;17558;17551:12;17513:52;17593:9;17587:16;17612:31;17637:5;17612:31;:::i;18333:125::-;18398:9;;;18419:10;;;18416:36;;;18432:18;;:::i;19057:245::-;19124:6;19177:2;19165:9;19156:7;19152:23;19148:32;19145:52;;;19193:1;19190;19183:12;19145:52;19225:9;19219:16;19244:28;19266:5;19244:28;:::i;19307:429::-;19542:2;19531:9;19524:21;19505:4;19562:56;19614:2;19603:9;19599:18;19591:6;19562:56;:::i;:::-;-1:-1:-1;;;;;19654:32:18;;;;19649:2;19634:18;;19627:60;-1:-1:-1;19718:2:18;19703:18;19696:34;19554:64;19307:429;-1:-1:-1;19307:429:18:o;20091:184::-;20161:6;20214:2;20202:9;20193:7;20189:23;20185:32;20182:52;;;20230:1;20227;20220:12;20182:52;-1:-1:-1;20253:16:18;;20091:184;-1:-1:-1;20091:184:18:o;20533:135::-;20572:3;20593:17;;;20590:43;;20613:18;;:::i;:::-;-1:-1:-1;20660:1:18;20649:13;;20533:135::o;20673:287::-;20802:3;20840:6;20834:13;20856:66;20915:6;20910:3;20903:4;20895:6;20891:17;20856:66;:::i;:::-;20938:16;;;;;20673:287;-1:-1:-1;;20673:287:18:o"},"gasEstimates":{"creation":{"codeDepositCost":"2950400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addAdmin(address)":"27982","addSupportedToken(address)":"125222","batchConsumeView(address[],uint256[])":"infinite","batchPurchase(uint256[],address,uint256)":"infinite","batchSetContentConfig(uint256[],address,uint256[],uint256[],bool[])":"infinite","batchSetContentPrice(uint256[],address,uint256[])":"infinite","consumeView(address,uint256)":"infinite","getAllSupportedTokens()":"infinite","getContentPurchaseInfo(uint256)":"infinite","getPermissionDetails(address,uint256)":"7211","getTreasury()":"2432","getUserPermissions(address,uint256[])":"infinite","hasViewPermission(address,uint256)":"9297","initialize(address,address[],address[])":"infinite","isAdmin(address)":"2611","isContentActive(uint256)":"2524","isSupportedToken(address)":"2589","migrate()":"32404","owner()":"2398","pause()":"27366","proxiableUUID()":"infinite","purchaseContent(uint256,address,uint256)":"infinite","purchaseWithNFT(uint256,address,uint256)":"infinite","removeAdmin(address)":"28031","removeSupportedToken(address)":"165504","setContentConfig(uint256,address,uint256,uint256,bool)":"infinite","setContentPrice(uint256,address,uint256)":"51173","setTreasury(address)":"28387","unpause()":"27316","upgradeToAndCall(address,bytes)":"infinite","version()":"2381"},"internal":{"_authorizeUpgrade(address)":"infinite","_getSupportedTokensForContent(uint256)":"infinite","_updateViewPermission(address,uint256)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addAdmin(address)":"70480275","addSupportedToken(address)":"6d69fcaf","batchConsumeView(address[],uint256[])":"529e2b32","batchPurchase(uint256[],address,uint256)":"99ea24fe","batchSetContentConfig(uint256[],address,uint256[],uint256[],bool[])":"277148e3","batchSetContentPrice(uint256[],address,uint256[])":"b6f4fe98","consumeView(address,uint256)":"05059571","getAllSupportedTokens()":"0107e472","getContentPurchaseInfo(uint256)":"b8e8f98e","getPermissionDetails(address,uint256)":"8d13660e","getTreasury()":"3b19e84a","getUserPermissions(address,uint256[])":"b303f53f","hasViewPermission(address,uint256)":"caae24b3","initialize(address,address[],address[])":"4a200fa5","isAdmin(address)":"24d7806c","isContentActive(uint256)":"40033b3d","isSupportedToken(address)":"240028e8","migrate()":"8fd3ab80","owner()":"8da5cb5b","pause()":"8456cb59","proxiableUUID()":"52d1902d","purchaseContent(uint256,address,uint256)":"b6f1d140","purchaseWithNFT(uint256,address,uint256)":"86778641","removeAdmin(address)":"1785f53c","removeSupportedToken(address)":"76319190","setContentConfig(uint256,address,uint256,uint256,bool)":"02236026","setContentPrice(uint256,address,uint256)":"9981007b","setTreasury(address)":"f0f44260","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyPurchased\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoValidPermission\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"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\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"ContentConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"}],\"name\":\"ContentPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"PermissionExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"TokenPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"TreasuryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"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\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"}],\"name\":\"ViewConsumed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalRemaining\",\"type\":\"uint256\"}],\"name\":\"ViewCountAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"users\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchConsumeView\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"batchPurchase\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"viewCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"isActiveArray\",\"type\":\"bool[]\"}],\"name\":\"batchSetContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchSetContentPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"consumeView\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getContentPurchaseInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"supportedTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"isUnlimitedViewing\",\"type\":\"bool\"}],\"internalType\":\"struct IVideoPayment.ContentPurchaseInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getPermissionDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"getUserPermissions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"hasViewPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialAdmins\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"supportedTokenAddresses\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"isContentActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"purchaseContent\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNFT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"setContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setContentPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Main contract for video content payment and access control\",\"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.\"}],\"FailedCall()\":[{\"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.\"}],\"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\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addAdmin(address)\":{\"details\":\"Add admin\",\"params\":{\"admin\":\"Admin address to add\"}},\"addSupportedToken(address)\":{\"details\":\"Add supported token (address(0) for native token)\",\"params\":{\"token\":\"Token address to add (address(0) for native)\"}},\"batchConsumeView(address[],uint256[])\":{\"details\":\"Batch consume views for multiple users\",\"params\":{\"contentIds\":\"Content ID array\",\"users\":\"User address array\"},\"returns\":{\"_0\":\"Success status array\"}},\"batchPurchase(uint256[],address,uint256)\":{\"details\":\"Batch purchase content with token (address(0) for native token)\",\"params\":{\"contentIds\":\"Content ID array\",\"paymentToken\":\"Payment token address (address(0) for native)\",\"totalAmount\":\"Total payment amount\"}},\"batchSetContentConfig(uint256[],address,uint256[],uint256[],bool[])\":{\"details\":\"Batch set content configurations\",\"params\":{\"contentIds\":\"Content ID array\",\"isActiveArray\":\"Active status array\",\"prices\":\"Price array\",\"token\":\"Token address (address(0) for native)\",\"viewCounts\":\"View count array\"}},\"batchSetContentPrice(uint256[],address,uint256[])\":{\"details\":\"Batch set content prices for multiple contents (address(0) for native token)\",\"params\":{\"contentIds\":\"Content ID array\",\"prices\":\"Price array\",\"token\":\"Token address (address(0) for native)\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"consumeView(address,uint256)\":{\"details\":\"Consume one view for user\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Success status\"}},\"getAllSupportedTokens()\":{\"details\":\"Get all supported tokens\",\"returns\":{\"_0\":\"All supported token addresses\"}},\"getContentPurchaseInfo(uint256)\":{\"details\":\"Get content purchase information\",\"params\":{\"contentId\":\"Content ID\"},\"returns\":{\"_0\":\"Purchase information including supported tokens and prices\"}},\"getPermissionDetails(address,uint256)\":{\"details\":\"Get detailed permission info\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Permission details\"}},\"getTreasury()\":{\"details\":\"Get current treasury address\",\"returns\":{\"_0\":\"Current treasury address\"}},\"getUserPermissions(address,uint256[])\":{\"details\":\"Get user permissions for multiple contents\",\"params\":{\"contentIds\":\"Content ID array\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Permission array\"}},\"hasViewPermission(address,uint256)\":{\"details\":\"Check if user has valid view permission\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Whether user has valid permission\"}},\"initialize(address,address[],address[])\":{\"details\":\"Initialize the contract\",\"params\":{\"initialAdmins\":\"Initial admin addresses array\",\"initialOwner\":\"Initial owner address\",\"supportedTokenAddresses\":\"Initial supported token addresses array\"}},\"isAdmin(address)\":{\"details\":\"Check if address is admin\",\"params\":{\"account\":\"Address to check\"},\"returns\":{\"_0\":\"Whether address is admin\"}},\"isContentActive(uint256)\":{\"details\":\"Check if content is active\",\"params\":{\"contentId\":\"Content ID\"},\"returns\":{\"_0\":\"Whether content is active\"}},\"isSupportedToken(address)\":{\"details\":\"Check if token is supported\",\"params\":{\"token\":\"Token address to check\"},\"returns\":{\"_0\":\"Whether token is supported\"}},\"migrate()\":{\"details\":\"Migration function for future upgrades\"},\"owner()\":{\"details\":\"Get current owner address\",\"returns\":{\"_0\":\"Current owner address\"}},\"pause()\":{\"details\":\"Pause contract\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {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.\"},\"purchaseContent(uint256,address,uint256)\":{\"details\":\"Purchase content with token (address(0) for native token)\",\"params\":{\"amount\":\"Payment amount\",\"contentId\":\"Content ID\",\"paymentToken\":\"Payment token address (address(0) for native)\"}},\"purchaseWithNFT(uint256,address,uint256)\":{\"details\":\"Purchase content with NFT\",\"params\":{\"contentId\":\"Content ID\",\"nftContract\":\"NFT contract address\",\"tokenId\":\"NFT token ID\"}},\"removeAdmin(address)\":{\"details\":\"Remove admin\",\"params\":{\"admin\":\"Admin address to remove\"}},\"removeSupportedToken(address)\":{\"details\":\"Remove supported token (address(0) for native token)\",\"params\":{\"token\":\"Token address to remove (address(0) for native)\"}},\"setContentConfig(uint256,address,uint256,uint256,bool)\":{\"details\":\"Set content configuration\",\"params\":{\"contentId\":\"Content ID\",\"isActive\":\"Whether content is active\",\"price\":\"Token price\",\"token\":\"Token address (address(0) for native)\",\"viewCount\":\"View count\"}},\"setContentPrice(uint256,address,uint256)\":{\"details\":\"Set content price for specific token (address(0) for native token)\",\"params\":{\"contentId\":\"Content ID\",\"price\":\"New price\",\"token\":\"Token address (address(0) for native)\"}},\"setTreasury(address)\":{\"details\":\"Set treasury address for receiving payments\",\"params\":{\"newTreasury\":\"New treasury address\"}},\"unpause()\":{\"details\":\"Unpause contract\"},\"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()\":{\"details\":\"Get contract version\"}},\"title\":\"VideoPayment\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VideoPayment.sol\":\"VideoPayment\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.22;\\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\\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 ERC-1967.\\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\",\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\\n * consider using {ReentrancyGuardTransient} instead.\\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\",\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5313.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface for the Light Contract Ownership Standard.\\n *\\n * A standardized minimal interface required to identify an account that controls a contract\\n */\\ninterface IERC5313 {\\n    /**\\n     * @dev Gets the address of the owner.\\n     */\\n    function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x22412c268e74cc3cbf550aecc2f7456f6ac40783058e219cfe09f26f4d396621\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\",\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\",\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@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\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(\\n        address[] calldata accounts,\\n        uint256[] calldata ids\\n    ) external view returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the zero address.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `values` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1d7a05b3219532ea5ece50a80cf390cac9109dc74e07763adfa463ab5a3af0dc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\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\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-721 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 ERC-721 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 ERC-721\\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\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\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[ERC 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\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/VideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC5313.sol\\\";\\nimport \\\"./interfaces/IVideoPayment.sol\\\";\\nimport \\\"./libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title VideoPayment\\n * @dev Main contract for video content payment and access control\\n */\\ncontract VideoPayment is\\n    Initializable,\\n    UUPSUpgradeable,\\n    ReentrancyGuardUpgradeable,\\n    IERC5313,\\n    IVideoPayment\\n{\\n    using VideoPaymentStorage for VideoPaymentStorage.VideoPaymentStorageStruct;\\n\\n    // Storage\\n    VideoPaymentStorage.VideoPaymentStorageStruct private _storage;\\n\\n    // Modifiers\\n    modifier onlyOwner() {\\n        if (msg.sender != _storage.owner) revert NotOwner();\\n        _;\\n    }\\n\\n    modifier onlyAdmin() {\\n        if (!_storage.isAdmin[msg.sender]) revert NotAdmin();\\n        _;\\n    }\\n\\n    modifier whenNotPaused() {\\n        if (_storage.paused) revert ContractPaused();\\n        _;\\n    }\\n\\n    modifier validContent(uint256 contentId) {\\n        if (!_storage.contentConfigs[contentId].isActive)\\n            revert InvalidContent();\\n        _;\\n    }\\n\\n    /// @custom:oz-upgrades-unsafe-allow constructor\\n    constructor() {\\n        _disableInitializers();\\n    }\\n\\n    /**\\n     * @dev Initialize the contract\\n     * @param initialOwner Initial owner address\\n     * @param initialAdmins Initial admin addresses array\\n     * @param supportedTokenAddresses Initial supported token addresses array\\n     */\\n    function initialize(\\n        address initialOwner,\\n        address[] memory initialAdmins,\\n        address[] memory supportedTokenAddresses\\n    ) external initializer {\\n        if (initialOwner == address(0)) revert ZeroAddress();\\n\\n        __UUPSUpgradeable_init();\\n        __ReentrancyGuard_init();\\n\\n        _storage.owner = initialOwner;\\n        _storage.version = 1;\\n        _storage.paused = false;\\n\\n        // Add initial admins\\n        for (uint256 i = 0; i < initialAdmins.length; i++) {\\n            if (initialAdmins[i] != address(0)) {\\n                _storage.isAdmin[initialAdmins[i]] = true;\\n                emit AdminAdded(initialAdmins[i]);\\n            }\\n        }\\n\\n        // Add initial supported tokens\\n        for (uint256 i = 0; i < supportedTokenAddresses.length; i++) {\\n            address token = supportedTokenAddresses[i];\\n            if (token != address(0)) {\\n                // Add to enumeration structures\\n                if (!_storage.tokenExists[token]) {\\n                    _storage.tokenExists[token] = true;\\n                    _storage.tokenIndexes[token] = _storage\\n                        .allSupportedTokens\\n                        .length;\\n                    _storage.allSupportedTokens.push(token);\\n                }\\n                _storage.supportedTokens[token] = true;\\n                emit SupportedTokenAdded(token);\\n            }\\n        }\\n        // Ensure native token (address(0)) is included in enumeration structures\\n        if (!_storage.tokenExists[address(0)]) {\\n            _storage.tokenExists[address(0)] = true;\\n            _storage.tokenIndexes[address(0)] = _storage\\n                .allSupportedTokens\\n                .length;\\n            _storage.allSupportedTokens.push(address(0));\\n        }\\n        // Mark native token (address(0)) as always supported\\n        _storage.supportedTokens[address(0)] = true;\\n    }\\n\\n    /**\\n     * @dev Get contract version\\n     */\\n    function version() external view returns (uint256) {\\n        return _storage.version;\\n    }\\n\\n    /**\\n     * @dev Migration function for future upgrades\\n     */\\n    function migrate() external onlyOwner {\\n        // Initialize treasury if not set (for upgrade from version without treasury)\\n        if (_storage.treasury == address(0)) {\\n            _storage.treasury = payable(_storage.owner);\\n            emit TreasuryUpdated(address(0), _storage.owner);\\n        }\\n    }\\n\\n    /**\\n     * @dev Authorize upgrade (required by UUPSUpgradeable)\\n     */\\n    function _authorizeUpgrade(\\n        address newImplementation\\n    ) internal override onlyOwner {}\\n\\n    // ============ Owner Management Functions ============\\n\\n    /**\\n     * @dev Get current owner address\\n     * @return Current owner address\\n     */\\n    function owner()\\n        external\\n        view\\n        override(IERC5313, IVideoPayment)\\n        returns (address)\\n    {\\n        return _storage.owner;\\n    }\\n\\n    /**\\n     * @dev Check if address is admin\\n     * @param account Address to check\\n     * @return Whether address is admin\\n     */\\n    function isAdmin(address account) external view returns (bool) {\\n        return _storage.isAdmin[account];\\n    }\\n\\n    /**\\n     * @dev Add admin\\n     * @param admin Admin address to add\\n     */\\n    function addAdmin(address admin) external onlyOwner {\\n        if (admin == address(0)) revert ZeroAddress();\\n        _storage.isAdmin[admin] = true;\\n        emit AdminAdded(admin);\\n    }\\n\\n    /**\\n     * @dev Remove admin\\n     * @param admin Admin address to remove\\n     */\\n    function removeAdmin(address admin) external onlyOwner {\\n        if (admin == address(0)) revert ZeroAddress();\\n        _storage.isAdmin[admin] = false;\\n        emit AdminRemoved(admin);\\n    }\\n\\n    // ============ Treasury Management Functions ============\\n\\n    /**\\n     * @dev Set treasury address for receiving payments\\n     * @param newTreasury New treasury address\\n     */\\n    function setTreasury(address payable newTreasury) external onlyOwner {\\n        if (newTreasury == address(0)) revert ZeroAddress();\\n        address oldTreasury = _storage.treasury;\\n        _storage.treasury = newTreasury;\\n        emit TreasuryUpdated(oldTreasury, newTreasury);\\n    }\\n\\n    /**\\n     * @dev Get current treasury address\\n     * @return Current treasury address\\n     */\\n    function getTreasury() external view returns (address) {\\n        return _storage.treasury;\\n    }\\n\\n    // ============ Content Management Functions ============\\n\\n    /**\\n     * @dev Set content configuration\\n     * @param contentId Content ID\\n     * @param token Token address (address(0) for native)\\n     * @param price Token price\\n     * @param viewCount View count\\n     * @param isActive Whether content is active\\n     */\\n    function setContentConfig(\\n        uint256 contentId,\\n        address token,\\n        uint256 price,\\n        uint256 viewCount,\\n        bool isActive\\n    ) external onlyAdmin {\\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\\n\\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\\n        _storage.contentConfigs[contentId].viewCount = viewCount;\\n        _storage.contentConfigs[contentId].isActive = isActive;\\n\\n        // Sync with nativePrice for backward compatibility\\n        if (token == address(0)) {\\n            _storage.contentConfigs[contentId].nativePrice = price;\\n        }\\n\\n        emit ContentConfigUpdated(contentId);\\n    }\\n\\n    /**\\n     * @dev Batch set content configurations\\n     * @param contentIds Content ID array\\n     * @param token Token address (address(0) for native)\\n     * @param prices Price array\\n     * @param viewCounts View count array\\n     * @param isActiveArray Active status array\\n     */\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices,\\n        uint256[] memory viewCounts,\\n        bool[] memory isActiveArray\\n    ) external onlyAdmin {\\n        if (\\n            contentIds.length != prices.length ||\\n            contentIds.length != viewCounts.length ||\\n            contentIds.length != isActiveArray.length\\n        ) revert ArrayLengthMismatch();\\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\\n                i\\n            ];\\n            _storage.contentConfigs[contentIds[i]].viewCount = viewCounts[i];\\n            _storage.contentConfigs[contentIds[i]].isActive = isActiveArray[i];\\n\\n            // Sync with nativePrice for backward compatibility\\n            if (token == address(0)) {\\n                _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\\n            }\\n\\n            emit ContentConfigUpdated(contentIds[i]);\\n        }\\n    }\\n\\n    /**\\n     * @dev Check if content is active\\n     * @param contentId Content ID\\n     * @return Whether content is active\\n     */\\n    function isContentActive(uint256 contentId) external view returns (bool) {\\n        return _storage.contentConfigs[contentId].isActive;\\n    }\\n\\n    // ============ Price Management Functions ============\\n\\n    /**\\n     * @dev Set content price for specific token (address(0) for native token)\\n     * @param contentId Content ID\\n     * @param token Token address (address(0) for native)\\n     * @param price New price\\n     */\\n    function setContentPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external onlyAdmin {\\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\\n\\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\\n\\n        // Sync with nativePrice for backward compatibility\\n        if (token == address(0)) {\\n            _storage.contentConfigs[contentId].nativePrice = price;\\n        }\\n\\n        emit TokenPriceUpdated(contentId, token, price);\\n    }\\n\\n    /**\\n     * @dev Batch set content prices for multiple contents (address(0) for native token)\\n     * @param contentIds Content ID array\\n     * @param token Token address (address(0) for native)\\n     * @param prices Price array\\n     */\\n    function batchSetContentPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external onlyAdmin {\\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\\n        if (!_storage.supportedTokens[token]) revert UnsupportedToken();\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\\n                i\\n            ];\\n\\n            // Sync with nativePrice for backward compatibility\\n            if (token == address(0)) {\\n                _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\\n            }\\n\\n            emit TokenPriceUpdated(contentIds[i], token, prices[i]);\\n        }\\n    }\\n\\n    // ============ Payment Token Management Functions ============\\n\\n    /**\\n     * @dev Add supported token (address(0) for native token)\\n     * @param token Token address to add (address(0) for native)\\n     */\\n    function addSupportedToken(address token) external onlyAdmin {\\n        if (!_storage.tokenExists[token]) {\\n            _storage.tokenExists[token] = true;\\n            _storage.tokenIndexes[token] = _storage.allSupportedTokens.length;\\n            _storage.allSupportedTokens.push(token);\\n        }\\n        _storage.supportedTokens[token] = true;\\n        emit SupportedTokenAdded(token);\\n    }\\n\\n    /**\\n     * @dev Remove supported token (address(0) for native token)\\n     * @param token Token address to remove (address(0) for native)\\n     */\\n    function removeSupportedToken(address token) external onlyAdmin {\\n        _storage.supportedTokens[token] = false;\\n\\n        if (_storage.tokenExists[token]) {\\n            uint256 tokenIndex = _storage.tokenIndexes[token];\\n            uint256 lastIndex = _storage.allSupportedTokens.length - 1;\\n\\n            // Move the last token to the position of the token to remove\\n            if (tokenIndex != lastIndex) {\\n                address lastToken = _storage.allSupportedTokens[lastIndex];\\n                _storage.allSupportedTokens[tokenIndex] = lastToken;\\n                _storage.tokenIndexes[lastToken] = tokenIndex;\\n            }\\n\\n            // Remove the last element\\n            _storage.allSupportedTokens.pop();\\n            delete _storage.tokenExists[token];\\n            delete _storage.tokenIndexes[token];\\n        }\\n\\n        emit SupportedTokenRemoved(token);\\n    }\\n\\n    /**\\n     * @dev Check if token is supported\\n     * @param token Token address to check\\n     * @return Whether token is supported\\n     */\\n    function isSupportedToken(address token) external view returns (bool) {\\n        return _storage.supportedTokens[token];\\n    }\\n\\n    // ============ Token Enumeration Functions ============\\n\\n    /**\\n     * @dev Get all supported tokens\\n     * @return All supported token addresses\\n     */\\n    function getAllSupportedTokens() external view returns (address[] memory) {\\n        return _storage.allSupportedTokens;\\n    }\\n\\n    // ============ Purchase Functions ============\\n\\n    /**\\n     * @dev Purchase content with token (address(0) for native token)\\n     * @param contentId Content ID\\n     * @param paymentToken Payment token address (address(0) for native)\\n     * @param amount Payment amount\\n     */\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external payable nonReentrant whenNotPaused validContent(contentId) {\\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\\n\\n        uint256 expectedPrice;\\n        if (paymentToken == address(0)) {\\n            // Native token payment\\n            expectedPrice = _storage.contentConfigs[contentId].nativePrice;\\n            if (msg.value != expectedPrice) revert InsufficientPayment();\\n            if (amount != msg.value) revert InsufficientPayment();\\n\\n            // Transfer native token directly to treasury\\n            (bool success, ) = _storage.treasury.call{value: msg.value}(\\\"\\\");\\n            if (!success) revert TransferFailed();\\n        } else {\\n            // ERC20 token payment\\n            expectedPrice = _storage.contentConfigs[contentId].tokenPrices[\\n                paymentToken\\n            ];\\n            if (expectedPrice != amount) revert InsufficientPayment();\\n\\n            // Transfer ERC20 token directly to treasury\\n            bool success = IERC20(paymentToken).transferFrom(\\n                msg.sender,\\n                _storage.treasury,\\n                amount\\n            );\\n            if (!success) revert TransferFailed();\\n        }\\n\\n        // Create view permission\\n        _updateViewPermission(msg.sender, contentId);\\n\\n        // Emit event - no more validUntil time\\n        emit ContentPurchased(\\n            msg.sender,\\n            contentId,\\n            paymentToken,\\n            amount,\\n            _storage.contentConfigs[contentId].viewCount\\n        );\\n    }\\n\\n    /**\\n     * @dev Batch purchase content with token (address(0) for native token)\\n     * @param contentIds Content ID array\\n     * @param paymentToken Payment token address (address(0) for native)\\n     * @param totalAmount Total payment amount\\n     */\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external payable nonReentrant whenNotPaused {\\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\\n\\n        uint256 expectedTotal = 0;\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\\n                revert InvalidContent();\\n\\n            if (paymentToken == address(0)) {\\n                expectedTotal += _storage\\n                    .contentConfigs[contentIds[i]]\\n                    .nativePrice;\\n            } else {\\n                expectedTotal += _storage\\n                    .contentConfigs[contentIds[i]]\\n                    .tokenPrices[paymentToken];\\n            }\\n        }\\n\\n        if (totalAmount != expectedTotal) revert InsufficientPayment();\\n\\n        if (paymentToken == address(0)) {\\n            // Native token payment\\n            if (msg.value != totalAmount) revert InsufficientPayment();\\n\\n            // Transfer native token directly to treasury\\n            (bool success, ) = _storage.treasury.call{value: msg.value}(\\\"\\\");\\n            if (!success) revert TransferFailed();\\n        } else {\\n            // ERC20 token payment\\n            bool success = IERC20(paymentToken).transferFrom(\\n                msg.sender,\\n                _storage.treasury,\\n                totalAmount\\n            );\\n            if (!success) revert TransferFailed();\\n        }\\n\\n        // Create view permissions\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _updateViewPermission(msg.sender, contentIds[i]);\\n        }\\n\\n        // Emit event\\n        emit BatchPurchased(msg.sender, contentIds, paymentToken, totalAmount);\\n    }\\n\\n    /**\\n     * @dev Purchase content with NFT\\n     * @param contentId Content ID\\n     * @param nftContract NFT contract address\\n     * @param tokenId NFT token ID\\n     */\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external nonReentrant whenNotPaused validContent(contentId) {\\n        // Check NFT ownership\\n        if (IERC721(nftContract).ownerOf(tokenId) != msg.sender)\\n            revert NoValidPermission();\\n\\n        // Transfer NFT (burn it by transferring to this contract)\\n        IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId);\\n\\n        // Create view permission\\n        _updateViewPermission(msg.sender, contentId);\\n\\n        // Emit event\\n        emit NFTPurchased(msg.sender, contentId, nftContract, tokenId);\\n    }\\n\\n    /**\\n     * @dev Internal function to update view permission\\n     * @param user User address\\n     * @param contentId Content ID\\n     */\\n    function _updateViewPermission(address user, uint256 contentId) internal {\\n        VideoPaymentStorage.ViewPermission storage existing = _storage\\n            .userPermissions[user][contentId];\\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\\n\\n        if (viewCount == 0) {\\n            // One-time purchase: Check if already purchased\\n            if (existing.isValid) {\\n                // User already has valid permission, no need to do anything\\n                // This allows the purchase to succeed without duplicate payment\\n                return;\\n            }\\n            // Create new permission for unlimited viewing\\n            existing.purchaseTime = block.timestamp;\\n            existing.remainingViews = 0; // 0 means unlimited\\n            existing.isValid = true;\\n        } else {\\n            // View-count based: Add to existing or create new\\n            if (existing.isValid) {\\n                // Existing permission is still valid, accumulate view count\\n                existing.remainingViews += viewCount;\\n                emit ViewCountAdded(\\n                    user,\\n                    contentId,\\n                    viewCount,\\n                    existing.remainingViews\\n                );\\n            } else {\\n                // No existing permission, create new\\n                existing.purchaseTime = block.timestamp;\\n                existing.remainingViews = viewCount;\\n                existing.isValid = true;\\n            }\\n        }\\n    }\\n\\n    // ============ Permission Verification Functions ============\\n\\n    /**\\n     * @dev Check if user has valid view permission\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Whether user has valid permission\\n     */\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool) {\\n        VideoPaymentStorage.ViewPermission memory permission = _storage\\n            .userPermissions[user][contentId];\\n\\n        if (!permission.isValid) {\\n            return false;\\n        }\\n\\n        // Get view count to determine content type\\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\\n\\n        if (viewCount == 0) {\\n            // One-time purchase: always valid if permission exists\\n            return true;\\n        } else {\\n            // View-count based: valid if there are remaining views\\n            return permission.remainingViews > 0;\\n        }\\n    }\\n\\n    /**\\n     * @dev Get user permissions for multiple contents\\n     * @param user User address\\n     * @param contentIds Content ID array\\n     * @return Permission array\\n     */\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory) {\\n        VideoPaymentStorage.ViewPermission[]\\n            memory permissions = new VideoPaymentStorage.ViewPermission[](\\n                contentIds.length\\n            );\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            permissions[i] = _storage.userPermissions[user][contentIds[i]];\\n        }\\n\\n        return permissions;\\n    }\\n\\n    /**\\n     * @dev Get detailed permission info\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Permission details\\n     */\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory) {\\n        return _storage.userPermissions[user][contentId];\\n    }\\n\\n    /**\\n     * @dev Consume one view for user\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Success status\\n     */\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external onlyAdmin returns (bool) {\\n        VideoPaymentStorage.ViewPermission storage permission = _storage\\n            .userPermissions[user][contentId];\\n\\n        if (!permission.isValid) {\\n            revert NoValidPermission();\\n        }\\n\\n        // Get view count to determine if this is unlimited or count-based\\n        uint256 viewCount = _storage.contentConfigs[contentId].viewCount;\\n\\n        if (viewCount == 0) {\\n            // One-time purchase with unlimited viewing - don't decrement\\n            emit ViewConsumed(user, contentId, 0); // 0 indicates unlimited\\n            return true;\\n        } else {\\n            // View-count based purchase - check and decrement\\n            if (permission.remainingViews == 0) {\\n                revert NoValidPermission();\\n            }\\n\\n            // Consume one view\\n            permission.remainingViews--;\\n\\n            emit ViewConsumed(user, contentId, permission.remainingViews);\\n\\n            // Mark as invalid if no views remaining\\n            if (permission.remainingViews == 0) {\\n                permission.isValid = false;\\n                emit PermissionExpired(user, contentId);\\n            }\\n\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Batch consume views for multiple users\\n     * @param users User address array\\n     * @param contentIds Content ID array\\n     * @return Success status array\\n     */\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external onlyAdmin returns (bool[] memory) {\\n        if (users.length != contentIds.length) revert ArrayLengthMismatch();\\n\\n        bool[] memory results = new bool[](users.length);\\n\\n        for (uint256 i = 0; i < users.length; i++) {\\n            VideoPaymentStorage.ViewPermission storage permission = _storage\\n                .userPermissions[users[i]][contentIds[i]];\\n\\n            if (!permission.isValid) {\\n                results[i] = false;\\n                continue;\\n            }\\n\\n            // Get view count to determine if this is unlimited or count-based\\n            uint256 viewCount = _storage\\n                .contentConfigs[contentIds[i]]\\n                .viewCount;\\n\\n            if (viewCount == 0) {\\n                // One-time purchase with unlimited viewing - don't decrement\\n                emit ViewConsumed(users[i], contentIds[i], 0); // 0 indicates unlimited\\n                results[i] = true;\\n            } else {\\n                // View-count based purchase - check and decrement\\n                if (permission.remainingViews == 0) {\\n                    results[i] = false;\\n                    continue;\\n                }\\n\\n                // Consume one view\\n                permission.remainingViews--;\\n                emit ViewConsumed(\\n                    users[i],\\n                    contentIds[i],\\n                    permission.remainingViews\\n                );\\n\\n                // Mark as invalid if no views remaining\\n                if (permission.remainingViews == 0) {\\n                    permission.isValid = false;\\n                    emit PermissionExpired(users[i], contentIds[i]);\\n                }\\n\\n                results[i] = true;\\n            }\\n        }\\n\\n        return results;\\n    }\\n\\n    // ============ Content Query Functions ============\\n\\n    /**\\n     * @dev Get content purchase information\\n     * @param contentId Content ID\\n     * @return Purchase information including supported tokens and prices\\n     */\\n    function getContentPurchaseInfo(\\n        uint256 contentId\\n    ) external view returns (IVideoPayment.ContentPurchaseInfo memory) {\\n        VideoPaymentStorage.ContentConfig storage config = _storage\\n            .contentConfigs[contentId];\\n\\n        // Get supported tokens for this content\\n        (\\n            address[] memory supportedTokens,\\n            uint256[] memory prices\\n        ) = _getSupportedTokensForContent(contentId);\\n\\n        return\\n            IVideoPayment.ContentPurchaseInfo({\\n                viewCount: config.viewCount,\\n                isActive: config.isActive,\\n                supportedTokens: supportedTokens,\\n                tokenPrices: prices,\\n                isUnlimitedViewing: config.viewCount == 0\\n            });\\n    }\\n\\n    /**\\n     * @dev Internal function to get supported tokens and prices for content\\n     * @param contentId Content ID\\n     * @return supportedTokens Array of supported token addresses\\n     * @return prices Array of corresponding prices\\n     */\\n    function _getSupportedTokensForContent(\\n        uint256 contentId\\n    )\\n        internal\\n        view\\n        returns (address[] memory supportedTokens, uint256[] memory prices)\\n    {\\n        // Count supported tokens with prices set for this content\\n        uint256 count = 0;\\n        uint256 totalTokens = _storage.allSupportedTokens.length;\\n\\n        // Count tokens that have prices set and are supported\\n        for (uint256 i = 0; i < totalTokens; i++) {\\n            address token = _storage.allSupportedTokens[i];\\n            if (_storage.supportedTokens[token]) {\\n                uint256 price;\\n                if (token == address(0)) {\\n                    price = _storage.contentConfigs[contentId].nativePrice;\\n                } else {\\n                    price = _storage.contentConfigs[contentId].tokenPrices[\\n                        token\\n                    ];\\n                }\\n                if (price > 0) {\\n                    count++;\\n                }\\n            }\\n        }\\n\\n        // Create arrays with exact size\\n        supportedTokens = new address[](count);\\n        prices = new uint256[](count);\\n\\n        uint256 index = 0;\\n\\n        // Fill arrays with tokens that have prices set\\n        for (uint256 i = 0; i < totalTokens; i++) {\\n            address token = _storage.allSupportedTokens[i];\\n            if (_storage.supportedTokens[token]) {\\n                uint256 price;\\n                if (token == address(0)) {\\n                    price = _storage.contentConfigs[contentId].nativePrice;\\n                } else {\\n                    price = _storage.contentConfigs[contentId].tokenPrices[\\n                        token\\n                    ];\\n                }\\n                if (price > 0) {\\n                    supportedTokens[index] = token;\\n                    prices[index] = price;\\n                    index++;\\n                }\\n            }\\n        }\\n    }\\n\\n    // ============ Emergency Control Functions ============\\n\\n    /**\\n     * @dev Pause contract\\n     */\\n    function pause() external onlyOwner {\\n        _storage.paused = true;\\n        emit Paused();\\n    }\\n\\n    /**\\n     * @dev Unpause contract\\n     */\\n    function unpause() external onlyOwner {\\n        _storage.paused = false;\\n        emit Unpaused();\\n    }\\n}\\n\",\"keccak256\":\"0x66459b38270141f547a68cbe722952f947de66a987ffb64ca41252577e1107ac\",\"license\":\"MIT\"},\"contracts/interfaces/IVideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"../libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title IVideoPayment\\n * @dev Interface for VideoPayment contract\\n */\\ninterface IVideoPayment {\\n    // Content purchase information structure\\n    struct ContentPurchaseInfo {\\n        uint256 viewCount; // View count (0=unlimited, >0=limited)\\n        bool isActive; // Whether content is purchasable\\n        address[] supportedTokens; // Supported payment tokens (address(0)=native)\\n        uint256[] tokenPrices; // Corresponding token prices\\n        bool isUnlimitedViewing; // Whether unlimited viewing is allowed\\n    }\\n    // Custom errors\\n    error NotOwner();\\n    error NotAdmin();\\n    error ContractPaused();\\n    error InvalidContent();\\n    error UnsupportedToken();\\n    error InsufficientPayment();\\n    error NoValidPermission();\\n    error ArrayLengthMismatch();\\n    error ZeroAddress();\\n    error InvalidAmount();\\n    error AlreadyPurchased();\\n    error TransferFailed();\\n\\n    // Events - Purchase related\\n    event ContentPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address paymentToken,\\n        uint256 amount,\\n        uint256 viewCount\\n    );\\n\\n    event BatchPurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    );\\n\\n    event NFTPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    );\\n\\n    // Events - Permission related\\n    event ViewConsumed(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 remainingViews\\n    );\\n\\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\\n\\n    event ViewCountAdded(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 addedCount,\\n        uint256 totalRemaining\\n    );\\n\\n    // Events - Management related\\n    event AdminAdded(address indexed admin);\\n    event AdminRemoved(address indexed admin);\\n    event ContentConfigUpdated(uint256 indexed contentId);\\n    event TokenPriceUpdated(\\n        uint256 indexed contentId,\\n        address indexed token,\\n        uint256 price\\n    );\\n    event SupportedTokenAdded(address indexed token);\\n    event SupportedTokenRemoved(address indexed token);\\n    event Paused();\\n    event Unpaused();\\n\\n    // Events - Treasury related\\n    event TreasuryUpdated(\\n        address indexed oldTreasury,\\n        address indexed newTreasury\\n    );\\n\\n    // Owner management functions\\n    function owner() external view returns (address);\\n    function isAdmin(address account) external view returns (bool);\\n    function addAdmin(address admin) external;\\n    function removeAdmin(address admin) external;\\n\\n    // Treasury management functions\\n    function setTreasury(address payable newTreasury) external;\\n    function getTreasury() external view returns (address);\\n\\n    // Content management functions\\n    function setContentConfig(\\n        uint256 contentId,\\n        address token,\\n        uint256 price,\\n        uint256 viewCount,\\n        bool isActive\\n    ) external;\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices,\\n        uint256[] memory viewCounts,\\n        bool[] memory isActiveArray\\n    ) external;\\n    function isContentActive(uint256 contentId) external view returns (bool);\\n\\n    // Price management functions\\n    function setContentPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external;\\n    function batchSetContentPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external;\\n\\n    // Token enumeration function\\n    function getAllSupportedTokens() external view returns (address[] memory);\\n\\n    // Payment token management functions\\n    function addSupportedToken(address token) external;\\n    function removeSupportedToken(address token) external;\\n    function isSupportedToken(address token) external view returns (bool);\\n\\n    // Purchase functions\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external payable;\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external payable;\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external;\\n\\n    // Permission verification functions\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool);\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external returns (bool);\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external returns (bool[] memory);\\n\\n    // Emergency control functions\\n    function pause() external;\\n    function unpause() external;\\n\\n    // Content query functions\\n    function getContentPurchaseInfo(\\n        uint256 contentId\\n    ) external view returns (ContentPurchaseInfo memory);\\n\\n    // Upgrade functions\\n    function version() external view returns (uint256);\\n    function migrate() external;\\n}\\n\",\"keccak256\":\"0x29152914074846f7b510b1af383197fb2471ddf1ef22db375e18b30fc0c8e379\",\"license\":\"MIT\"},\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 viewCount; // View count when purchased\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Token enumeration support\\n        address[] allSupportedTokens;\\n        mapping(address => bool) tokenExists;\\n        mapping(address => uint256) tokenIndexes; // for efficient removal\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Treasury management\\n        address payable treasury;\\n        // Reserved storage slots for future upgrades\\n        uint256[47] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x2632cd70bb0c6c68b5961273772a1892d91de5017c8db97d962c4fccac156192\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1688,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"_storage","offset":0,"slot":"0","type":"t_struct(VideoPaymentStorageStruct)4225_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_address_payable":{"encoding":"inplace","label":"address payable","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"base":"t_address","encoding":"dynamic_array","label":"address[]","numberOfBytes":"32"},"t_array(t_uint256)47_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_uint256,t_struct(ViewPermission)4181_storage))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_struct(ViewPermission)4181_storage)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_struct(ContentConfig)4174_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)","numberOfBytes":"32","value":"t_struct(ContentConfig)4174_storage"},"t_mapping(t_uint256,t_struct(ViewPermission)4181_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission)","numberOfBytes":"32","value":"t_struct(ViewPermission)4181_storage"},"t_struct(ContentConfig)4174_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.ContentConfig","members":[{"astId":4167,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"tokenPrices","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":4169,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"nativePrice","offset":0,"slot":"1","type":"t_uint256"},{"astId":4171,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"viewCount","offset":0,"slot":"2","type":"t_uint256"},{"astId":4173,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isActive","offset":0,"slot":"3","type":"t_bool"}],"numberOfBytes":"128"},"t_struct(VideoPaymentStorageStruct)4225_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.VideoPaymentStorageStruct","members":[{"astId":4183,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"owner","offset":0,"slot":"0","type":"t_address"},{"astId":4187,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isAdmin","offset":0,"slot":"1","type":"t_mapping(t_address,t_bool)"},{"astId":4192,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"contentConfigs","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_struct(ContentConfig)4174_storage)"},{"astId":4199,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"userPermissions","offset":0,"slot":"3","type":"t_mapping(t_address,t_mapping(t_uint256,t_struct(ViewPermission)4181_storage))"},{"astId":4203,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"supportedTokens","offset":0,"slot":"4","type":"t_mapping(t_address,t_bool)"},{"astId":4206,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"allSupportedTokens","offset":0,"slot":"5","type":"t_array(t_address)dyn_storage"},{"astId":4210,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"tokenExists","offset":0,"slot":"6","type":"t_mapping(t_address,t_bool)"},{"astId":4214,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"tokenIndexes","offset":0,"slot":"7","type":"t_mapping(t_address,t_uint256)"},{"astId":4216,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"paused","offset":0,"slot":"8","type":"t_bool"},{"astId":4218,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"version","offset":0,"slot":"9","type":"t_uint256"},{"astId":4220,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"treasury","offset":0,"slot":"10","type":"t_address_payable"},{"astId":4224,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"__gap","offset":0,"slot":"11","type":"t_array(t_uint256)47_storage"}],"numberOfBytes":"1856"},"t_struct(ViewPermission)4181_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.ViewPermission","members":[{"astId":4176,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"purchaseTime","offset":0,"slot":"0","type":"t_uint256"},{"astId":4178,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"remainingViews","offset":0,"slot":"1","type":"t_uint256"},{"astId":4180,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isValid","offset":0,"slot":"2","type":"t_bool"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IVideoPayment.sol":{"IVideoPayment":{"abi":[{"inputs":[],"name":"AlreadyPurchased","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContent","type":"error"},{"inputs":[],"name":"NoValidPermission","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"UnsupportedToken","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"ContentConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"}],"name":"ContentPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTPurchased","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"PermissionExpired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingViews","type":"uint256"}],"name":"ViewConsumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"addedCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRemaining","type":"uint256"}],"name":"ViewCountAdded","type":"event"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchConsumeView","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"batchPurchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"},{"internalType":"uint256[]","name":"viewCounts","type":"uint256[]"},{"internalType":"bool[]","name":"isActiveArray","type":"bool[]"}],"name":"batchSetContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchSetContentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"consumeView","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllSupportedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getContentPurchaseInfo","outputs":[{"components":[{"internalType":"uint256","name":"viewCount","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"address[]","name":"supportedTokens","type":"address[]"},{"internalType":"uint256[]","name":"tokenPrices","type":"uint256[]"},{"internalType":"bool","name":"isUnlimitedViewing","type":"bool"}],"internalType":"struct IVideoPayment.ContentPurchaseInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getPermissionDetails","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"getUserPermissions","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"hasViewPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"isContentActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isSupportedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseContent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"purchaseWithNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"viewCount","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"name":"setContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setContentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTreasury","type":"address"}],"name":"setTreasury","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"}],"devdoc":{"details":"Interface for VideoPayment contract","kind":"dev","methods":{},"title":"IVideoPayment","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addAdmin(address)":"70480275","addSupportedToken(address)":"6d69fcaf","batchConsumeView(address[],uint256[])":"529e2b32","batchPurchase(uint256[],address,uint256)":"99ea24fe","batchSetContentConfig(uint256[],address,uint256[],uint256[],bool[])":"277148e3","batchSetContentPrice(uint256[],address,uint256[])":"b6f4fe98","consumeView(address,uint256)":"05059571","getAllSupportedTokens()":"0107e472","getContentPurchaseInfo(uint256)":"b8e8f98e","getPermissionDetails(address,uint256)":"8d13660e","getTreasury()":"3b19e84a","getUserPermissions(address,uint256[])":"b303f53f","hasViewPermission(address,uint256)":"caae24b3","isAdmin(address)":"24d7806c","isContentActive(uint256)":"40033b3d","isSupportedToken(address)":"240028e8","migrate()":"8fd3ab80","owner()":"8da5cb5b","pause()":"8456cb59","purchaseContent(uint256,address,uint256)":"b6f1d140","purchaseWithNFT(uint256,address,uint256)":"86778641","removeAdmin(address)":"1785f53c","removeSupportedToken(address)":"76319190","setContentConfig(uint256,address,uint256,uint256,bool)":"02236026","setContentPrice(uint256,address,uint256)":"9981007b","setTreasury(address)":"f0f44260","unpause()":"3f4ba83a","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyPurchased\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoValidPermission\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"ContentConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"}],\"name\":\"ContentPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"PermissionExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"TokenPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"TreasuryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"}],\"name\":\"ViewConsumed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"addedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalRemaining\",\"type\":\"uint256\"}],\"name\":\"ViewCountAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"users\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchConsumeView\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"batchPurchase\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"viewCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"isActiveArray\",\"type\":\"bool[]\"}],\"name\":\"batchSetContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchSetContentPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"consumeView\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getContentPurchaseInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"supportedTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"isUnlimitedViewing\",\"type\":\"bool\"}],\"internalType\":\"struct IVideoPayment.ContentPurchaseInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getPermissionDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"getUserPermissions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"hasViewPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"isContentActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"purchaseContent\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNFT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"setContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setContentPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"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\"}],\"devdoc\":{\"details\":\"Interface for VideoPayment contract\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IVideoPayment\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IVideoPayment.sol\":\"IVideoPayment\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IVideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"../libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title IVideoPayment\\n * @dev Interface for VideoPayment contract\\n */\\ninterface IVideoPayment {\\n    // Content purchase information structure\\n    struct ContentPurchaseInfo {\\n        uint256 viewCount; // View count (0=unlimited, >0=limited)\\n        bool isActive; // Whether content is purchasable\\n        address[] supportedTokens; // Supported payment tokens (address(0)=native)\\n        uint256[] tokenPrices; // Corresponding token prices\\n        bool isUnlimitedViewing; // Whether unlimited viewing is allowed\\n    }\\n    // Custom errors\\n    error NotOwner();\\n    error NotAdmin();\\n    error ContractPaused();\\n    error InvalidContent();\\n    error UnsupportedToken();\\n    error InsufficientPayment();\\n    error NoValidPermission();\\n    error ArrayLengthMismatch();\\n    error ZeroAddress();\\n    error InvalidAmount();\\n    error AlreadyPurchased();\\n    error TransferFailed();\\n\\n    // Events - Purchase related\\n    event ContentPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address paymentToken,\\n        uint256 amount,\\n        uint256 viewCount\\n    );\\n\\n    event BatchPurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    );\\n\\n    event NFTPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    );\\n\\n    // Events - Permission related\\n    event ViewConsumed(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 remainingViews\\n    );\\n\\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\\n\\n    event ViewCountAdded(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 addedCount,\\n        uint256 totalRemaining\\n    );\\n\\n    // Events - Management related\\n    event AdminAdded(address indexed admin);\\n    event AdminRemoved(address indexed admin);\\n    event ContentConfigUpdated(uint256 indexed contentId);\\n    event TokenPriceUpdated(\\n        uint256 indexed contentId,\\n        address indexed token,\\n        uint256 price\\n    );\\n    event SupportedTokenAdded(address indexed token);\\n    event SupportedTokenRemoved(address indexed token);\\n    event Paused();\\n    event Unpaused();\\n\\n    // Events - Treasury related\\n    event TreasuryUpdated(\\n        address indexed oldTreasury,\\n        address indexed newTreasury\\n    );\\n\\n    // Owner management functions\\n    function owner() external view returns (address);\\n    function isAdmin(address account) external view returns (bool);\\n    function addAdmin(address admin) external;\\n    function removeAdmin(address admin) external;\\n\\n    // Treasury management functions\\n    function setTreasury(address payable newTreasury) external;\\n    function getTreasury() external view returns (address);\\n\\n    // Content management functions\\n    function setContentConfig(\\n        uint256 contentId,\\n        address token,\\n        uint256 price,\\n        uint256 viewCount,\\n        bool isActive\\n    ) external;\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices,\\n        uint256[] memory viewCounts,\\n        bool[] memory isActiveArray\\n    ) external;\\n    function isContentActive(uint256 contentId) external view returns (bool);\\n\\n    // Price management functions\\n    function setContentPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external;\\n    function batchSetContentPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external;\\n\\n    // Token enumeration function\\n    function getAllSupportedTokens() external view returns (address[] memory);\\n\\n    // Payment token management functions\\n    function addSupportedToken(address token) external;\\n    function removeSupportedToken(address token) external;\\n    function isSupportedToken(address token) external view returns (bool);\\n\\n    // Purchase functions\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external payable;\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external payable;\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external;\\n\\n    // Permission verification functions\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool);\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external returns (bool);\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external returns (bool[] memory);\\n\\n    // Emergency control functions\\n    function pause() external;\\n    function unpause() external;\\n\\n    // Content query functions\\n    function getContentPurchaseInfo(\\n        uint256 contentId\\n    ) external view returns (ContentPurchaseInfo memory);\\n\\n    // Upgrade functions\\n    function version() external view returns (uint256);\\n    function migrate() external;\\n}\\n\",\"keccak256\":\"0x29152914074846f7b510b1af383197fb2471ddf1ef22db375e18b30fc0c8e379\",\"license\":\"MIT\"},\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 viewCount; // View count when purchased\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Token enumeration support\\n        address[] allSupportedTokens;\\n        mapping(address => bool) tokenExists;\\n        mapping(address => uint256) tokenIndexes; // for efficient removal\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Treasury management\\n        address payable treasury;\\n        // Reserved storage slots for future upgrades\\n        uint256[47] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x2632cd70bb0c6c68b5961273772a1892d91de5017c8db97d962c4fccac156192\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libraries/VideoPaymentStorage.sol":{"VideoPaymentStorage":{"abi":[],"devdoc":{"details":"Storage layout for VideoPayment contract to ensure upgrade compatibility","kind":"dev","methods":{},"title":"VideoPaymentStorage","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200628f8f234386293201206fd5bcacb51ae95d2edf744eb5570fbf19ba5d6846764736f6c634300081c0033","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 MOD 0x28 0xF8 CALLCODE CALLVALUE CODESIZE PUSH3 0x932012 MOD REVERT JUMPDEST 0xCA 0xCB MLOAD 0xAE SWAP6 0xD2 0xED 0xF7 PREVRANDAO 0xEB SSTORE PUSH17 0xFBF19BA5D6846764736F6C634300081C00 CALLER ","sourceMap":"177:1467:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;177:1467:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200628f8f234386293201206fd5bcacb51ae95d2edf744eb5570fbf19ba5d6846764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0x28 0xF8 CALLCODE CALLVALUE CODESIZE PUSH3 0x932012 MOD REVERT JUMPDEST 0xCA 0xCB MLOAD 0xAE SWAP6 0xD2 0xED 0xF7 PREVRANDAO 0xEB SSTORE PUSH17 0xFBF19BA5D6846764736F6C634300081C00 CALLER ","sourceMap":"177:1467:17:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Storage layout for VideoPayment contract to ensure upgrade compatibility\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VideoPaymentStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/VideoPaymentStorage.sol\":\"VideoPaymentStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 viewCount; // View count when purchased\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Token enumeration support\\n        address[] allSupportedTokens;\\n        mapping(address => bool) tokenExists;\\n        mapping(address => uint256) tokenIndexes; // for efficient removal\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Treasury management\\n        address payable treasury;\\n        // Reserved storage slots for future upgrades\\n        uint256[47] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x2632cd70bb0c6c68b5961273772a1892d91de5017c8db97d962c4fccac156192\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}