{"id":"0a25a690be503ef2f015e29b649b188b","_format":"hh-sol-build-info-1","solcVersion":"zkVM-0.8.25-1.0.2","solcLongVersion":"zkVM-0.8.25-1.0.2","input":{"language":"Solidity","sources":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorInterface {\n  function latestAnswer() external view returns (int256);\n\n  function latestTimestamp() external view returns (uint256);\n\n  function latestRound() external view returns (uint256);\n\n  function getAnswer(uint256 roundId) external view returns (int256);\n\n  function getTimestamp(uint256 roundId) external view returns (uint256);\n\n  event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);\n\n  event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);\n}\n"},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./AggregatorInterface.sol\";\nimport \"./AggregatorV3Interface.sol\";\n\ninterface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {}\n"},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n  function decimals() external view returns (uint8);\n\n  function description() external view returns (string memory);\n\n  function version() external view returns (uint256);\n\n  function getRoundData(uint80 _roundId)\n    external\n    view\n    returns (\n      uint80 roundId,\n      int256 answer,\n      uint256 startedAt,\n      uint256 updatedAt,\n      uint80 answeredInRound\n    );\n\n  function latestRoundData()\n    external\n    view\n    returns (\n      uint80 roundId,\n      int256 answer,\n      uint256 startedAt,\n      uint256 updatedAt,\n      uint80 answeredInRound\n    );\n}\n"},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n    address private _pendingOwner;\n\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n    function __Ownable2Step_init() internal onlyInitializing {\n        __Ownable_init_unchained();\n    }\n\n    function __Ownable2Step_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev Returns the address of the pending owner.\n     */\n    function pendingOwner() public view virtual returns (address) {\n        return _pendingOwner;\n    }\n\n    /**\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\n        _pendingOwner = newOwner;\n        emit OwnershipTransferStarted(owner(), newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual override {\n        delete _pendingOwner;\n        super._transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev The new owner accepts the ownership transfer.\n     */\n    function acceptOwnership() public virtual {\n        address sender = _msgSender();\n        require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n        _transferOwnership(sender);\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    function __Ownable_init() internal onlyInitializing {\n        __Ownable_init_unchained();\n    }\n\n    function __Ownable_init_unchained() internal onlyInitializing {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\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 Indicates that the contract has been initialized.\n     * @custom:oz-retyped-from bool\n     */\n    uint8 private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint8 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 functions marked with `initializer` can be nested in the context of a\n     * constructor.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        bool isTopLevelCall = !_initializing;\n        require(\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n            \"Initializable: contract is already initialized\"\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 255 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint8 version) {\n        require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\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        require(_initializing, \"Initializable: contract is not initializing\");\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        require(!_initializing, \"Initializable: contract is initializing\");\n        if (_initialized != type(uint8).max) {\n            _initialized = type(uint8).max;\n            emit Initialized(type(uint8).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint8) {\n        return _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 _initializing;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    bool private _paused;\n\n    /**\n     * @dev Initializes the contract in unpaused state.\n     */\n    function __Pausable_init() internal onlyInitializing {\n        __Pausable_init_unchained();\n    }\n\n    function __Pausable_init_unchained() internal onlyInitializing {\n        _paused = false;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        return _paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        require(!paused(), \"Pausable: paused\");\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        require(paused(), \"Pausable: not paused\");\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        _paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        _paused = false;\n        emit Unpaused(_msgSender());\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\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.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\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, it is bubbled up by this\n     * function (like regular Solidity function calls).\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     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\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     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     *\n     * _Available since v3.1._\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call, an admin role\n     * bearer except when using {AccessControl-_setupRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     */\n    function renounceRole(bytes32 role, address account) external;\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\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/proxy/beacon/BeaconProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../Proxy.sol\";\nimport \"../ERC1967/ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the proxy with `beacon`.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n     * constructor.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract with the interface {IBeacon}.\n     */\n    constructor(address beacon, bytes memory data) payable {\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n\n    /**\n     * @dev Returns the current beacon address.\n     */\n    function _beacon() internal view virtual returns (address) {\n        return _getBeacon();\n    }\n\n    /**\n     * @dev Returns the current implementation address of the associated beacon.\n     */\n    function _implementation() internal view virtual override returns (address) {\n        return IBeacon(_getBeacon()).implementation();\n    }\n\n    /**\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract.\n     * - The implementation returned by `beacon` must be a contract.\n     */\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\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     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../../access/Ownable.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */\ncontract UpgradeableBeacon is IBeacon, Ownable {\n    address private _implementation;\n\n    /**\n     * @dev Emitted when the implementation returned by the beacon is changed.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n     * beacon.\n     */\n    constructor(address implementation_) {\n        _setImplementation(implementation_);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function implementation() public view virtual override returns (address) {\n        return _implementation;\n    }\n\n    /**\n     * @dev Upgrades the beacon to a new implementation.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * Requirements:\n     *\n     * - msg.sender must be the owner of the contract.\n     * - `newImplementation` must be a contract.\n     */\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Sets the implementation contract address for this beacon\n     *\n     * Requirements:\n     *\n     * - `newImplementation` must be a contract.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"UpgradeableBeacon: implementation is not a contract\");\n        _implementation = newImplementation;\n    }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n     * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n     */\n    constructor(address _logic, bytes memory _data) payable {\n        _upgradeToAndCall(_logic, _data, false);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _implementation() internal view virtual override returns (address impl) {\n        return ERC1967Upgrade._getImplementation();\n    }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/IERC1967.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967Upgrade is IERC1967 {\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\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, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(\n            Address.isContract(IBeacon(newBeacon).implementation()),\n            \"ERC1967: beacon implementation is not a contract\"\n        );\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        }\n    }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n     * and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _beforeFallback();\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n     * is empty.\n     */\n    receive() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n     * call, or as part of the Solidity `fallback` or `receive` functions.\n     *\n     * If overridden should call `super._beforeFallback()`.\n     */\n    function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.3) (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n    /**\n     * @dev Returns the current implementation of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyImplementation(ITransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Returns the current admin of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyAdmin(ITransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"admin()\")) == 0xf851a440\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Changes the admin of `proxy` to `newAdmin`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the current admin of `proxy`.\n     */\n    function changeProxyAdmin(ITransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n        proxy.changeAdmin(newAdmin);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgrade(ITransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n        proxy.upgradeTo(implementation);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n     * {TransparentUpgradeableProxy-upgradeToAndCall}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgradeAndCall(\n        ITransparentUpgradeableProxy proxy,\n        address implementation,\n        bytes memory data\n    ) public payable virtual onlyOwner {\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n    }\n}\n"},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n * does not implement this interface directly, and some of its functions are implemented by an internal dispatch\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n * include them in the ABI so this interface must be used to interact with it.\n */\ninterface ITransparentUpgradeableProxy is IERC1967 {\n    function admin() external view returns (address);\n\n    function implementation() external view returns (address);\n\n    function changeAdmin(address) external;\n\n    function upgradeTo(address) external;\n\n    function upgradeToAndCall(address, bytes memory) external payable;\n}\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n *\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n * inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n * implementation.\n *\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler\n * will not check that there are no selector conflicts, due to the note above. A selector clash between any new function\n * and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could\n * render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n    /**\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n     */\n    constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\n        _changeAdmin(admin_);\n    }\n\n    /**\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n     *\n     * CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the\n     * implementation provides a function with the same selector.\n     */\n    modifier ifAdmin() {\n        if (msg.sender == _getAdmin()) {\n            _;\n        } else {\n            _fallback();\n        }\n    }\n\n    /**\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior\n     */\n    function _fallback() internal virtual override {\n        if (msg.sender == _getAdmin()) {\n            bytes memory ret;\n            bytes4 selector = msg.sig;\n            if (selector == ITransparentUpgradeableProxy.upgradeTo.selector) {\n                ret = _dispatchUpgradeTo();\n            } else if (selector == ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\n                ret = _dispatchUpgradeToAndCall();\n            } else if (selector == ITransparentUpgradeableProxy.changeAdmin.selector) {\n                ret = _dispatchChangeAdmin();\n            } else if (selector == ITransparentUpgradeableProxy.admin.selector) {\n                ret = _dispatchAdmin();\n            } else if (selector == ITransparentUpgradeableProxy.implementation.selector) {\n                ret = _dispatchImplementation();\n            } else {\n                revert(\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n            }\n            assembly {\n                return(add(ret, 0x20), mload(ret))\n            }\n        } else {\n            super._fallback();\n        }\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function _dispatchAdmin() private returns (bytes memory) {\n        _requireZeroValue();\n\n        address admin = _getAdmin();\n        return abi.encode(admin);\n    }\n\n    /**\n     * @dev Returns the current implementation.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function _dispatchImplementation() private returns (bytes memory) {\n        _requireZeroValue();\n\n        address implementation = _implementation();\n        return abi.encode(implementation);\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _dispatchChangeAdmin() private returns (bytes memory) {\n        _requireZeroValue();\n\n        address newAdmin = abi.decode(msg.data[4:], (address));\n        _changeAdmin(newAdmin);\n\n        return \"\";\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy.\n     */\n    function _dispatchUpgradeTo() private returns (bytes memory) {\n        _requireZeroValue();\n\n        address newImplementation = abi.decode(msg.data[4:], (address));\n        _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n\n        return \"\";\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n     * proxied contract.\n     */\n    function _dispatchUpgradeToAndCall() private returns (bytes memory) {\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\n        _upgradeToAndCall(newImplementation, data, true);\n\n        return \"\";\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead.\n     */\n    function _admin() internal view virtual returns (address) {\n        return _getAdmin();\n    }\n\n    /**\n     * @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to\n     * emulate some proxy functions being non-payable while still allowing value to pass through.\n     */\n    function _requireZeroValue() private {\n        require(msg.value == 0);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping(address => uint256) private _balances;\n\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, amount);\n        _transfer(from, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        uint256 currentAllowance = allowance(owner, spender);\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        unchecked {\n            _approve(owner, spender, currentAllowance - subtractedValue);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Moves `amount` of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     */\n    function _transfer(address from, address to, uint256 amount) internal virtual {\n        require(from != address(0), \"ERC20: transfer from the zero address\");\n        require(to != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, amount);\n\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n            // decrementing then incrementing.\n            _balances[to] += amount;\n        }\n\n        emit Transfer(from, to, amount);\n\n        _afterTokenTransfer(from, to, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        unchecked {\n            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n            _balances[account] += amount;\n        }\n        emit Transfer(address(0), account, amount);\n\n        _afterTokenTransfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        unchecked {\n            _balances[account] = accountBalance - amount;\n            // Overflow not possible: amount <= accountBalance <= totalSupply.\n            _totalSupply -= amount;\n        }\n\n        emit Transfer(account, address(0), amount);\n\n        _afterTokenTransfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n     *\n     * Does not update the allowance amount in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Might emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n            unchecked {\n                _approve(owner, spender, currentAllowance - amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * has been transferred to `to`.\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` 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 amount) 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 `amount` as the allowance of `spender` over the 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 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` 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 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\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.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\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, it is bubbled up by this\n     * function (like regular Solidity function calls).\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     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\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     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\n\nimport \"./IAccessControlManagerV8.sol\";\n\n/**\n * @title AccessControlledV8\n * @author Venus\n * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\n */\nabstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {\n    /// @notice Access control manager contract\n    IAccessControlManagerV8 internal _accessControlManager;\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n\n    /// @notice Emitted when access control manager contract address is changed\n    event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager);\n\n    /// @notice Thrown when the action is prohibited by AccessControlManager\n    error Unauthorized(address sender, address calledContract, string methodSignature);\n\n    function __AccessControlled_init(address accessControlManager_) internal onlyInitializing {\n        __Ownable2Step_init();\n        __AccessControlled_init_unchained(accessControlManager_);\n    }\n\n    function __AccessControlled_init_unchained(address accessControlManager_) internal onlyInitializing {\n        _setAccessControlManager(accessControlManager_);\n    }\n\n    /**\n     * @notice Sets the address of AccessControlManager\n     * @dev Admin function to set address of AccessControlManager\n     * @param accessControlManager_ The new address of the AccessControlManager\n     * @custom:event Emits NewAccessControlManager event\n     * @custom:access Only Governance\n     */\n    function setAccessControlManager(address accessControlManager_) external onlyOwner {\n        _setAccessControlManager(accessControlManager_);\n    }\n\n    /**\n     * @notice Returns the address of the access control manager contract\n     */\n    function accessControlManager() external view returns (IAccessControlManagerV8) {\n        return _accessControlManager;\n    }\n\n    /**\n     * @dev Internal function to set address of AccessControlManager\n     * @param accessControlManager_ The new address of the AccessControlManager\n     */\n    function _setAccessControlManager(address accessControlManager_) internal {\n        require(address(accessControlManager_) != address(0), \"invalid acess control manager address\");\n        address oldAccessControlManager = address(_accessControlManager);\n        _accessControlManager = IAccessControlManagerV8(accessControlManager_);\n        emit NewAccessControlManager(oldAccessControlManager, accessControlManager_);\n    }\n\n    /**\n     * @notice Reverts if the call is not allowed by AccessControlManager\n     * @param signature Method signature\n     */\n    function _checkAccessAllowed(string memory signature) internal view {\n        bool isAllowedToCall = _accessControlManager.isAllowedToCall(msg.sender, signature);\n\n        if (!isAllowedToCall) {\n            revert Unauthorized(msg.sender, address(this), signature);\n        }\n    }\n}\n"},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n    function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n    function revokeCallPermission(\n        address contractAddress,\n        string calldata functionSig,\n        address accountToRevoke\n    ) external;\n\n    function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n    function hasPermission(\n        address account,\n        address contractAddress,\n        string calldata functionSig\n    ) external view returns (bool);\n}\n"},"@venusprotocol/solidity-utilities/contracts/constants.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n"},"@venusprotocol/solidity-utilities/contracts/validators.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n/// @notice Thrown if the supplied address is a zero address where it is not allowed\nerror ZeroAddressNotAllowed();\n\n/// @notice Thrown if the supplied value is 0 where it is not allowed\nerror ZeroValueNotAllowed();\n\n/// @notice Checks if the provided address is nonzero, reverts otherwise\n/// @param address_ Address to check\n/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address\nfunction ensureNonzeroAddress(address address_) pure {\n    if (address_ == address(0)) {\n        revert ZeroAddressNotAllowed();\n    }\n}\n\n/// @notice Checks if the provided value is nonzero, reverts otherwise\n/// @param value_ Value to check\n/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0\nfunction ensureNonzeroValue(uint256 value_) pure {\n    if (value_ == 0) {\n        revert ZeroValueNotAllowed();\n    }\n}\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol';\n"},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol';\n"},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol';\n"},"contracts/interfaces/FeedRegistryInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n    function latestRoundDataByName(\n        string memory base,\n        string memory quote\n    )\n        external\n        view\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n    function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n"},"contracts/interfaces/IAccountant.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAccountant {\n    function getRateSafe() external view returns (uint256);\n}\n"},"contracts/interfaces/IAnkrBNB.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAnkrBNB {\n    function sharesToBonds(uint256 amount) external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/IAsBNB.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNB {\n    function minter() external view returns (address);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/IAsBNBMinter.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IAsBNBMinter {\n    function convertToTokens(uint256 amount) external view returns (uint256);\n}\n"},"contracts/interfaces/ICappedOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ICappedOracle {\n    function updateSnapshot() external;\n}\n"},"contracts/interfaces/IERC4626.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IERC4626 {\n    function convertToAssets(uint256 shares) external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/IEtherFiLiquidityPool.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IEtherFiLiquidityPool {\n    function amountForShare(uint256 _share) external view returns (uint256);\n}\n"},"contracts/interfaces/IPendlePtOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPendlePtOracle {\n    function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);\n\n    function getPtToSyRate(address market, uint32 duration) external view returns (uint256);\n\n    function getOracleState(\n        address market,\n        uint32 duration\n    )\n        external\n        view\n        returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied);\n}\n"},"contracts/interfaces/IPStakePool.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IPStakePool {\n    struct Data {\n        uint256 totalWei;\n        uint256 poolTokenSupply;\n    }\n\n    /**\n     * @dev The current exchange rate for converting stkBNB to BNB.\n     */\n    function exchangeRate() external view returns (Data memory);\n}\n"},"contracts/interfaces/ISFrax.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISFrax {\n    function convertToAssets(uint256 shares) external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/ISfrxEthFraxOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISfrxEthFraxOracle {\n    function getPrices() external view returns (bool _isbadData, uint256 _priceLow, uint256 _priceHigh);\n}\n"},"contracts/interfaces/IStaderStakeManager.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IStaderStakeManager {\n    function convertBnbXToBnb(uint256 _amount) external view returns (uint256);\n}\n"},"contracts/interfaces/IStETH.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IStETH {\n    function getPooledEthByShares(uint256 _sharesAmount) external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/ISynclubStakeManager.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface ISynclubStakeManager {\n    function convertSnBnbToBnb(uint256 _amount) external view returns (uint256);\n}\n"},"contracts/interfaces/IWBETH.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\ninterface IWBETH {\n    function exchangeRate() external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/IZkETH.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface IZkETH {\n    function LSTPerToken() external view returns (uint256);\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/OracleInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n    function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n    function updatePrice(address vToken) external;\n\n    function updateAssetPrice(address asset) external;\n\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n    function validatePriceWithAnchorPrice(\n        address asset,\n        uint256 reporterPrice,\n        uint256 anchorPrice\n    ) external view returns (bool);\n}\n"},"contracts/interfaces/PublicResolverInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n    function addr(bytes32 node) external view returns (address payable);\n}\n"},"contracts/interfaces/SIDRegistryInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n    function resolver(bytes32 node) external view returns (address);\n}\n"},"contracts/interfaces/VBep20Interface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n    /**\n     * @notice Underlying asset for this VToken\n     */\n    function underlying() external view returns (address);\n}\n"},"contracts/lib/Transient.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nlibrary Transient {\n    /**\n     * @notice Cache the asset price into transient storage\n     * @param key address of the asset\n     * @param value asset price\n     */\n    function cachePrice(bytes32 cacheSlot, address key, uint256 value) internal {\n        bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n\n    /**\n     * @notice Read cached price from transient storage\n     * @param key address of the asset\n     * @return value cached asset price\n     */\n    function readCachedPrice(bytes32 cacheSlot, address key) internal view returns (uint256 value) {\n        bytes32 slot = keccak256(abi.encode(cacheSlot, key));\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n}\n"},"contracts/oracles/AnkrBNBOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title AnkrBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of ankrBNB asset\n */\ncontract AnkrBNBOracle is CorrelatedTokenOracle {\n    /// @notice This is used as token address of BNB on BSC\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address ankrBNB,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            ankrBNB,\n            NATIVE_TOKEN_ADDR,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {}\n\n    /**\n     * @notice Fetches the amount of BNB for 1 ankrBNB\n     * @return amount The amount of BNB for ankrBNB\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return IAnkrBNB(CORRELATED_TOKEN).sharesToBonds(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/AsBNBOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title asBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of asBNB asset\n */\ncontract AsBNBOracle is CorrelatedTokenOracle {\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address asBNB,\n        address slisBNB,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            asBNB,\n            slisBNB,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {}\n\n    /**\n     * @notice Fetches the amount of slisBNB for 1 asBNB\n     * @return price The amount of slisBNB for asBNB\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        IAsBNBMinter minter = IAsBNBMinter(IAsBNB(CORRELATED_TOKEN).minter());\n        return minter.convertToTokens(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/BinanceOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/SIDRegistryInterface.sol\";\nimport \"../interfaces/FeedRegistryInterface.sol\";\nimport \"../interfaces/PublicResolverInterface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title BinanceOracle\n * @author Venus\n * @notice This oracle fetches price of assets from Binance.\n */\ncontract BinanceOracle is AccessControlledV8, OracleInterface {\n    /// @notice Used to fetch feed registry address.\n    address public sidRegistryAddress;\n\n    /// @notice Set this as asset address for BNB. This is the underlying address for vBNB\n    address public constant BNB_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Max stale period configuration for assets\n    mapping(string => uint256) public maxStalePeriod;\n\n    /// @notice Override symbols to be compatible with Binance feed registry\n    mapping(string => string) public symbols;\n\n    /// @notice Used to fetch price of assets used directly when space ID is not supported by current chain.\n    address public feedRegistryAddress;\n\n    /// @notice Emits when asset stale period is updated.\n    event MaxStalePeriodAdded(string indexed asset, uint256 maxStalePeriod);\n\n    /// @notice Emits when symbol of the asset is updated.\n    event SymbolOverridden(string indexed symbol, string overriddenSymbol);\n\n    /// @notice Emits when address of feed registry is updated.\n    event FeedRegistryUpdated(address indexed oldFeedRegistry, address indexed newFeedRegistry);\n\n    /**\n     * @notice Checks whether an address is null or not\n     */\n    modifier notNullAddress(address someone) {\n        if (someone == address(0)) revert(\"can't be zero address\");\n        _;\n    }\n\n    /// @notice Constructor for the implementation contract.\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor() {\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Sets the contracts required to fetch prices\n     * @param _sidRegistryAddress Address of SID registry\n     * @param _acm Address of the access control manager contract\n     */\n    function initialize(address _sidRegistryAddress, address _acm) external initializer {\n        sidRegistryAddress = _sidRegistryAddress;\n        __AccessControlled_init(_acm);\n    }\n\n    /**\n     * @notice Used to set the max stale period of an asset\n     * @param symbol The symbol of the asset\n     * @param _maxStalePeriod The max stake period\n     */\n    function setMaxStalePeriod(string memory symbol, uint256 _maxStalePeriod) external {\n        _checkAccessAllowed(\"setMaxStalePeriod(string,uint256)\");\n        if (_maxStalePeriod == 0) revert(\"stale period can't be zero\");\n        if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n        maxStalePeriod[symbol] = _maxStalePeriod;\n        emit MaxStalePeriodAdded(symbol, _maxStalePeriod);\n    }\n\n    /**\n     * @notice Used to override a symbol when fetching price\n     * @param symbol The symbol to override\n     * @param overrideSymbol The symbol after override\n     */\n    function setSymbolOverride(string calldata symbol, string calldata overrideSymbol) external {\n        _checkAccessAllowed(\"setSymbolOverride(string,string)\");\n        if (bytes(symbol).length == 0) revert(\"symbol cannot be empty\");\n\n        symbols[symbol] = overrideSymbol;\n        emit SymbolOverridden(symbol, overrideSymbol);\n    }\n\n    /**\n     * @notice Used to set feed registry address when current chain does not support space ID.\n     * @param newfeedRegistryAddress Address of new feed registry.\n     */\n    function setFeedRegistryAddress(\n        address newfeedRegistryAddress\n    ) external notNullAddress(newfeedRegistryAddress) onlyOwner {\n        if (sidRegistryAddress != address(0)) revert(\"sidRegistryAddress must be zero\");\n        emit FeedRegistryUpdated(feedRegistryAddress, newfeedRegistryAddress);\n        feedRegistryAddress = newfeedRegistryAddress;\n    }\n\n    /**\n     * @notice Uses Space ID to fetch the feed registry address\n     * @return feedRegistryAddress Address of binance oracle feed registry.\n     */\n    function getFeedRegistryAddress() public view returns (address) {\n        bytes32 nodeHash = 0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff;\n\n        SIDRegistryInterface sidRegistry = SIDRegistryInterface(sidRegistryAddress);\n        address publicResolverAddress = sidRegistry.resolver(nodeHash);\n        PublicResolverInterface publicResolver = PublicResolverInterface(publicResolverAddress);\n\n        return publicResolver.addr(nodeHash);\n    }\n\n    /**\n     * @notice Gets the price of a asset from the binance oracle\n     * @param asset Address of the asset\n     * @return Price in USD\n     */\n    function getPrice(address asset) public view returns (uint256) {\n        string memory symbol;\n        uint256 decimals;\n\n        if (asset == BNB_ADDR) {\n            symbol = \"BNB\";\n            decimals = 18;\n        } else {\n            IERC20Metadata token = IERC20Metadata(asset);\n            symbol = token.symbol();\n            decimals = token.decimals();\n        }\n\n        string memory overrideSymbol = symbols[symbol];\n\n        if (bytes(overrideSymbol).length != 0) {\n            symbol = overrideSymbol;\n        }\n\n        return _getPrice(symbol, decimals);\n    }\n\n    function _getPrice(string memory symbol, uint256 decimals) internal view returns (uint256) {\n        FeedRegistryInterface feedRegistry;\n\n        if (sidRegistryAddress != address(0)) {\n            // If sidRegistryAddress is available, fetch feedRegistryAddress from sidRegistry\n            feedRegistry = FeedRegistryInterface(getFeedRegistryAddress());\n        } else {\n            // Use feedRegistry directly if sidRegistryAddress is not available\n            feedRegistry = FeedRegistryInterface(feedRegistryAddress);\n        }\n\n        (, int256 answer, , uint256 updatedAt, ) = feedRegistry.latestRoundDataByName(symbol, \"USD\");\n        if (answer <= 0) revert(\"invalid binance oracle price\");\n        if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n        uint256 deltaTime;\n        unchecked {\n            deltaTime = block.timestamp - updatedAt;\n        }\n        if (deltaTime > maxStalePeriod[symbol]) revert(\"binance oracle price expired\");\n\n        uint256 decimalDelta = feedRegistry.decimalsByName(symbol, \"USD\");\n        return (uint256(answer) * (10 ** (18 - decimalDelta))) * (10 ** (18 - decimals));\n    }\n}\n"},"contracts/oracles/BNBxOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStaderStakeManager } from \"../interfaces/IStaderStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title BNBxOracle\n * @author Venus\n * @notice This oracle fetches the price of BNBx asset\n */\ncontract BNBxOracle is CorrelatedTokenOracle {\n    /// @notice This is used as token address of BNB on BSC\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Address of StakeManager\n    IStaderStakeManager public immutable STAKE_MANAGER;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address stakeManager,\n        address bnbx,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            bnbx,\n            NATIVE_TOKEN_ADDR,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(stakeManager);\n        STAKE_MANAGER = IStaderStakeManager(stakeManager);\n    }\n\n    /**\n     * @notice Fetches the amount of BNB for 1 BNBx\n     * @return price The amount of BNB for BNBx\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return STAKE_MANAGER.convertBnbXToBnb(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/BoundValidator.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title BoundValidator\n * @author Venus\n * @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n * Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n * it must fall within this range of the validator price.\n */\ncontract BoundValidator is AccessControlledV8, BoundValidatorInterface {\n    struct ValidateConfig {\n        /// @notice asset address\n        address asset;\n        /// @notice Upper bound of deviation between reported price and anchor price,\n        /// beyond which the reported price will be invalidated\n        uint256 upperBoundRatio;\n        /// @notice Lower bound of deviation between reported price and anchor price,\n        /// below which the reported price will be invalidated\n        uint256 lowerBoundRatio;\n    }\n\n    /// @notice validation configs by asset\n    mapping(address => ValidateConfig) public validateConfigs;\n\n    /// @notice Emit this event when new validation configs are added\n    event ValidateConfigAdded(address indexed asset, uint256 indexed upperBound, uint256 indexed lowerBound);\n\n    /// @notice Constructor for the implementation contract. Sets immutable variables.\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor() {\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Initializes the owner of the contract\n     * @param accessControlManager_ Address of the access control manager contract\n     */\n    function initialize(address accessControlManager_) external initializer {\n        __AccessControlled_init(accessControlManager_);\n    }\n\n    /**\n     * @notice Add multiple validation configs at the same time\n     * @param configs Array of validation configs\n     * @custom:access Only Governance\n     * @custom:error Zero length error is thrown if length of the config array is 0\n     * @custom:event Emits ValidateConfigAdded for each validation config that is successfully set\n     */\n    function setValidateConfigs(ValidateConfig[] memory configs) external {\n        uint256 length = configs.length;\n        if (length == 0) revert(\"invalid validate config length\");\n        for (uint256 i; i < length; ++i) {\n            setValidateConfig(configs[i]);\n        }\n    }\n\n    /**\n     * @notice Add a single validation config\n     * @param config Validation config struct\n     * @custom:access Only Governance\n     * @custom:error Null address error is thrown if asset address is null\n     * @custom:error Range error thrown if bound ratio is not positive\n     * @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n     * @custom:event Emits ValidateConfigAdded when a validation config is successfully set\n     */\n    function setValidateConfig(ValidateConfig memory config) public {\n        _checkAccessAllowed(\"setValidateConfig(ValidateConfig)\");\n\n        if (config.asset == address(0)) revert(\"asset can't be zero address\");\n        if (config.upperBoundRatio == 0 || config.lowerBoundRatio == 0) revert(\"bound must be positive\");\n        if (config.upperBoundRatio <= config.lowerBoundRatio) revert(\"upper bound must be higher than lowner bound\");\n        validateConfigs[config.asset] = config;\n        emit ValidateConfigAdded(config.asset, config.upperBoundRatio, config.lowerBoundRatio);\n    }\n\n    /**\n     * @notice Test reported asset price against anchor price\n     * @param asset asset address\n     * @param reportedPrice The price to be tested\n     * @custom:error Missing error thrown if asset config is not set\n     * @custom:error Price error thrown if anchor price is not valid\n     */\n    function validatePriceWithAnchorPrice(\n        address asset,\n        uint256 reportedPrice,\n        uint256 anchorPrice\n    ) public view virtual override returns (bool) {\n        if (validateConfigs[asset].upperBoundRatio == 0) revert(\"validation config not exist\");\n        if (anchorPrice == 0) revert(\"anchor price is not valid\");\n        return _isWithinAnchor(asset, reportedPrice, anchorPrice);\n    }\n\n    /**\n     * @notice Test whether the reported price is within the valid bounds\n     * @param asset Asset address\n     * @param reportedPrice The price to be tested\n     * @param anchorPrice The reported price must be within the the valid bounds of this price\n     */\n    function _isWithinAnchor(address asset, uint256 reportedPrice, uint256 anchorPrice) private view returns (bool) {\n        if (reportedPrice != 0) {\n            // we need to multiply anchorPrice by 1e18 to make the ratio 18 decimals\n            uint256 anchorRatio = (anchorPrice * 1e18) / reportedPrice;\n            uint256 upperBoundAnchorRatio = validateConfigs[asset].upperBoundRatio;\n            uint256 lowerBoundAnchorRatio = validateConfigs[asset].lowerBoundRatio;\n            return anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio;\n        }\n        return false;\n    }\n\n    // BoundValidator is to get inherited, so it's a good practice to add some storage gaps like\n    // OpenZepplin proposed in their contracts: https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n    // solhint-disable-next-line\n    uint256[49] private __gap;\n}\n"},"contracts/oracles/ChainlinkOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/VBep20Interface.sol\";\nimport \"../interfaces/OracleInterface.sol\";\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\nimport \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\n\n/**\n * @title ChainlinkOracle\n * @author Venus\n * @notice This oracle fetches prices of assets from the Chainlink oracle.\n */\ncontract ChainlinkOracle is AccessControlledV8, OracleInterface {\n    struct TokenConfig {\n        /// @notice Underlying token address, which can't be a null address\n        /// @notice Used to check if a token is supported\n        /// @notice 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB address for native tokens\n        ///         (e.g BNB for BNB chain, ETH for Ethereum network)\n        address asset;\n        /// @notice Chainlink feed address\n        address feed;\n        /// @notice Price expiration period of this asset\n        uint256 maxStalePeriod;\n    }\n\n    /// @notice Set this as asset address for native token on each chain.\n    /// This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Manually set an override price, useful under extenuating conditions such as price feed failure\n    mapping(address => uint256) public prices;\n\n    /// @notice Token config by assets\n    mapping(address => TokenConfig) public tokenConfigs;\n\n    /// @notice Emit when a price is manually set\n    event PricePosted(address indexed asset, uint256 previousPriceMantissa, uint256 newPriceMantissa);\n\n    /// @notice Emit when a token config is added\n    event TokenConfigAdded(address indexed asset, address feed, uint256 maxStalePeriod);\n\n    modifier notNullAddress(address someone) {\n        if (someone == address(0)) revert(\"can't be zero address\");\n        _;\n    }\n\n    /// @notice Constructor for the implementation contract.\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor() {\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Initializes the owner of the contract\n     * @param accessControlManager_ Address of the access control manager contract\n     */\n    function initialize(address accessControlManager_) external initializer {\n        __AccessControlled_init(accessControlManager_);\n    }\n\n    /**\n     * @notice Manually set the price of a given asset\n     * @param asset Asset address\n     * @param price Asset price in 18 decimals\n     * @custom:access Only Governance\n     * @custom:event Emits PricePosted event on successfully setup of asset price\n     */\n    function setDirectPrice(address asset, uint256 price) external notNullAddress(asset) {\n        _checkAccessAllowed(\"setDirectPrice(address,uint256)\");\n\n        uint256 previousPriceMantissa = prices[asset];\n        prices[asset] = price;\n        emit PricePosted(asset, previousPriceMantissa, price);\n    }\n\n    /**\n     * @notice Add multiple token configs at the same time\n     * @param tokenConfigs_ config array\n     * @custom:access Only Governance\n     * @custom:error Zero length error thrown, if length of the array in parameter is 0\n     */\n    function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n        if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n        uint256 numTokenConfigs = tokenConfigs_.length;\n        for (uint256 i; i < numTokenConfigs; ++i) {\n            setTokenConfig(tokenConfigs_[i]);\n        }\n    }\n\n    /**\n     * @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n     * @param tokenConfig Token config struct\n     * @custom:access Only Governance\n     * @custom:error NotNullAddress error is thrown if asset address is null\n     * @custom:error NotNullAddress error is thrown if token feed address is null\n     * @custom:error Range error is thrown if maxStale period of token is not greater than zero\n     * @custom:event Emits TokenConfigAdded event on successfully setting of the token config\n     */\n    function setTokenConfig(\n        TokenConfig memory tokenConfig\n    ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.feed) {\n        _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n        if (tokenConfig.maxStalePeriod == 0) revert(\"stale period can't be zero\");\n        tokenConfigs[tokenConfig.asset] = tokenConfig;\n        emit TokenConfigAdded(tokenConfig.asset, tokenConfig.feed, tokenConfig.maxStalePeriod);\n    }\n\n    /**\n     * @notice Gets the price of a asset from the chainlink oracle\n     * @param asset Address of the asset\n     * @return Price in USD from Chainlink or a manually set price for the asset\n     */\n    function getPrice(address asset) public view virtual returns (uint256) {\n        uint256 decimals;\n\n        if (asset == NATIVE_TOKEN_ADDR) {\n            decimals = 18;\n        } else {\n            IERC20Metadata token = IERC20Metadata(asset);\n            decimals = token.decimals();\n        }\n\n        return _getPriceInternal(asset, decimals);\n    }\n\n    /**\n     * @notice Gets the Chainlink price for a given asset\n     * @param asset address of the asset\n     * @param decimals decimals of the asset\n     * @return price Asset price in USD or a manually set price of the asset\n     */\n    function _getPriceInternal(address asset, uint256 decimals) internal view returns (uint256 price) {\n        uint256 tokenPrice = prices[asset];\n        if (tokenPrice != 0) {\n            price = tokenPrice;\n        } else {\n            price = _getChainlinkPrice(asset);\n        }\n\n        uint256 decimalDelta = 18 - decimals;\n        return price * (10 ** decimalDelta);\n    }\n\n    /**\n     * @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n     * @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n     * @param asset Address of the asset\n     * @return price Price in USD, with 18 decimals of precision\n     * @custom:error NotNullAddress error is thrown if the asset address is null\n     * @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n     * @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n     * @custom:error Timing error is thrown if time difference between current time and last updated time\n     * is greater than maxStalePeriod\n     */\n    function _getChainlinkPrice(\n        address asset\n    ) private view notNullAddress(tokenConfigs[asset].asset) returns (uint256) {\n        TokenConfig memory tokenConfig = tokenConfigs[asset];\n        AggregatorV3Interface feed = AggregatorV3Interface(tokenConfig.feed);\n\n        // note: maxStalePeriod cannot be 0\n        uint256 maxStalePeriod = tokenConfig.maxStalePeriod;\n\n        // Chainlink USD-denominated feeds store answers at 8 decimals, mostly\n        uint256 decimalDelta = 18 - feed.decimals();\n\n        (, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();\n        if (answer <= 0) revert(\"chainlink price must be positive\");\n        if (block.timestamp < updatedAt) revert(\"updatedAt exceeds block time\");\n\n        uint256 deltaTime;\n        unchecked {\n            deltaTime = block.timestamp - updatedAt;\n        }\n\n        if (deltaTime > maxStalePeriod) revert(\"chainlink price expired\");\n\n        return uint256(answer) * (10 ** decimalDelta);\n    }\n}\n"},"contracts/oracles/common/CorrelatedTokenOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../../interfaces/OracleInterface.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { SECONDS_PER_YEAR } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { ICappedOracle } from \"../../interfaces/ICappedOracle.sol\";\nimport { IAccessControlManagerV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\";\n\n/**\n * @title CorrelatedTokenOracle\n * @notice This oracle fetches the price of a token that is correlated to another token.\n */\nabstract contract CorrelatedTokenOracle is OracleInterface, ICappedOracle {\n    /// @notice Address of the correlated token\n    address public immutable CORRELATED_TOKEN;\n\n    /// @notice Address of the underlying token\n    address public immutable UNDERLYING_TOKEN;\n\n    /// @notice Address of Resilient Oracle\n    ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n    /// @notice Address of the AccessControlManager contract\n    IAccessControlManagerV8 public immutable ACCESS_CONTROL_MANAGER;\n\n    //// @notice Growth rate percentage in seconds. Ex: 1e18 is 100%\n    uint256 public growthRatePerSecond;\n\n    /// @notice Snapshot update interval\n    uint256 public snapshotInterval;\n\n    /// @notice Last stored snapshot maximum exchange rate\n    uint256 public snapshotMaxExchangeRate;\n\n    /// @notice Last stored snapshot timestamp\n    uint256 public snapshotTimestamp;\n\n    /// @notice Gap to add when updating the snapshot\n    uint256 public snapshotGap;\n\n    /// @notice Emitted when the snapshot is updated\n    event SnapshotUpdated(uint256 indexed maxExchangeRate, uint256 indexed timestamp);\n\n    /// @notice Emitted when the growth rate is updated\n    event GrowthRateUpdated(\n        uint256 indexed oldGrowthRatePerSecond,\n        uint256 indexed newGrowthRatePerSecond,\n        uint256 indexed oldSnapshotInterval,\n        uint256 newSnapshotInterval\n    );\n\n    /// @notice Emitted when the snapshot gap is updated\n    event SnapshotGapUpdated(uint256 indexed oldSnapshotGap, uint256 indexed newSnapshotGap);\n\n    /// @notice Thrown if the token address is invalid\n    error InvalidTokenAddress();\n\n    /// @notice Thrown if the growth rate is invalid\n    error InvalidGrowthRate();\n\n    /// @notice Thrown if the initial snapshot is invalid\n    error InvalidInitialSnapshot();\n\n    /// @notice Thrown if the max snapshot exchange rate is invalid\n    error InvalidSnapshotMaxExchangeRate();\n\n    /// @notice @notice Thrown when the action is prohibited by AccessControlManager\n    error Unauthorized(address sender, address calledContract, string methodSignature);\n\n    /**\n     * @notice Constructor for the implementation contract.\n     * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n     * @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\n     */\n    constructor(\n        address _correlatedToken,\n        address _underlyingToken,\n        address _resilientOracle,\n        uint256 _annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 _initialSnapshotMaxExchangeRate,\n        uint256 _initialSnapshotTimestamp,\n        address _accessControlManager,\n        uint256 _snapshotGap\n    ) {\n        growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n        if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n            revert InvalidGrowthRate();\n\n        if ((_initialSnapshotMaxExchangeRate == 0 || _initialSnapshotTimestamp == 0) && _snapshotInterval > 0) {\n            revert InvalidInitialSnapshot();\n        }\n\n        ensureNonzeroAddress(_correlatedToken);\n        ensureNonzeroAddress(_underlyingToken);\n        ensureNonzeroAddress(_resilientOracle);\n        ensureNonzeroAddress(_accessControlManager);\n\n        CORRELATED_TOKEN = _correlatedToken;\n        UNDERLYING_TOKEN = _underlyingToken;\n        RESILIENT_ORACLE = ResilientOracleInterface(_resilientOracle);\n        snapshotInterval = _snapshotInterval;\n\n        snapshotMaxExchangeRate = _initialSnapshotMaxExchangeRate;\n        snapshotTimestamp = _initialSnapshotTimestamp;\n        snapshotGap = _snapshotGap;\n\n        ACCESS_CONTROL_MANAGER = IAccessControlManagerV8(_accessControlManager);\n    }\n\n    /**\n     * @notice Directly sets the snapshot exchange rate and timestamp\n     * @param _snapshotMaxExchangeRate The exchange rate to set\n     * @param _snapshotTimestamp The timestamp to set\n     * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n     */\n    function setSnapshot(uint256 _snapshotMaxExchangeRate, uint256 _snapshotTimestamp) external {\n        _checkAccessAllowed(\"setSnapshot(uint256,uint256)\");\n\n        snapshotMaxExchangeRate = _snapshotMaxExchangeRate;\n        snapshotTimestamp = _snapshotTimestamp;\n\n        emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n    }\n\n    /**\n     * @notice Sets the growth rate and snapshot interval\n     * @param _annualGrowthRate The annual growth rate to set\n     * @param _snapshotInterval The snapshot interval to set\n     * @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n     * @custom:event Emits GrowthRateUpdated event on successful update of the growth rate\n     */\n    function setGrowthRate(uint256 _annualGrowthRate, uint256 _snapshotInterval) external {\n        _checkAccessAllowed(\"setGrowthRate(uint256,uint256)\");\n        uint256 oldGrowthRatePerSecond = growthRatePerSecond;\n\n        growthRatePerSecond = _annualGrowthRate / SECONDS_PER_YEAR;\n\n        if ((growthRatePerSecond == 0 && _snapshotInterval > 0) || (growthRatePerSecond > 0 && _snapshotInterval == 0))\n            revert InvalidGrowthRate();\n\n        emit GrowthRateUpdated(oldGrowthRatePerSecond, growthRatePerSecond, snapshotInterval, _snapshotInterval);\n\n        snapshotInterval = _snapshotInterval;\n    }\n\n    /**\n     * @notice Sets the snapshot gap\n     * @param _snapshotGap The snapshot gap to set\n     * @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap\n     */\n    function setSnapshotGap(uint256 _snapshotGap) external {\n        _checkAccessAllowed(\"setSnapshotGap(uint256)\");\n\n        emit SnapshotGapUpdated(snapshotGap, _snapshotGap);\n\n        snapshotGap = _snapshotGap;\n    }\n\n    /**\n     * @notice Returns if the price is capped\n     * @return isCapped Boolean indicating if the price is capped\n     */\n    function isCapped() external view virtual returns (bool) {\n        if (snapshotInterval == 0) {\n            return false;\n        }\n\n        uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n        if (maxAllowedExchangeRate == 0) {\n            return false;\n        }\n\n        uint256 exchangeRate = getUnderlyingAmount();\n\n        return exchangeRate > maxAllowedExchangeRate;\n    }\n\n    /**\n     * @notice Updates the snapshot price and timestamp\n     * @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n     * @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\n     */\n    function updateSnapshot() public override {\n        if (block.timestamp - snapshotTimestamp < snapshotInterval || snapshotInterval == 0) return;\n\n        uint256 exchangeRate = getUnderlyingAmount();\n        uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n        snapshotMaxExchangeRate =\n            (exchangeRate > maxAllowedExchangeRate ? maxAllowedExchangeRate : exchangeRate) +\n            snapshotGap;\n        snapshotTimestamp = block.timestamp;\n\n        if (snapshotMaxExchangeRate == 0) revert InvalidSnapshotMaxExchangeRate();\n\n        RESILIENT_ORACLE.updateAssetPrice(UNDERLYING_TOKEN);\n        emit SnapshotUpdated(snapshotMaxExchangeRate, snapshotTimestamp);\n    }\n\n    /**\n     * @notice Fetches the price of the token\n     * @param asset Address of the token\n     * @return price The price of the token in scaled decimal places. It can be capped\n     * to a maximum value taking into account the growth rate\n     * @custom:error InvalidTokenAddress error is thrown if the token address is invalid\n     */\n    function getPrice(address asset) public view override returns (uint256) {\n        if (asset != CORRELATED_TOKEN) revert InvalidTokenAddress();\n\n        uint256 exchangeRate = getUnderlyingAmount();\n\n        if (snapshotInterval == 0) {\n            return _calculatePrice(exchangeRate);\n        }\n\n        uint256 maxAllowedExchangeRate = getMaxAllowedExchangeRate();\n\n        uint256 finalExchangeRate = (exchangeRate > maxAllowedExchangeRate && maxAllowedExchangeRate != 0)\n            ? maxAllowedExchangeRate\n            : exchangeRate;\n\n        return _calculatePrice(finalExchangeRate);\n    }\n\n    /**\n     * @notice Gets the maximum allowed exchange rate for token\n     * @return maxExchangeRate Maximum allowed exchange rate\n     */\n    function getMaxAllowedExchangeRate() public view returns (uint256) {\n        uint256 timeElapsed = block.timestamp - snapshotTimestamp;\n        uint256 maxExchangeRate = snapshotMaxExchangeRate +\n            (snapshotMaxExchangeRate * growthRatePerSecond * timeElapsed) /\n            1e18;\n        return maxExchangeRate;\n    }\n\n    /**\n     * @notice Gets the underlying amount for correlated token\n     * @return underlyingAmount Amount of underlying token\n     */\n    function getUnderlyingAmount() public view virtual returns (uint256);\n\n    /**\n     * @notice Fetches price of the token based on an underlying exchange rate\n     * @param exchangeRate The underlying exchange rate to use\n     * @return price The price of the token in scaled decimal places\n     */\n    function _calculatePrice(uint256 exchangeRate) internal view returns (uint256) {\n        uint256 underlyingUSDPrice = RESILIENT_ORACLE.getPrice(UNDERLYING_TOKEN);\n\n        IERC20Metadata token = IERC20Metadata(CORRELATED_TOKEN);\n        uint256 decimals = token.decimals();\n\n        return (exchangeRate * underlyingUSDPrice) / (10 ** decimals);\n    }\n\n    /**\n     * @notice Reverts if the call is not allowed by AccessControlManager\n     * @param signature Method signature\n     * @custom:error Unauthorized error is thrown if the call is not allowed\n     */\n    function _checkAccessAllowed(string memory signature) internal view {\n        bool isAllowedToCall = ACCESS_CONTROL_MANAGER.isAllowedToCall(msg.sender, signature);\n\n        if (!isAllowedToCall) {\n            revert Unauthorized(msg.sender, address(this), signature);\n        }\n    }\n}\n"},"contracts/oracles/ERC4626Oracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IERC4626 } from \"../interfaces/IERC4626.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ERC4626Oracle\n * @author Venus\n * @notice This oracle fetches the price of ERC4626 tokens\n */\ncontract ERC4626Oracle is CorrelatedTokenOracle {\n    uint256 public immutable ONE_CORRELATED_TOKEN;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address correlatedToken,\n        address underlyingToken,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            correlatedToken,\n            underlyingToken,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ONE_CORRELATED_TOKEN = 10 ** IERC4626(correlatedToken).decimals();\n    }\n\n    /**\n     * @notice Fetches the amount of underlying token for 1 correlated token\n     * @return amount The amount of underlying token for correlated token\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return IERC4626(CORRELATED_TOKEN).convertToAssets(ONE_CORRELATED_TOKEN);\n    }\n}\n"},"contracts/oracles/EtherfiAccountantOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title EtherfiAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of any Ether.fi asset that uses\n * Accountant contracts to derive the underlying price\n */\ncontract EtherfiAccountantOracle is CorrelatedTokenOracle {\n    /// @notice Address of Accountant\n    IAccountant public immutable ACCOUNTANT;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address accountant,\n        address correlatedToken,\n        address underlyingToken,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            correlatedToken,\n            underlyingToken,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(accountant);\n        ACCOUNTANT = IAccountant(accountant);\n    }\n\n    /**\n     * @notice Fetches the conversion rate from the ACCOUNTANT contract\n     * @return amount Amount of WBTC\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return ACCOUNTANT.getRateSafe();\n    }\n}\n"},"contracts/oracles/mocks/MockAccountant.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IAccountant.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAccountant is IAccountant, Ownable {\n    uint256 public rate;\n\n    constructor() Ownable() {}\n\n    function setRate(uint256 _rate) external onlyOwner {\n        rate = _rate;\n    }\n\n    function getRateSafe() external view override returns (uint256) {\n        return rate;\n    }\n}\n"},"contracts/oracles/mocks/MockBinanceFeedRegistry.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/FeedRegistryInterface.sol\";\n\ncontract MockBinanceFeedRegistry is FeedRegistryInterface {\n    mapping(string => uint256) public assetPrices;\n\n    function setAssetPrice(string memory base, uint256 price) external {\n        assetPrices[base] = price;\n    }\n\n    function latestRoundDataByName(\n        string memory base,\n        string memory quote\n    )\n        external\n        view\n        override\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n    {\n        quote;\n        return (0, int256(assetPrices[base]), 0, block.timestamp - 10, 0);\n    }\n\n    function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n        return 8;\n    }\n}\n"},"contracts/oracles/mocks/MockBinanceOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockBinanceOracle is OwnableUpgradeable, OracleInterface {\n    mapping(address => uint256) public assetPrices;\n\n    constructor() {}\n\n    function initialize() public initializer {}\n\n    function setPrice(address asset, uint256 price) external {\n        assetPrices[asset] = price;\n    }\n\n    function getPrice(address token) public view returns (uint256) {\n        return assetPrices[token];\n    }\n}\n"},"contracts/oracles/mocks/MockChainlinkOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OwnableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport { OracleInterface } from \"../../interfaces/OracleInterface.sol\";\n\ncontract MockChainlinkOracle is OwnableUpgradeable, OracleInterface {\n    mapping(address => uint256) public assetPrices;\n\n    //set price in 6 decimal precision\n    constructor() {}\n\n    function initialize() public initializer {\n        __Ownable_init();\n    }\n\n    function setPrice(address asset, uint256 price) external {\n        assetPrices[asset] = price;\n    }\n\n    //https://compound.finance/docs/prices\n    function getPrice(address token) public view returns (uint256) {\n        return assetPrices[token];\n    }\n}\n"},"contracts/oracles/mocks/MockPendlePtOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/IPendlePtOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockPendlePtOracle is IPendlePtOracle, Ownable {\n    mapping(address => mapping(uint32 => uint256)) public ptToAssetRate;\n    mapping(address => mapping(uint32 => uint256)) public ptToSyRate;\n\n    constructor() Ownable() {}\n\n    function setPtToAssetRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n        ptToAssetRate[market][duration] = rate;\n    }\n\n    function setPtToSyRate(address market, uint32 duration, uint256 rate) external onlyOwner {\n        ptToSyRate[market][duration] = rate;\n    }\n\n    function getPtToAssetRate(address market, uint32 duration) external view returns (uint256) {\n        return ptToAssetRate[market][duration];\n    }\n\n    function getPtToSyRate(address market, uint32 duration) external view returns (uint256) {\n        return ptToSyRate[market][duration];\n    }\n\n    function getOracleState(\n        address /* market */,\n        uint32 /* duration */\n    )\n        external\n        pure\n        returns (bool increaseCardinalityRequired, uint16 cardinalityRequired, bool oldestObservationSatisfied)\n    {\n        return (false, 0, true);\n    }\n}\n"},"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/ISfrxEthFraxOracle.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSfrxEthFraxOracle is ISfrxEthFraxOracle, Ownable {\n    bool public isBadData;\n    uint256 public priceLow;\n    uint256 public priceHigh;\n\n    constructor() Ownable() {}\n\n    function setPrices(bool _isBadData, uint256 _priceLow, uint256 _priceHigh) external onlyOwner {\n        isBadData = _isBadData;\n        priceLow = _priceLow;\n        priceHigh = _priceHigh;\n    }\n\n    function getPrices() external view override returns (bool, uint256, uint256) {\n        return (isBadData, priceLow, priceHigh);\n    }\n}\n"},"contracts/oracles/OneJumpOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title OneJumpOracle\n * @author Venus\n * @notice This oracle fetches the price of an asset in through an intermediate asset\n */\ncontract OneJumpOracle is CorrelatedTokenOracle {\n    /// @notice Address of the intermediate oracle\n    OracleInterface public immutable INTERMEDIATE_ORACLE;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address correlatedToken,\n        address underlyingToken,\n        address resilientOracle,\n        address intermediateOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            correlatedToken,\n            underlyingToken,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(intermediateOracle);\n        INTERMEDIATE_ORACLE = OracleInterface(intermediateOracle);\n    }\n\n    /**\n     * @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n     * @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        uint256 underlyingDecimals = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n        uint256 correlatedDecimals = IERC20Metadata(CORRELATED_TOKEN).decimals();\n\n        uint256 underlyingAmount = INTERMEDIATE_ORACLE.getPrice(CORRELATED_TOKEN);\n\n        return (underlyingAmount * (10 ** correlatedDecimals)) / (10 ** (36 - underlyingDecimals));\n    }\n}\n"},"contracts/oracles/PendleOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPendlePtOracle } from \"../interfaces/IPendlePtOracle.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @title PendleOracle\n * @author Venus\n * @notice This oracle fetches the price of a pendle token\n * @dev As a base price the oracle uses either the price of the Pendle\n * market's asset (in this case PT_TO_ASSET rate should be used) or\n * the price of the Pendle market's interest bearing token (e.g. wstETH\n * for stETH; in this case PT_TO_SY rate should be used). Technically,\n * interest bearing token is different from standardized yield (SY) token,\n * but since SY is a wrapper around an interest bearing token, we can safely\n * assume the prices of the two are equal. This is not always true for asset\n * price though: using PT_TO_ASSET rate assumes that the yield token can\n * be seamlessly redeemed for the underlying asset. In reality, this might\n * not always be the case. For more details, see\n * https://docs.pendle.finance/Developers/Contracts/StandardizedYield\n */\ncontract PendleOracle is CorrelatedTokenOracle {\n    struct ConstructorParams {\n        /// @notice Pendle market\n        address market;\n        /// @notice Pendle oracle\n        address ptOracle;\n        /// @notice Either PT_TO_ASSET or PT_TO_SY\n        RateKind rateKind;\n        /// @notice Pendle PT token\n        address ptToken;\n        /// @notice Underlying token, can be either the market's asset or the interest bearing token\n        address underlyingToken;\n        /// @notice Resilient oracle to get the underlying token price from\n        address resilientOracle;\n        /// @notice TWAP duration to call Pendle oracle with\n        uint32 twapDuration;\n        /// @notice Annual growth rate of the underlying token\n        uint256 annualGrowthRate;\n        /// @notice Snapshot interval for the oracle\n        uint256 snapshotInterval;\n        /// @notice Initial exchange rate of the underlying token\n        uint256 initialSnapshotMaxExchangeRate;\n        /// @notice Initial timestamp of the underlying token\n        uint256 initialSnapshotTimestamp;\n        /// @notice Access control manager\n        address accessControlManager;\n        /// @notice Gap to add when updating the snapshot\n        uint256 snapshotGap;\n    }\n\n    /// @notice Which asset to use as a base for the returned PT\n    /// price. Can be either a standardized yield token (SY), in\n    /// this case PT/SY price is returned, or the Pendle\n    /// market's asset directly.\n    enum RateKind {\n        PT_TO_ASSET,\n        PT_TO_SY\n    }\n\n    /// @notice Address of the PT oracle\n    IPendlePtOracle public immutable PT_ORACLE;\n\n    /// @notice Whether to use PT/SY (standardized yield token) rate\n    /// or PT/market asset rate\n    RateKind public immutable RATE_KIND;\n\n    /// @notice Address of the market\n    address public immutable MARKET;\n\n    /// @notice Twap duration for the oracle\n    uint32 public immutable TWAP_DURATION;\n\n    /// @notice Decimals of the underlying token\n    /// @dev We make an assumption that the underlying decimals will\n    /// not change throughout the lifetime of the Pendle market\n    uint8 public immutable UNDERLYING_DECIMALS;\n\n    /// @notice Thrown if the duration is invalid\n    error InvalidDuration();\n\n    /**\n     * @notice Constructor for the implementation contract.\n     * @custom:error InvalidDuration Thrown if the duration is invalid\n     */\n    constructor(\n        ConstructorParams memory params\n    )\n        CorrelatedTokenOracle(\n            params.ptToken,\n            params.underlyingToken,\n            params.resilientOracle,\n            params.annualGrowthRate,\n            params.snapshotInterval,\n            params.initialSnapshotMaxExchangeRate,\n            params.initialSnapshotTimestamp,\n            params.accessControlManager,\n            params.snapshotGap\n        )\n    {\n        ensureNonzeroAddress(params.market);\n        ensureNonzeroAddress(params.ptOracle);\n        ensureNonzeroValue(params.twapDuration);\n\n        MARKET = params.market;\n        PT_ORACLE = IPendlePtOracle(params.ptOracle);\n        RATE_KIND = params.rateKind;\n        TWAP_DURATION = params.twapDuration;\n        UNDERLYING_DECIMALS = IERC20Metadata(UNDERLYING_TOKEN).decimals();\n\n        (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = PT_ORACLE.getOracleState(\n            MARKET,\n            TWAP_DURATION\n        );\n        if (increaseCardinalityRequired || !oldestObservationSatisfied) {\n            revert InvalidDuration();\n        }\n    }\n\n    /// @notice Fetches the amount of underlying token for 1 PT\n    /// @return amount The amount of underlying token (either the market's asset\n    /// or the yield token) for 1 PT, adjusted for decimals such that the result\n    /// has the same precision as the underlying token\n    function getUnderlyingAmount() public view override returns (uint256) {\n        uint256 rate;\n        if (RATE_KIND == RateKind.PT_TO_SY) {\n            rate = PT_ORACLE.getPtToSyRate(MARKET, TWAP_DURATION);\n        } else {\n            rate = PT_ORACLE.getPtToAssetRate(MARKET, TWAP_DURATION);\n        }\n        return ((10 ** UNDERLYING_DECIMALS) * rate) / 1e18;\n    }\n}\n"},"contracts/oracles/SequencerChainlinkOracle.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.25;\n\nimport { ChainlinkOracle } from \"./ChainlinkOracle.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\n/**\n    @title Sequencer Chain Link Oracle\n    @notice Oracle to fetch price using chainlink oracles on L2s with sequencer\n*/\ncontract SequencerChainlinkOracle is ChainlinkOracle {\n    /// @notice L2 Sequencer feed\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    AggregatorV3Interface public immutable sequencer;\n\n    /// @notice L2 Sequencer grace period\n    uint256 public constant GRACE_PERIOD_TIME = 3600;\n\n    /**\n        @notice Contract constructor\n        @param _sequencer L2 sequencer\n        @custom:oz-upgrades-unsafe-allow constructor\n    */\n    constructor(AggregatorV3Interface _sequencer) ChainlinkOracle() {\n        require(address(_sequencer) != address(0), \"zero address\");\n\n        sequencer = _sequencer;\n    }\n\n    /// @inheritdoc ChainlinkOracle\n    function getPrice(address asset) public view override returns (uint) {\n        if (!isSequencerActive()) revert(\"L2 sequencer unavailable\");\n        return super.getPrice(asset);\n    }\n\n    function isSequencerActive() internal view returns (bool) {\n        // answer from oracle is a variable with a value of either 1 or 0\n        //  0: The sequencer is up\n        //  1: The sequencer is down\n        // startedAt: This timestamp indicates when the sequencer changed status\n        (, int256 answer, uint256 startedAt, , ) = sequencer.latestRoundData();\n        if (block.timestamp - startedAt <= GRACE_PERIOD_TIME || answer == 1) return false;\n        return true;\n    }\n}\n"},"contracts/oracles/SFraxOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SFraxOracle\n * @author Venus\n * @notice This oracle fetches the price of sFrax\n */\ncontract SFraxOracle is CorrelatedTokenOracle {\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address sFrax,\n        address frax,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            sFrax,\n            frax,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {}\n\n    /**\n     * @notice Fetches the amount of FRAX for 1 sFrax\n     * @return amount The amount of FRAX for sFrax\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return ISFrax(CORRELATED_TOKEN).convertToAssets(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/SFrxETHOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISfrxEthFraxOracle } from \"../interfaces/ISfrxEthFraxOracle.sol\";\nimport { ensureNonzeroAddress, ensureNonzeroValue } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\n\n/**\n * @title SFrxETHOracle\n * @author Venus\n * @notice This oracle fetches the price of sfrxETH\n */\ncontract SFrxETHOracle is AccessControlledV8, OracleInterface {\n    /// @notice Address of SfrxEthFraxOracle\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    ISfrxEthFraxOracle public immutable SFRXETH_FRAX_ORACLE;\n\n    /// @notice Address of sfrxETH\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address public immutable SFRXETH;\n\n    /// @notice Maximum allowed price difference\n    uint256 public maxAllowedPriceDifference;\n\n    /// @notice Emits when the maximum allowed price difference is updated\n    event MaxAllowedPriceDifferenceUpdated(uint256 oldMaxAllowedPriceDifference, uint256 newMaxAllowedPriceDifference);\n\n    /// @notice Thrown if the price data is invalid\n    error BadPriceData();\n\n    /// @notice Thrown if the price difference exceeds the allowed limit\n    error PriceDifferenceExceeded();\n\n    /// @notice Thrown if the token address is invalid\n    error InvalidTokenAddress();\n\n    /// @notice Constructor for the implementation contract.\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    /// @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\n    constructor(address _sfrxEthFraxOracle, address _sfrxETH) {\n        ensureNonzeroAddress(_sfrxEthFraxOracle);\n        ensureNonzeroAddress(_sfrxETH);\n\n        SFRXETH_FRAX_ORACLE = ISfrxEthFraxOracle(_sfrxEthFraxOracle);\n        SFRXETH = _sfrxETH;\n\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Sets the contracts required to fetch prices\n     * @param _acm Address of the access control manager contract\n     * @param _maxAllowedPriceDifference Maximum allowed price difference\n     * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n     */\n    function initialize(address _acm, uint256 _maxAllowedPriceDifference) external initializer {\n        ensureNonzeroValue(_maxAllowedPriceDifference);\n\n        __AccessControlled_init(_acm);\n        maxAllowedPriceDifference = _maxAllowedPriceDifference;\n    }\n\n    /**\n     * @notice Sets the maximum allowed price difference\n     * @param _maxAllowedPriceDifference Maximum allowed price difference\n     * @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\n     */\n    function setMaxAllowedPriceDifference(uint256 _maxAllowedPriceDifference) external {\n        _checkAccessAllowed(\"setMaxAllowedPriceDifference(uint256)\");\n        ensureNonzeroValue(_maxAllowedPriceDifference);\n\n        emit MaxAllowedPriceDifferenceUpdated(maxAllowedPriceDifference, _maxAllowedPriceDifference);\n        maxAllowedPriceDifference = _maxAllowedPriceDifference;\n    }\n\n    /**\n     * @notice Fetches the USD price of sfrxETH\n     * @param asset Address of the sfrxETH token\n     * @return price The price scaled by 1e18\n     * @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n     * @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n     * @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n     * @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\n     */\n    function getPrice(address asset) external view returns (uint256) {\n        if (asset != SFRXETH) revert InvalidTokenAddress();\n\n        (bool isBadData, uint256 priceLow, uint256 priceHigh) = SFRXETH_FRAX_ORACLE.getPrices();\n\n        if (isBadData) revert BadPriceData();\n\n        // calculate price in USD\n        uint256 priceHighInUSD = (EXP_SCALE ** 2) / priceLow;\n        uint256 priceLowInUSD = (EXP_SCALE ** 2) / priceHigh;\n\n        ensureNonzeroValue(priceHighInUSD);\n        ensureNonzeroValue(priceLowInUSD);\n\n        // validate price difference\n        uint256 difference = (priceHighInUSD * EXP_SCALE) / priceLowInUSD;\n        if (difference > maxAllowedPriceDifference) revert PriceDifferenceExceeded();\n\n        // calculate and return average price\n        return (priceHighInUSD + priceLowInUSD) / 2;\n    }\n}\n"},"contracts/oracles/SlisBNBOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { ISynclubStakeManager } from \"../interfaces/ISynclubStakeManager.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title SlisBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of slisBNB asset\n */\ncontract SlisBNBOracle is CorrelatedTokenOracle {\n    /// @notice This is used as token address of BNB on BSC\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Address of StakeManager\n    ISynclubStakeManager public immutable STAKE_MANAGER;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address stakeManager,\n        address slisBNB,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            slisBNB,\n            NATIVE_TOKEN_ADDR,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(stakeManager);\n        STAKE_MANAGER = ISynclubStakeManager(stakeManager);\n    }\n\n    /**\n     * @notice Fetches the amount of BNB for 1 slisBNB\n     * @return amount The amount of BNB for slisBNB\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return STAKE_MANAGER.convertSnBnbToBnb(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/StkBNBOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IPStakePool } from \"../interfaces/IPStakePool.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title StkBNBOracle\n * @author Venus\n * @notice This oracle fetches the price of stkBNB asset\n */\ncontract StkBNBOracle is CorrelatedTokenOracle {\n    /// @notice This is used as token address of BNB on BSC\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Address of StakePool\n    IPStakePool public immutable STAKE_POOL;\n\n    /// @notice Thrown if the pool token supply is zero\n    error PoolTokenSupplyIsZero();\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address stakePool,\n        address stkBNB,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            stkBNB,\n            NATIVE_TOKEN_ADDR,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(stakePool);\n        STAKE_POOL = IPStakePool(stakePool);\n    }\n\n    /**\n     * @notice Fetches the amount of BNB for 1 stkBNB\n     * @return price The amount of BNB for stkBNB\n     * @custom:error PoolTokenSupplyIsZero error is thrown if the pool token supply is zero\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        IPStakePool.Data memory exchangeRateData = STAKE_POOL.exchangeRate();\n\n        if (exchangeRateData.poolTokenSupply == 0) {\n            revert PoolTokenSupplyIsZero();\n        }\n\n        return (exchangeRateData.totalWei * EXP_SCALE) / exchangeRateData.poolTokenSupply;\n    }\n}\n"},"contracts/oracles/WBETHOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title WBETHOracle\n * @author Venus\n * @notice This oracle fetches the price of wBETH asset\n */\ncontract WBETHOracle is CorrelatedTokenOracle {\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address wbeth,\n        address eth,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            wbeth,\n            eth,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {}\n\n    /**\n     * @notice Fetches the amount of ETH for 1 wBETH\n     * @return amount The amount of ETH for wBETH\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return IWBETH(CORRELATED_TOKEN).exchangeRate();\n    }\n}\n"},"contracts/oracles/WeETHAccountantOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IAccountant } from \"../interfaces/IAccountant.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHAccountantOracle\n * @author Venus\n * @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\n */\ncontract WeETHAccountantOracle is CorrelatedTokenOracle {\n    /// @notice Address of Accountant\n    IAccountant public immutable ACCOUNTANT;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address accountant,\n        address weethLRT,\n        address weth,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            weethLRT,\n            weth,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(accountant);\n        ACCOUNTANT = IAccountant(accountant);\n    }\n\n    /**\n     * @notice Gets the WETH for 1 weETH LRT\n     * @return amount Amount of WETH\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return ACCOUNTANT.getRateSafe();\n    }\n}\n"},"contracts/oracles/WeETHOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { IEtherFiLiquidityPool } from \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WeETHOracle\n * @author Venus\n * @notice This oracle fetches the price of weETH\n */\ncontract WeETHOracle is CorrelatedTokenOracle {\n    /// @notice Address of Liqiudity pool\n    IEtherFiLiquidityPool public immutable LIQUIDITY_POOL;\n\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address liquidityPool,\n        address weETH,\n        address eETH,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            weETH,\n            eETH,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(liquidityPool);\n        LIQUIDITY_POOL = IEtherFiLiquidityPool(liquidityPool);\n    }\n\n    /**\n     * @notice Gets the eETH for 1 weETH\n     * @return amount Amount of eETH\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return LIQUIDITY_POOL.amountForShare(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/WstETHOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { OracleInterface } from \"../interfaces/OracleInterface.sol\";\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\n\n/**\n * @title WstETHOracle\n * @author Venus\n * @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n *         or the price of stETH/USD (secondary market price) is obtained from the oracle.\n */\ncontract WstETHOracle is OracleInterface {\n    /// @notice A flag assuming 1:1 price equivalence between stETH/ETH\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    bool public immutable ASSUME_STETH_ETH_EQUIVALENCE;\n\n    /// @notice Address of stETH\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    IStETH public immutable STETH;\n\n    /// @notice Address of wstETH\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address public immutable WSTETH_ADDRESS;\n\n    /// @notice Address of WETH\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address public immutable WETH_ADDRESS;\n\n    /// @notice Address of Resilient Oracle\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    OracleInterface public immutable RESILIENT_ORACLE;\n\n    /// @notice Constructor for the implementation contract.\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor(\n        address wstETHAddress,\n        address wETHAddress,\n        address stETHAddress,\n        address resilientOracleAddress,\n        bool assumeEquivalence\n    ) {\n        ensureNonzeroAddress(wstETHAddress);\n        ensureNonzeroAddress(wETHAddress);\n        ensureNonzeroAddress(stETHAddress);\n        ensureNonzeroAddress(resilientOracleAddress);\n        WSTETH_ADDRESS = wstETHAddress;\n        WETH_ADDRESS = wETHAddress;\n        STETH = IStETH(stETHAddress);\n        RESILIENT_ORACLE = OracleInterface(resilientOracleAddress);\n        ASSUME_STETH_ETH_EQUIVALENCE = assumeEquivalence;\n    }\n\n    /**\n     * @notice Gets the USD price of wstETH asset\n     * @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n     *      or the price of stETH/USD (secondary market price) is obtained from the oracle\n     * @param asset Address of wstETH\n     * @return wstETH Price in USD scaled by 1e18\n     */\n    function getPrice(address asset) public view returns (uint256) {\n        if (asset != WSTETH_ADDRESS) revert(\"wrong wstETH address\");\n\n        // get stETH amount for 1 wstETH scaled by 1e18\n        uint256 stETHAmount = STETH.getPooledEthByShares(1 ether);\n\n        // price is scaled 1e18 (oracle returns 36 - asset decimal scale)\n        uint256 stETHUSDPrice = RESILIENT_ORACLE.getPrice(ASSUME_STETH_ETH_EQUIVALENCE ? WETH_ADDRESS : address(STETH));\n\n        // stETHAmount (for 1 wstETH) * stETHUSDPrice / 1e18\n        return (stETHAmount * stETHUSDPrice) / EXP_SCALE;\n    }\n}\n"},"contracts/oracles/WstETHOracleV2.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IStETH } from \"../interfaces/IStETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\nimport { EXP_SCALE } from \"@venusprotocol/solidity-utilities/contracts/constants.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\n\n/**\n * @title WstETHOracleV2\n * @author Venus\n * @notice This oracle fetches the price of wstETH\n */\ncontract WstETHOracleV2 is CorrelatedTokenOracle {\n    /// @notice Address of stETH\n    IStETH public immutable STETH;\n\n    /// @notice Constructor for the implementation contract.\n    /// @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n    /// getUnderlyingAmount() implicitly assumes that\n    constructor(\n        address stETH,\n        address wstETH,\n        address underlyingToken,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            wstETH,\n            underlyingToken,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {\n        ensureNonzeroAddress(stETH);\n        STETH = IStETH(stETH);\n    }\n\n    /**\n     * @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n     * @return amount Amount of underlyingToken\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return STETH.getPooledEthByShares(EXP_SCALE);\n    }\n}\n"},"contracts/oracles/ZkETHOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { IZkETH } from \"../interfaces/IZkETH.sol\";\nimport { CorrelatedTokenOracle } from \"./common/CorrelatedTokenOracle.sol\";\n\n/**\n * @title ZkETHOracle\n * @author Venus\n * @notice This oracle fetches the price of zkETH\n */\ncontract ZkETHOracle is CorrelatedTokenOracle {\n    /// @notice Constructor for the implementation contract.\n    constructor(\n        address zkETH,\n        address rzkETH,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 _snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 _snapshotGap\n    )\n        CorrelatedTokenOracle(\n            zkETH,\n            rzkETH,\n            resilientOracle,\n            annualGrowthRate,\n            _snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            _snapshotGap\n        )\n    {}\n\n    /**\n     * @notice Gets the amount of rzkETH for 1 zkETH\n     * @return amount Amount of rzkETH\n     */\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return IZkETH(CORRELATED_TOKEN).LSTPerToken();\n    }\n}\n"},"contracts/ReferenceOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2025 Venus\npragma solidity 0.8.25;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ensureNonzeroAddress } from \"@venusprotocol/solidity-utilities/contracts/validators.sol\";\nimport { ResilientOracleInterface, OracleInterface } from \"./interfaces/OracleInterface.sol\";\n\n/**\n * @title ReferenceOracle\n * @author Venus\n * @notice Reference oracle is the oracle that is not used for production but required for\n * price monitoring. This oracle contains some extra configurations for assets required to\n * compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\n */\ncontract ReferenceOracle is Ownable2StepUpgradeable, OracleInterface {\n    struct ExternalPrice {\n        /// @notice asset address\n        address asset;\n        /// @notice price of the asset from an external source\n        uint256 price;\n    }\n\n    /// @notice Slot to temporarily store price information from external sources\n    /// like CMC/Coingecko, useful to compute prices of derivative assets based on\n    /// prices of the base assets with no on chain price information\n    bytes32 public constant PRICES_SLOT = keccak256(abi.encode(\"venus-protocol/oracle/ReferenceOracle/prices\"));\n\n    /// @notice Resilient oracle address\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    ResilientOracleInterface public immutable RESILIENT_ORACLE;\n\n    /// @notice Oracle configuration for assets\n    mapping(address => OracleInterface) public oracles;\n\n    /// @notice Event emitted when an oracle is set\n    event OracleConfigured(address indexed asset, address indexed oracle);\n\n    /**\n     * @notice Constructor for the implementation contract. Sets immutable variables.\n     * @param resilientOracle Resilient oracle address\n     * @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n     * @custom:oz-upgrades-unsafe-allow constructor\n     */\n    constructor(ResilientOracleInterface resilientOracle) {\n        ensureNonzeroAddress(address(resilientOracle));\n        RESILIENT_ORACLE = resilientOracle;\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Initializes the contract admin\n     */\n    function initialize() external initializer {\n        __Ownable2Step_init();\n    }\n\n    /**\n     * @notice Sets an oracle to use for a specific asset\n     * @dev The production resilientOracle will be used if zero address is passed\n     * @param asset Asset address\n     * @param oracle Oracle address\n     * @custom:access Only owner\n     * @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n     * @custom:event Emits OracleConfigured event\n     */\n    function setOracle(address asset, OracleInterface oracle) external onlyOwner {\n        ensureNonzeroAddress(asset);\n        oracles[asset] = OracleInterface(oracle);\n        emit OracleConfigured(asset, address(oracle));\n    }\n\n    /**\n     * @notice Gets price of the asset assuming other assets have the defined price\n     * @param asset asset address\n     * @param externalPrices an array of prices for other assets\n     * @return USD price in scaled decimal places\n     */\n    function getPriceAssuming(address asset, ExternalPrice[] memory externalPrices) external returns (uint256) {\n        uint256 externalPricesCount = externalPrices.length;\n        for (uint256 i = 0; i < externalPricesCount; ++i) {\n            _storeExternalPrice(externalPrices[i].asset, externalPrices[i].price);\n        }\n        return _getPrice(asset);\n    }\n\n    /**\n     * @notice Gets price of the asset\n     * @param asset asset address\n     * @return USD price in scaled decimal places\n     */\n    function getPrice(address asset) external view override returns (uint256) {\n        return _getPrice(asset);\n    }\n\n    function _storeExternalPrice(address asset, uint256 price) internal {\n        bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n        // solhint-disable-next-line no-inline-assembly\n        assembly (\"memory-safe\") {\n            tstore(slot, price)\n        }\n    }\n\n    function _getPrice(address asset) internal view returns (uint256) {\n        uint256 externalPrice = _loadExternalPrice(asset);\n        if (externalPrice != 0) {\n            return externalPrice;\n        }\n        OracleInterface oracle = oracles[asset];\n        if (oracle != OracleInterface(address(0))) {\n            return oracle.getPrice(asset);\n        }\n        return RESILIENT_ORACLE.getPrice(asset);\n    }\n\n    function _loadExternalPrice(address asset) internal view returns (uint256 value) {\n        bytes32 slot = keccak256(abi.encode(PRICES_SLOT, asset));\n        // solhint-disable-next-line no-inline-assembly\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n}\n"},"contracts/ResilientOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity 0.8.25;\n\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\";\nimport { VBep20Interface } from \"./interfaces/VBep20Interface.sol\";\nimport { OracleInterface, ResilientOracleInterface, BoundValidatorInterface } from \"./interfaces/OracleInterface.sol\";\nimport { AccessControlledV8 } from \"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\";\nimport { ICappedOracle } from \"./interfaces/ICappedOracle.sol\";\nimport { Transient } from \"./lib/Transient.sol\";\n\n/**\n * @title ResilientOracle\n * @author Venus\n * @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n *\n * DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n * reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n * for attacking the protocol.\n *\n * The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n * the protocol from oracle attacks.\n *\n * For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n * vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n * oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n *\n * To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n * market. The upper bound ratio represents the deviation between reported price (the price that’s being\n * validated) and the anchor price (the price we are validating against) above which the reported price will\n * be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n * which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n * should be true:\n\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n\n * In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending\n * on which supports the given market and Binance oracle is used as the fallback oracle.\n *\n * For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n * oracle to be stagnant and treat it like it's disabled.\n */\ncontract ResilientOracle is PausableUpgradeable, AccessControlledV8, ResilientOracleInterface {\n    /**\n     * @dev Oracle roles:\n     * **main**: The most trustworthy price source\n     * **pivot**: Price oracle used as a loose sanity checker\n     * **fallback**: The backup source when main oracle price is invalidated\n     */\n    enum OracleRole {\n        MAIN,\n        PIVOT,\n        FALLBACK\n    }\n\n    struct TokenConfig {\n        /// @notice asset address\n        address asset;\n        /// @notice `oracles` stores the oracles based on their role in the following order:\n        /// [main, pivot, fallback],\n        /// It can be indexed with the corresponding enum OracleRole value\n        address[3] oracles;\n        /// @notice `enableFlagsForOracles` stores the enabled state\n        /// for each oracle in the same order as `oracles`\n        bool[3] enableFlagsForOracles;\n        /// @notice `cachingEnabled` is a flag that indicates whether the asset price should be cached\n        bool cachingEnabled;\n    }\n\n    uint256 public constant INVALID_PRICE = 0;\n\n    /// @notice Native market address\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address public immutable nativeMarket;\n\n    /// @notice VAI address\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address public immutable vai;\n\n    /// @notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n    /// and can serve as any underlying asset of a market that supports native tokens\n    address public constant NATIVE_TOKEN_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;\n\n    /// @notice Slot to cache the asset's price, used for transient storage\n    /// custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache\n    /// keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))\n    ///   & ~bytes32(uint256(0xff))\n    bytes32 public constant CACHE_SLOT = 0x4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800;\n\n    /// @notice Bound validator contract address\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    BoundValidatorInterface public immutable boundValidator;\n\n    mapping(address => TokenConfig) private tokenConfigs;\n\n    event TokenConfigAdded(\n        address indexed asset,\n        address indexed mainOracle,\n        address indexed pivotOracle,\n        address fallbackOracle\n    );\n\n    /// Event emitted when an oracle is set\n    event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role);\n\n    /// Event emitted when an oracle is enabled or disabled\n    event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable);\n\n    /// Event emitted when an asset cachingEnabled flag is set\n    event CachedEnabled(address indexed asset, bool indexed enabled);\n\n    /**\n     * @notice Checks whether an address is null or not\n     */\n    modifier notNullAddress(address someone) {\n        if (someone == address(0)) revert(\"can't be zero address\");\n        _;\n    }\n\n    /**\n     * @notice Checks whether token config exists by checking whether asset is null address\n     * @dev address can't be null, so it's suitable to be used to check the validity of the config\n     * @param asset asset address\n     */\n    modifier checkTokenConfigExistence(address asset) {\n        if (tokenConfigs[asset].asset == address(0)) revert(\"token config must exist\");\n        _;\n    }\n\n    /// @notice Constructor for the implementation contract. Sets immutable variables.\n    /// @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n    ///      (e.g vETH on ethereum would not be supported, only vWETH)\n    /// @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n    /// @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n    ///          Set to address(0) of VAI is not existent.\n    /// @param _boundValidator Address of the bound validator contract\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor(\n        address nativeMarketAddress,\n        address vaiAddress,\n        BoundValidatorInterface _boundValidator\n    ) notNullAddress(address(_boundValidator)) {\n        nativeMarket = nativeMarketAddress;\n        vai = vaiAddress;\n        boundValidator = _boundValidator;\n\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Initializes the contract admin and sets the BoundValidator contract address\n     * @param accessControlManager_ Address of the access control manager contract\n     */\n    function initialize(address accessControlManager_) external initializer {\n        __AccessControlled_init(accessControlManager_);\n        __Pausable_init();\n    }\n\n    /**\n     * @notice Pauses oracle\n     * @custom:access Only Governance\n     */\n    function pause() external {\n        _checkAccessAllowed(\"pause()\");\n        _pause();\n    }\n\n    /**\n     * @notice Unpauses oracle\n     * @custom:access Only Governance\n     */\n    function unpause() external {\n        _checkAccessAllowed(\"unpause()\");\n        _unpause();\n    }\n\n    /**\n     * @notice Batch sets token configs\n     * @param tokenConfigs_ Token config array\n     * @custom:access Only Governance\n     * @custom:error Throws a length error if the length of the token configs array is 0\n     */\n    function setTokenConfigs(TokenConfig[] memory tokenConfigs_) external {\n        if (tokenConfigs_.length == 0) revert(\"length can't be 0\");\n        uint256 numTokenConfigs = tokenConfigs_.length;\n        for (uint256 i; i < numTokenConfigs; ++i) {\n            setTokenConfig(tokenConfigs_[i]);\n        }\n    }\n\n    /**\n     * @notice Sets oracle for a given asset and role.\n     * @dev Supplied asset **must** exist and main oracle may not be null\n     * @param asset Asset address\n     * @param oracle Oracle address\n     * @param role Oracle role\n     * @custom:access Only Governance\n     * @custom:error Null address error if main-role oracle address is null\n     * @custom:error NotNullAddress error is thrown if asset address is null\n     * @custom:error TokenConfigExistance error is thrown if token config is not set\n     * @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\n     */\n    function setOracle(\n        address asset,\n        address oracle,\n        OracleRole role\n    ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n        _checkAccessAllowed(\"setOracle(address,address,uint8)\");\n        if (oracle == address(0) && role == OracleRole.MAIN) revert(\"can't set zero address to main oracle\");\n        tokenConfigs[asset].oracles[uint256(role)] = oracle;\n        emit OracleSet(asset, oracle, uint256(role));\n    }\n\n    /**\n     * @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n     * @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n     * @param asset Asset address\n     * @param role Oracle role\n     * @param enable Enabled boolean of the oracle\n     * @custom:access Only Governance\n     * @custom:error NotNullAddress error is thrown if asset address is null\n     * @custom:error TokenConfigExistance error is thrown if token config is not set\n     * @custom:event Emits OracleEnabled event with asset address, role of the oracle and enabled flag\n     */\n    function enableOracle(\n        address asset,\n        OracleRole role,\n        bool enable\n    ) external notNullAddress(asset) checkTokenConfigExistence(asset) {\n        _checkAccessAllowed(\"enableOracle(address,uint8,bool)\");\n        tokenConfigs[asset].enableFlagsForOracles[uint256(role)] = enable;\n        emit OracleEnabled(asset, uint256(role), enable);\n    }\n\n    /**\n     * @notice Updates the capped main oracle snapshot.\n     * @dev This function should always be called before calling getUnderlyingPrice\n     * @param vToken vToken address\n     */\n    function updatePrice(address vToken) external override {\n        address asset = _getUnderlyingAsset(vToken);\n        _updateAssetPrice(asset);\n    }\n\n    /**\n     * @notice Updates the capped main oracle snapshot.\n     * @dev This function should always be called before calling getPrice\n     * @param asset asset address\n     */\n    function updateAssetPrice(address asset) external {\n        _updateAssetPrice(asset);\n    }\n\n    /**\n     * @dev Gets token config by asset address\n     * @param asset asset address\n     * @return tokenConfig Config for the asset\n     */\n    function getTokenConfig(address asset) external view returns (TokenConfig memory) {\n        return tokenConfigs[asset];\n    }\n\n    /**\n     * @notice Gets price of the underlying asset for a given vToken. Validation flow:\n     * - Check if the oracle is paused globally\n     * - Validate price from main oracle against pivot oracle\n     * - Validate price from fallback oracle against pivot oracle if the first validation failed\n     * - Validate price from main oracle against fallback oracle if the second validation failed\n     * In the case that the pivot oracle is not available but main price is available and validation is successful,\n     * main oracle price is returned.\n     * @param vToken vToken address\n     * @return price USD price in scaled decimal places.\n     * @custom:error Paused error is thrown when resilent oracle is paused\n     * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n     */\n    function getUnderlyingPrice(address vToken) external view override returns (uint256) {\n        if (paused()) revert(\"resilient oracle is paused\");\n\n        address asset = _getUnderlyingAsset(vToken);\n        return _getPrice(asset);\n    }\n\n    /**\n     * @notice Gets price of the asset\n     * @param asset asset address\n     * @return price USD price in scaled decimal places.\n     * @custom:error Paused error is thrown when resilent oracle is paused\n     * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n     */\n    function getPrice(address asset) external view override returns (uint256) {\n        if (paused()) revert(\"resilient oracle is paused\");\n        return _getPrice(asset);\n    }\n\n    /**\n     * @notice Sets/resets single token configs.\n     * @dev main oracle **must not** be a null address\n     * @param tokenConfig Token config struct\n     * @custom:access Only Governance\n     * @custom:error NotNullAddress is thrown if asset address is null\n     * @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n     * @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n     * @custom:event Emits CachedEnabled event when the asset cachingEnabled flag is set successfully\n     */\n    function setTokenConfig(\n        TokenConfig memory tokenConfig\n    ) public notNullAddress(tokenConfig.asset) notNullAddress(tokenConfig.oracles[uint256(OracleRole.MAIN)]) {\n        _checkAccessAllowed(\"setTokenConfig(TokenConfig)\");\n\n        tokenConfigs[tokenConfig.asset] = tokenConfig;\n        emit TokenConfigAdded(\n            tokenConfig.asset,\n            tokenConfig.oracles[uint256(OracleRole.MAIN)],\n            tokenConfig.oracles[uint256(OracleRole.PIVOT)],\n            tokenConfig.oracles[uint256(OracleRole.FALLBACK)]\n        );\n        emit CachedEnabled(tokenConfig.asset, tokenConfig.cachingEnabled);\n    }\n\n    /**\n     * @notice Gets oracle and enabled status by asset address\n     * @param asset asset address\n     * @param role Oracle role\n     * @return oracle Oracle address based on role\n     * @return enabled Enabled flag of the oracle based on token config\n     */\n    function getOracle(address asset, OracleRole role) public view returns (address oracle, bool enabled) {\n        oracle = tokenConfigs[asset].oracles[uint256(role)];\n        enabled = tokenConfigs[asset].enableFlagsForOracles[uint256(role)];\n    }\n\n    /**\n     * @notice Updates the capped oracle snapshot.\n     * @dev Cache the asset price and return if already cached\n     * @param asset asset address\n     */\n    function _updateAssetPrice(address asset) internal {\n        if (Transient.readCachedPrice(CACHE_SLOT, asset) != 0) {\n            return;\n        }\n\n        (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n        if (mainOracle != address(0) && mainOracleEnabled) {\n            // if main oracle is not CorrelatedTokenOracle it will revert so we need to catch the revert\n            try ICappedOracle(mainOracle).updateSnapshot() {} catch {}\n        }\n\n        if (_isCacheEnabled(asset)) {\n            uint256 price = _getPrice(asset);\n            Transient.cachePrice(CACHE_SLOT, asset, price);\n        }\n    }\n\n    /**\n     * @notice Gets price for the provided asset\n     * @param asset asset address\n     * @return price USD price in scaled decimal places.\n     * @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid\n     */\n    function _getPrice(address asset) internal view returns (uint256) {\n        uint256 pivotPrice = INVALID_PRICE;\n        uint256 price;\n\n        price = Transient.readCachedPrice(CACHE_SLOT, asset);\n        if (price != 0) {\n            return price;\n        }\n\n        // Get pivot oracle price, Invalid price if not available or error\n        (address pivotOracle, bool pivotOracleEnabled) = getOracle(asset, OracleRole.PIVOT);\n        if (pivotOracleEnabled && pivotOracle != address(0)) {\n            try OracleInterface(pivotOracle).getPrice(asset) returns (uint256 pricePivot) {\n                pivotPrice = pricePivot;\n            } catch {}\n        }\n\n        // Compare main price and pivot price, return main price and if validation was successful\n        // note: In case pivot oracle is not available but main price is available and\n        // validation is successful, the main oracle price is returned.\n        (uint256 mainPrice, bool validatedPivotMain) = _getMainOraclePrice(\n            asset,\n            pivotPrice,\n            pivotOracleEnabled && pivotOracle != address(0)\n        );\n        if (mainPrice != INVALID_PRICE && validatedPivotMain) return mainPrice;\n\n        // Compare fallback and pivot if main oracle comparision fails with pivot\n        // Return fallback price when fallback price is validated successfully with pivot oracle\n        (uint256 fallbackPrice, bool validatedPivotFallback) = _getFallbackOraclePrice(asset, pivotPrice);\n        if (fallbackPrice != INVALID_PRICE && validatedPivotFallback) return fallbackPrice;\n\n        // Lastly compare main price and fallback price\n        if (\n            mainPrice != INVALID_PRICE &&\n            fallbackPrice != INVALID_PRICE &&\n            boundValidator.validatePriceWithAnchorPrice(asset, mainPrice, fallbackPrice)\n        ) {\n            return mainPrice;\n        }\n\n        revert(\"invalid resilient oracle price\");\n    }\n\n    /**\n     * @notice Gets a price for the provided asset\n     * @dev This function won't revert when price is 0, because the fallback oracle may still be\n     * able to fetch a correct price\n     * @param asset asset address\n     * @param pivotPrice Pivot oracle price\n     * @param pivotEnabled If pivot oracle is not empty and enabled\n     * @return price USD price in scaled decimals\n     * e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n     * @return pivotValidated Boolean representing if the validation of main oracle price\n     * and pivot oracle price were successful\n     * @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n     * @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n     * address is null\n     */\n    function _getMainOraclePrice(\n        address asset,\n        uint256 pivotPrice,\n        bool pivotEnabled\n    ) internal view returns (uint256, bool) {\n        (address mainOracle, bool mainOracleEnabled) = getOracle(asset, OracleRole.MAIN);\n        if (mainOracleEnabled && mainOracle != address(0)) {\n            try OracleInterface(mainOracle).getPrice(asset) returns (uint256 mainOraclePrice) {\n                if (!pivotEnabled) {\n                    return (mainOraclePrice, true);\n                }\n                if (pivotPrice == INVALID_PRICE) {\n                    return (mainOraclePrice, false);\n                }\n                return (\n                    mainOraclePrice,\n                    boundValidator.validatePriceWithAnchorPrice(asset, mainOraclePrice, pivotPrice)\n                );\n            } catch {\n                return (INVALID_PRICE, false);\n            }\n        }\n\n        return (INVALID_PRICE, false);\n    }\n\n    /**\n     * @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n     * @param asset asset address\n     * @return price USD price in 18 decimals\n     * @return pivotValidated Boolean representing if the validation of fallback oracle price\n     * and pivot oracle price were successfully\n     * @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n     * @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n     * address is null\n     */\n    function _getFallbackOraclePrice(address asset, uint256 pivotPrice) private view returns (uint256, bool) {\n        (address fallbackOracle, bool fallbackEnabled) = getOracle(asset, OracleRole.FALLBACK);\n        if (fallbackEnabled && fallbackOracle != address(0)) {\n            try OracleInterface(fallbackOracle).getPrice(asset) returns (uint256 fallbackOraclePrice) {\n                if (pivotPrice == INVALID_PRICE) {\n                    return (fallbackOraclePrice, false);\n                }\n                return (\n                    fallbackOraclePrice,\n                    boundValidator.validatePriceWithAnchorPrice(asset, fallbackOraclePrice, pivotPrice)\n                );\n            } catch {\n                return (INVALID_PRICE, false);\n            }\n        }\n\n        return (INVALID_PRICE, false);\n    }\n\n    /**\n     * @dev This function returns the underlying asset of a vToken\n     * @param vToken vToken address\n     * @return asset underlying asset address\n     */\n    function _getUnderlyingAsset(address vToken) private view notNullAddress(vToken) returns (address asset) {\n        if (vToken == nativeMarket) {\n            asset = NATIVE_TOKEN_ADDR;\n        } else if (vToken == vai) {\n            asset = vai;\n        } else {\n            asset = VBep20Interface(vToken).underlying();\n        }\n    }\n\n    /**\n     * @dev This function checks if the asset price should be cached\n     * @param asset asset address\n     * @return bool true if caching is enabled, false otherwise\n     */\n    function _isCacheEnabled(address asset) private view returns (bool) {\n        return tokenConfigs[asset].cachingEnabled;\n    }\n}\n"},"contracts/test/BEP20Harness.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract BEP20Harness is ERC20 {\n    uint8 public decimalsInternal = 18;\n\n    constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) {\n        decimalsInternal = decimals_;\n    }\n\n    function faucet(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n\n    function decimals() public view virtual override returns (uint8) {\n        return decimalsInternal;\n    }\n}\n"},"contracts/test/MockAnkrBNB.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAnkrBNB } from \"../interfaces/IAnkrBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAnkrBNB is ERC20, Ownable, IAnkrBNB {\n    uint8 private immutable _decimals;\n    uint256 public exchangeRate;\n\n    constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n        _decimals = decimals_;\n    }\n\n    function faucet(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n\n    function setSharesToBonds(uint256 rate) external onlyOwner {\n        exchangeRate = rate;\n    }\n\n    function sharesToBonds(uint256 amount) external view override returns (uint256) {\n        return (amount * exchangeRate) / (10 ** uint256(_decimals));\n    }\n\n    function decimals() public view virtual override(ERC20, IAnkrBNB) returns (uint8) {\n        return _decimals;\n    }\n}\n"},"contracts/test/MockAsBNB.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IAsBNB } from \"../interfaces/IAsBNB.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockAsBNB is ERC20, Ownable, IAsBNB {\n    uint8 private immutable _decimals;\n    address public minter;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint8 decimals_,\n        address minter_\n    ) ERC20(name_, symbol_) Ownable() {\n        _decimals = decimals_;\n        minter = minter_;\n    }\n\n    function faucet(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n\n    function setMinter(address minter_) external onlyOwner {\n        minter = minter_;\n    }\n\n    function decimals() public view virtual override(ERC20, IAsBNB) returns (uint8) {\n        return _decimals;\n    }\n}\n"},"contracts/test/MockAsBNBMinter.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { IAsBNBMinter } from \"../interfaces/IAsBNBMinter.sol\";\n\ncontract MockAsBNBMinter is IAsBNBMinter {\n    function convertToTokens(uint256 _amount) external pure override returns (uint256) {\n        return _amount;\n    }\n}\n"},"contracts/test/MockCallPrice.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { OracleInterface, ResilientOracleInterface } from \"../interfaces/OracleInterface.sol\";\n\ninterface CorrelatedTokenOracleInterface {\n    function updateSnapshot() external;\n    function getPrice(address asset) external view returns (uint256);\n}\n\ncontract MockCallPrice {\n    function getMultiPrice(CorrelatedTokenOracleInterface oracle, address asset) public returns (uint256, uint256) {\n        oracle.updateSnapshot();\n        return (oracle.getPrice(asset), oracle.getPrice(asset));\n    }\n\n    function getUnderlyingPriceResilientOracle(\n        ResilientOracleInterface oracle,\n        address vToken\n    ) public returns (uint256, uint256) {\n        oracle.updatePrice(vToken);\n        oracle.updatePrice(vToken);\n        return (oracle.getUnderlyingPrice(vToken), oracle.getUnderlyingPrice(vToken));\n    }\n\n    function getAssetPriceResilientOracle(\n        ResilientOracleInterface oracle,\n        address asset\n    ) public returns (uint256, uint256) {\n        oracle.updateAssetPrice(asset);\n        oracle.updateAssetPrice(asset);\n        return (oracle.getPrice(asset), oracle.getPrice(asset));\n    }\n}\n"},"contracts/test/MockEtherFiLiquidityPool.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/IEtherFiLiquidityPool.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockEtherFiLiquidityPool is IEtherFiLiquidityPool, Ownable {\n    /// @notice The amount of eETH per weETH scaled by 1e18\n    uint256 public amountPerShare;\n\n    constructor() Ownable() {}\n\n    function setAmountPerShare(uint256 _amountPerShare) external onlyOwner {\n        amountPerShare = _amountPerShare;\n    }\n\n    function amountForShare(uint256 _share) external view override returns (uint256) {\n        return (_share * amountPerShare) / 1e18;\n    }\n}\n"},"contracts/test/MockSFrax.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ISFrax } from \"../interfaces/ISFrax.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockSFrax is ERC20, Ownable, ISFrax {\n    uint8 private immutable _decimals;\n    uint256 public exchangeRate;\n\n    constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n        _decimals = decimals_;\n    }\n\n    function faucet(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n\n    function setRate(uint256 rate) external onlyOwner {\n        exchangeRate = rate;\n    }\n\n    function convertToAssets(uint256 shares) external view override returns (uint256) {\n        return (shares * exchangeRate) / (10 ** uint256(_decimals));\n    }\n\n    function decimals() public view virtual override(ERC20, ISFrax) returns (uint8) {\n        return _decimals;\n    }\n}\n"},"contracts/test/MockSimpleOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../interfaces/OracleInterface.sol\";\n\ncontract MockSimpleOracle is OracleInterface {\n    mapping(address => uint256) public prices;\n\n    constructor() {\n        //\n    }\n\n    function getUnderlyingPrice(address vToken) external view returns (uint256) {\n        return prices[vToken];\n    }\n\n    function getPrice(address asset) external view returns (uint256) {\n        return prices[asset];\n    }\n\n    function setPrice(address vToken, uint256 price) public {\n        prices[vToken] = price;\n    }\n}\n\ncontract MockBoundValidator is BoundValidatorInterface {\n    mapping(address => bool) public validateResults;\n    bool public twapUpdated;\n\n    constructor() {\n        //\n    }\n\n    function validatePriceWithAnchorPrice(\n        address vToken,\n        uint256 reporterPrice,\n        uint256 anchorPrice\n    ) external view returns (bool) {\n        return validateResults[vToken];\n    }\n\n    function validateAssetPriceWithAnchorPrice(\n        address asset,\n        uint256 reporterPrice,\n        uint256 anchorPrice\n    ) external view returns (bool) {\n        return validateResults[asset];\n    }\n\n    function setValidateResult(address token, bool pass) public {\n        validateResults[token] = pass;\n    }\n}\n"},"contracts/test/MockV3Aggregator.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\";\n\n/**\n * @title MockV3Aggregator\n * @notice Based on the FluxAggregator contract\n * @notice Use this contract when you need to test\n * other contract's ability to read data from an\n * aggregator contract, but how the aggregator got\n * its answer is unimportant\n */\ncontract MockV3Aggregator is AggregatorV2V3Interface {\n    uint256 public constant version = 0;\n\n    uint8 public decimals;\n    int256 public latestAnswer;\n    uint256 public latestTimestamp;\n    uint256 public latestRound;\n\n    mapping(uint256 => int256) public getAnswer;\n    mapping(uint256 => uint256) public getTimestamp;\n    mapping(uint256 => uint256) private getStartedAt;\n\n    constructor(uint8 _decimals, int256 _initialAnswer) {\n        decimals = _decimals;\n        updateAnswer(_initialAnswer);\n    }\n\n    function getRoundData(\n        uint80 _roundId\n    )\n        external\n        view\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n    {\n        return (_roundId, getAnswer[_roundId], getStartedAt[_roundId], getTimestamp[_roundId], _roundId);\n    }\n\n    function latestRoundData()\n        external\n        view\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)\n    {\n        return (\n            uint80(latestRound),\n            getAnswer[latestRound],\n            getStartedAt[latestRound],\n            getTimestamp[latestRound],\n            uint80(latestRound)\n        );\n    }\n\n    function description() external pure returns (string memory) {\n        return \"v0.6/tests/MockV3Aggregator.sol\";\n    }\n\n    function updateAnswer(int256 _answer) public {\n        latestAnswer = _answer;\n        latestTimestamp = block.timestamp;\n        latestRound++;\n        getAnswer[latestRound] = _answer;\n        getTimestamp[latestRound] = block.timestamp;\n        getStartedAt[latestRound] = block.timestamp;\n    }\n\n    function updateRoundData(uint80 _roundId, int256 _answer, uint256 _timestamp, uint256 _startedAt) public {\n        latestRound = _roundId;\n        latestAnswer = _answer;\n        latestTimestamp = _timestamp;\n        getAnswer[latestRound] = _answer;\n        getTimestamp[latestRound] = _timestamp;\n        getStartedAt[latestRound] = _startedAt;\n    }\n}\n"},"contracts/test/MockWBETH.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IWBETH } from \"../interfaces/IWBETH.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockWBETH is ERC20, Ownable, IWBETH {\n    uint8 private immutable _decimals;\n    uint256 public override exchangeRate;\n\n    constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) Ownable() {\n        _decimals = decimals_;\n    }\n\n    function faucet(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n\n    function setExchangeRate(uint256 rate) external onlyOwner {\n        exchangeRate = rate;\n    }\n\n    function decimals() public view virtual override(ERC20, IWBETH) returns (uint8) {\n        return _decimals;\n    }\n}\n"},"contracts/test/oracles/MockCorrelatedTokenOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport { CorrelatedTokenOracle } from \"../../oracles/common/CorrelatedTokenOracle.sol\";\n\ncontract MockCorrelatedTokenOracle is CorrelatedTokenOracle {\n    uint256 public mockUnderlyingAmount;\n\n    constructor(\n        address correlatedToken,\n        address underlyingToken,\n        address resilientOracle,\n        uint256 annualGrowthRate,\n        uint256 snapshotInterval,\n        uint256 initialSnapshotMaxExchangeRate,\n        uint256 initialSnapshotTimestamp,\n        address accessControlManager,\n        uint256 snapshotGap\n    )\n        CorrelatedTokenOracle(\n            correlatedToken,\n            underlyingToken,\n            resilientOracle,\n            annualGrowthRate,\n            snapshotInterval,\n            initialSnapshotMaxExchangeRate,\n            initialSnapshotTimestamp,\n            accessControlManager,\n            snapshotGap\n        )\n    {}\n\n    function setMockUnderlyingAmount(uint256 amount) external {\n        mockUnderlyingAmount = amount;\n    }\n\n    function getUnderlyingAmount() public view override returns (uint256) {\n        return mockUnderlyingAmount;\n    }\n}\n"},"contracts/test/oracles/MockERC20.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockERC20 is ERC20 {\n    constructor(string memory name, string memory symbol, uint8 decimals) ERC20(name, symbol) {\n        _mint(msg.sender, 100000 * 10 ** uint256(decimals));\n    }\n}\n"},"contracts/test/oracles/MockResilientOracle.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"../../interfaces/OracleInterface.sol\";\n\ncontract MockOracle is OracleInterface {\n    mapping(address => uint256) public prices;\n\n    function getPrice(address asset) external view returns (uint256) {\n        return prices[asset];\n    }\n\n    function setPrice(address vToken, uint256 price) public {\n        prices[vToken] = price;\n    }\n}\n"},"contracts/test/PancakePairHarness.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\n// a library for performing various math operations\n\nlibrary Math {\n    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        z = x < y ? x : y;\n    }\n\n    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n    function sqrt(uint256 y) internal pure returns (uint256 z) {\n        if (y > 3) {\n            z = y;\n            uint256 x = y / 2 + 1;\n            while (x < z) {\n                z = x;\n                x = (y / x + x) / 2;\n            }\n        } else if (y != 0) {\n            z = 1;\n        }\n    }\n}\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n    //solhint-disable-next-line state-visibility\n    uint224 constant Q112 = 2 ** 112;\n\n    // encode a uint112 as a UQ112x112\n    function encode(uint112 y) internal pure returns (uint224 z) {\n        z = uint224(y) * Q112; // never overflows\n    }\n\n    // divide a UQ112x112 by a uint112, returning a UQ112x112\n    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n        z = x / uint224(y);\n    }\n}\n\ncontract PancakePairHarness {\n    using UQ112x112 for uint224;\n\n    address public token0;\n    address public token1;\n\n    uint112 private reserve0; // uses single storage slot, accessible via getReserves\n    uint112 private reserve1; // uses single storage slot, accessible via getReserves\n    uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n    uint256 public price0CumulativeLast;\n    uint256 public price1CumulativeLast;\n    uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n    // called once by the factory at time of deployment\n    function initialize(address _token0, address _token1) external {\n        token0 = _token0;\n        token1 = _token1;\n    }\n\n    // update reserves and, on the first call per block, price accumulators\n    function update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) external {\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"PancakeV2: OVERFLOW\");\n        uint32 blockTimestamp = uint32(block.timestamp % 2 ** 32);\n        unchecked {\n            uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n            if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n                // * never overflows, and + overflow is desired\n                price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n                price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n            }\n        }\n        reserve0 = uint112(balance0);\n        reserve1 = uint112(balance1);\n        blockTimestampLast = blockTimestamp;\n    }\n\n    function currentBlockTimestamp() external view returns (uint32) {\n        return uint32(block.timestamp % 2 ** 32);\n    }\n\n    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n        _reserve0 = reserve0;\n        _reserve1 = reserve1;\n        _blockTimestampLast = blockTimestampLast;\n    }\n}\n"},"contracts/test/VBEP20Harness.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.25;\n\nimport \"./BEP20Harness.sol\";\n\ncontract VBEP20Harness is BEP20Harness {\n    /**\n     * @notice Underlying asset for this VToken\n     */\n    address public underlying;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint8 decimals,\n        address underlying_\n    ) BEP20Harness(name_, symbol_, decimals) {\n        underlying = underlying_;\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor (address initialOwner) {\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\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     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n     */\n    constructor(address _logic, bytes memory _data) payable {\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n        _upgradeToAndCall(_logic, _data, false);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _implementation() internal view virtual override returns (address impl) {\n        return ERC1967Upgrade._getImplementation();\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\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, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view virtual returns (address) {\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Emitted when the beacon is upgraded.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \"ERC1967: beacon implementation is not a contract\");\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(\n        address newBeacon,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n     * and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internall call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _beforeFallback();\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n     * is empty.\n     */\n    receive() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n     * call, or as part of the Solidity `fallback` or `receive` functions.\n     *\n     * If overriden should call `super._beforeFallback()`.\n     */\n    function _beforeFallback() internal virtual {}\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n\n    constructor (address initialOwner) Ownable(initialOwner) {}\n\n    /**\n     * @dev Returns the current implementation of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Returns the current admin of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"admin()\")) == 0xf851a440\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Changes the admin of `proxy` to `newAdmin`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the current admin of `proxy`.\n     */\n    function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n        proxy.changeAdmin(newAdmin);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n        proxy.upgradeTo(implementation);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n     * {TransparentUpgradeableProxy-upgradeToAndCall}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgradeAndCall(\n        TransparentUpgradeableProxy proxy,\n        address implementation,\n        bytes memory data\n    ) public payable virtual onlyOwner {\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n    /**\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n     */\n    constructor(\n        address _logic,\n        address admin_,\n        bytes memory _data\n    ) payable ERC1967Proxy(_logic, _data) {\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n        _changeAdmin(admin_);\n    }\n\n    /**\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n     */\n    modifier ifAdmin() {\n        if (msg.sender == _getAdmin()) {\n            _;\n        } else {\n            _fallback();\n        }\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function admin() external ifAdmin returns (address admin_) {\n        admin_ = _getAdmin();\n    }\n\n    /**\n     * @dev Returns the current implementation.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function implementation() external ifAdmin returns (address implementation_) {\n        implementation_ = _implementation();\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n     */\n    function changeAdmin(address newAdmin) external virtual ifAdmin {\n        _changeAdmin(newAdmin);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n     */\n    function upgradeTo(address newImplementation) external ifAdmin {\n        _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n     * proxied contract.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n     */\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n        _upgradeToAndCall(newImplementation, data, true);\n    }\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _admin() internal view virtual returns (address) {\n        return _getAdmin();\n    }\n\n    /**\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n     */\n    function _beforeFallback() internal virtual override {\n        require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n        super._beforeFallback();\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\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, it is bubbled up by this\n     * function (like regular Solidity function calls).\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     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\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     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\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\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\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    /**\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 {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\n    address internal immutable _ADMIN;\n\n    /**\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n     */\n    constructor(\n        address _logic,\n        address admin_,\n        bytes memory _data\n    ) payable ERC1967Proxy(_logic, _data) {\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n        _ADMIN = admin_;\n\n        // still store it to work with EIP-1967\n        bytes32 slot = _ADMIN_SLOT;\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            sstore(slot, admin_)\n        }\n        emit AdminChanged(address(0), admin_);\n    }\n\n    /**\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n     */\n    modifier ifAdmin() {\n        if (msg.sender == _getAdmin()) {\n            _;\n        } else {\n            _fallback();\n        }\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function admin() external ifAdmin returns (address admin_) {\n        admin_ = _getAdmin();\n    }\n\n    /**\n     * @dev Returns the current implementation.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function implementation() external ifAdmin returns (address implementation_) {\n        implementation_ = _implementation();\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n     */\n    function upgradeTo(address newImplementation) external ifAdmin {\n        _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n     * proxied contract.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n     */\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n        _upgradeToAndCall(newImplementation, data, true);\n    }\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _admin() internal view virtual returns (address) {\n        return _getAdmin();\n    }\n\n    /**\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n     */\n    function _beforeFallback() internal virtual override {\n        require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n        super._beforeFallback();\n    }\n\n    function _getAdmin() internal view virtual override returns (address) {\n        return _ADMIN;\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"mode":"3"},"evmVersion":"cancun","outputSelection":{"*":{"*":["storageLayout","abi","evm.methodIdentifiers","metadata","devdoc","userdoc"],"":["ast"]}},"metadata":{"bytecodeHash":"none"},"detectMissingLibraries":false,"forceEVMLA":false,"enableEraVMExtensions":false,"libraries":{}}},"output":{"errors":[{"component":"general","errorCode":"2394","formattedMessage":"Warning: Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.\n   --> contracts/ReferenceOracle.sol:100:13:\n    |\n100 |             tstore(slot, price)\n    |             ^^^^^^\n\n","message":"Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.","severity":"warning","sourceLocation":{"file":"contracts/ReferenceOracle.sol","start":4117,"end":4123},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/oracles/mocks/MockBinanceFeedRegistry.sol:26:29:\n   |\n26 |     function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n   |                             ^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/oracles/mocks/MockBinanceFeedRegistry.sol","start":733,"end":751},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/oracles/mocks/MockBinanceFeedRegistry.sol:26:49:\n   |\n26 |     function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n   |                                                 ^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/oracles/mocks/MockBinanceFeedRegistry.sol","start":753,"end":772},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/test/MockSimpleOracle.sol:36:9:\n   |\n36 |         uint256 reporterPrice,\n   |         ^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/test/MockSimpleOracle.sol","start":828,"end":849},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/test/MockSimpleOracle.sol:37:9:\n   |\n37 |         uint256 anchorPrice\n   |         ^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/test/MockSimpleOracle.sol","start":859,"end":878},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/test/MockSimpleOracle.sol:44:9:\n   |\n44 |         uint256 reporterPrice,\n   |         ^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/test/MockSimpleOracle.sol","start":1042,"end":1063},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/test/MockSimpleOracle.sol:45:9:\n   |\n45 |         uint256 anchorPrice\n   |         ^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"file":"contracts/test/MockSimpleOracle.sol","start":1073,"end":1092},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n  --> contracts/oracles/mocks/MockBinanceFeedRegistry.sol:26:5:\n   |\n26 |     function decimalsByName(string memory base, string memory quote) external view override returns (uint8) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"file":"contracts/oracles/mocks/MockBinanceFeedRegistry.sol","start":709,"end":838},"type":"Warning"}],"version":"0.8.25","long_version":"0.8.25+commit.d94a798c.Linux.clang","zk_version":"1.5.1","sources":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol":{"id":0,"ast":{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol","exportedSymbols":{"AggregatorInterface":[47]},"id":48,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"AggregatorInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":47,"linearizedBaseContracts":[47],"name":"AggregatorInterface","nameLocation":"67:19:0","nodeType":"ContractDefinition","nodes":[{"functionSelector":"50d25bcd","id":6,"implemented":false,"kind":"function","modifiers":[],"name":"latestAnswer","nameLocation":"100:12:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"112:2:0"},"returnParameters":{"id":5,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6,"src":"138:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3,"name":"int256","nodeType":"ElementaryTypeName","src":"138:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"137:8:0"},"scope":47,"src":"91:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8205bf6a","id":11,"implemented":false,"kind":"function","modifiers":[],"name":"latestTimestamp","nameLocation":"159:15:0","nodeType":"FunctionDefinition","parameters":{"id":7,"nodeType":"ParameterList","parameters":[],"src":"174:2:0"},"returnParameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"200:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"200:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"199:9:0"},"scope":47,"src":"150:59:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"668a0f02","id":16,"implemented":false,"kind":"function","modifiers":[],"name":"latestRound","nameLocation":"222:11:0","nodeType":"FunctionDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"233:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16,"src":"259:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"259:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"258:9:0"},"scope":47,"src":"213:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b5ab58dc","id":23,"implemented":false,"kind":"function","modifiers":[],"name":"getAnswer","nameLocation":"281:9:0","nodeType":"FunctionDefinition","parameters":{"id":19,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18,"mutability":"mutable","name":"roundId","nameLocation":"299:7:0","nodeType":"VariableDeclaration","scope":23,"src":"291:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17,"name":"uint256","nodeType":"ElementaryTypeName","src":"291:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"290:17:0"},"returnParameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23,"src":"331:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":20,"name":"int256","nodeType":"ElementaryTypeName","src":"331:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"330:8:0"},"scope":47,"src":"272:67:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b633620c","id":30,"implemented":false,"kind":"function","modifiers":[],"name":"getTimestamp","nameLocation":"352:12:0","nodeType":"FunctionDefinition","parameters":{"id":26,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25,"mutability":"mutable","name":"roundId","nameLocation":"373:7:0","nodeType":"VariableDeclaration","scope":30,"src":"365:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24,"name":"uint256","nodeType":"ElementaryTypeName","src":"365:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"364:17:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30,"src":"405:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"405:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:9:0"},"scope":47,"src":"343:71:0","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f","id":38,"name":"AnswerUpdated","nameLocation":"424:13:0","nodeType":"EventDefinition","parameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"indexed":true,"mutability":"mutable","name":"current","nameLocation":"453:7:0","nodeType":"VariableDeclaration","scope":38,"src":"438:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":31,"name":"int256","nodeType":"ElementaryTypeName","src":"438:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":34,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"478:7:0","nodeType":"VariableDeclaration","scope":38,"src":"462:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":36,"indexed":false,"mutability":"mutable","name":"updatedAt","nameLocation":"495:9:0","nodeType":"VariableDeclaration","scope":38,"src":"487:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"437:68:0"},"src":"418:88:0"},{"anonymous":false,"eventSelector":"0109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac60271","id":46,"name":"NewRound","nameLocation":"516:8:0","nodeType":"EventDefinition","parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"541:7:0","nodeType":"VariableDeclaration","scope":46,"src":"525:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39,"name":"uint256","nodeType":"ElementaryTypeName","src":"525:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42,"indexed":true,"mutability":"mutable","name":"startedBy","nameLocation":"566:9:0","nodeType":"VariableDeclaration","scope":46,"src":"550:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41,"name":"address","nodeType":"ElementaryTypeName","src":"550:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":44,"indexed":false,"mutability":"mutable","name":"startedAt","nameLocation":"585:9:0","nodeType":"VariableDeclaration","scope":46,"src":"577:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint256","nodeType":"ElementaryTypeName","src":"577:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"524:71:0"},"src":"510:86:0"}],"scope":48,"src":"57:541:0","usedErrors":[],"usedEvents":[38,46]}],"src":"32:567:0"}},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol":{"id":1,"ast":{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol","exportedSymbols":{"AggregatorInterface":[47],"AggregatorV2V3Interface":[56],"AggregatorV3Interface":[102]},"id":57,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":49,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol","file":"./AggregatorInterface.sol","id":50,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":57,"sourceUnit":48,"src":"57:35:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","file":"./AggregatorV3Interface.sol","id":51,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":57,"sourceUnit":103,"src":"93:37:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":52,"name":"AggregatorInterface","nameLocations":["169:19:1"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"169:19:1"},"id":53,"nodeType":"InheritanceSpecifier","src":"169:19:1"},{"baseName":{"id":54,"name":"AggregatorV3Interface","nameLocations":["190:21:1"],"nodeType":"IdentifierPath","referencedDeclaration":102,"src":"190:21:1"},"id":55,"nodeType":"InheritanceSpecifier","src":"190:21:1"}],"canonicalName":"AggregatorV2V3Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":56,"linearizedBaseContracts":[56,102,47],"name":"AggregatorV2V3Interface","nameLocation":"142:23:1","nodeType":"ContractDefinition","nodes":[],"scope":57,"src":"132:82:1","usedErrors":[],"usedEvents":[38,46]}],"src":"32:183:1"}},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"id":2,"ast":{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","exportedSymbols":{"AggregatorV3Interface":[102]},"id":103,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":58,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"AggregatorV3Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":102,"linearizedBaseContracts":[102],"name":"AggregatorV3Interface","nameLocation":"67:21:2","nodeType":"ContractDefinition","nodes":[{"functionSelector":"313ce567","id":63,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"102:8:2","nodeType":"FunctionDefinition","parameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"110:2:2"},"returnParameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":63,"src":"136:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":60,"name":"uint8","nodeType":"ElementaryTypeName","src":"136:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"135:7:2"},"scope":102,"src":"93:50:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7284e416","id":68,"implemented":false,"kind":"function","modifiers":[],"name":"description","nameLocation":"156:11:2","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"167:2:2"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68,"src":"193:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":65,"name":"string","nodeType":"ElementaryTypeName","src":"193:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"192:15:2"},"scope":102,"src":"147:61:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":73,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"221:7:2","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"228:2:2"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73,"src":"254:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":70,"name":"uint256","nodeType":"ElementaryTypeName","src":"254:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"253:9:2"},"scope":102,"src":"212:51:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9a6fc8f5","id":88,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundData","nameLocation":"276:12:2","nodeType":"FunctionDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75,"mutability":"mutable","name":"_roundId","nameLocation":"296:8:2","nodeType":"VariableDeclaration","scope":88,"src":"289:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":74,"name":"uint80","nodeType":"ElementaryTypeName","src":"289:6:2","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"288:17:2"},"returnParameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"roundId","nameLocation":"355:7:2","nodeType":"VariableDeclaration","scope":88,"src":"348:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":77,"name":"uint80","nodeType":"ElementaryTypeName","src":"348:6:2","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":80,"mutability":"mutable","name":"answer","nameLocation":"377:6:2","nodeType":"VariableDeclaration","scope":88,"src":"370:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":79,"name":"int256","nodeType":"ElementaryTypeName","src":"370:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":82,"mutability":"mutable","name":"startedAt","nameLocation":"399:9:2","nodeType":"VariableDeclaration","scope":88,"src":"391:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81,"name":"uint256","nodeType":"ElementaryTypeName","src":"391:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84,"mutability":"mutable","name":"updatedAt","nameLocation":"424:9:2","nodeType":"VariableDeclaration","scope":88,"src":"416:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint256","nodeType":"ElementaryTypeName","src":"416:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86,"mutability":"mutable","name":"answeredInRound","nameLocation":"448:15:2","nodeType":"VariableDeclaration","scope":88,"src":"441:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":85,"name":"uint80","nodeType":"ElementaryTypeName","src":"441:6:2","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"340:129:2"},"scope":102,"src":"267:203:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"feaf968c","id":101,"implemented":false,"kind":"function","modifiers":[],"name":"latestRoundData","nameLocation":"483:15:2","nodeType":"FunctionDefinition","parameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"498:2:2"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"mutability":"mutable","name":"roundId","nameLocation":"550:7:2","nodeType":"VariableDeclaration","scope":101,"src":"543:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":90,"name":"uint80","nodeType":"ElementaryTypeName","src":"543:6:2","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":93,"mutability":"mutable","name":"answer","nameLocation":"572:6:2","nodeType":"VariableDeclaration","scope":101,"src":"565:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":92,"name":"int256","nodeType":"ElementaryTypeName","src":"565:6:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"startedAt","nameLocation":"594:9:2","nodeType":"VariableDeclaration","scope":101,"src":"586:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"586:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"updatedAt","nameLocation":"619:9:2","nodeType":"VariableDeclaration","scope":101,"src":"611:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"answeredInRound","nameLocation":"643:15:2","nodeType":"VariableDeclaration","scope":101,"src":"636:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":98,"name":"uint80","nodeType":"ElementaryTypeName","src":"636:6:2","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"535:129:2"},"scope":102,"src":"474:191:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":103,"src":"57:610:2","usedErrors":[],"usedEvents":[]}],"src":"32:636:2"}},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"id":3,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1020],"Initializable":[511],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342]},"id":210,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":104,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"./OwnableUpgradeable.sol","id":105,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":210,"sourceUnit":343,"src":"132:34:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":107,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":210,"sourceUnit":512,"src":"167:63:3","symbolAliases":[{"foreign":{"id":106,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"175:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":109,"name":"Initializable","nameLocations":["719:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":511,"src":"719:13:3"},"id":110,"nodeType":"InheritanceSpecifier","src":"719:13:3"},{"baseName":{"id":111,"name":"OwnableUpgradeable","nameLocations":["734:18:3"],"nodeType":"IdentifierPath","referencedDeclaration":342,"src":"734:18:3"},"id":112,"nodeType":"InheritanceSpecifier","src":"734:18:3"}],"canonicalName":"Ownable2StepUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"232:441:3","text":" @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."},"fullyImplemented":true,"id":209,"linearizedBaseContracts":[209,342,1020,511],"name":"Ownable2StepUpgradeable","nameLocation":"692:23:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":114,"mutability":"mutable","name":"_pendingOwner","nameLocation":"775:13:3","nodeType":"VariableDeclaration","scope":209,"src":"759:29:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","id":120,"name":"OwnershipTransferStarted","nameLocation":"801:24:3","nodeType":"EventDefinition","parameters":{"id":119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"842:13:3","nodeType":"VariableDeclaration","scope":120,"src":"826:29:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":118,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"873:8:3","nodeType":"VariableDeclaration","scope":120,"src":"857:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"857:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"825:57:3"},"src":"795:88:3"},{"body":{"id":128,"nodeType":"Block","src":"946:43:3","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":125,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"956:24:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"956:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":127,"nodeType":"ExpressionStatement","src":"956:26:3"}]},"id":129,"implemented":true,"kind":"function","modifiers":[{"id":123,"kind":"modifierInvocation","modifierName":{"id":122,"name":"onlyInitializing","nameLocations":["929:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"929:16:3"},"nodeType":"ModifierInvocation","src":"929:16:3"}],"name":"__Ownable2Step_init","nameLocation":"898:19:3","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[],"src":"917:2:3"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"946:0:3"},"scope":209,"src":"889:100:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":134,"nodeType":"Block","src":"1062:7:3","statements":[]},"id":135,"implemented":true,"kind":"function","modifiers":[{"id":132,"kind":"modifierInvocation","modifierName":{"id":131,"name":"onlyInitializing","nameLocations":["1045:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1045:16:3"},"nodeType":"ModifierInvocation","src":"1045:16:3"}],"name":"__Ownable2Step_init_unchained","nameLocation":"1004:29:3","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[],"src":"1033:2:3"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[],"src":"1062:0:3"},"scope":209,"src":"995:74:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":143,"nodeType":"Block","src":"1206:37:3","statements":[{"expression":{"id":141,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"1223:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":140,"id":142,"nodeType":"Return","src":"1216:20:3"}]},"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"1074:65:3","text":" @dev Returns the address of the pending owner."},"functionSelector":"e30c3978","id":144,"implemented":true,"kind":"function","modifiers":[],"name":"pendingOwner","nameLocation":"1153:12:3","nodeType":"FunctionDefinition","parameters":{"id":137,"nodeType":"ParameterList","parameters":[],"src":"1165:2:3"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":144,"src":"1197:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"1197:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1196:9:3"},"scope":209,"src":"1144:99:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[316],"body":{"id":163,"nodeType":"Block","src":"1515:99:3","statements":[{"expression":{"id":155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":153,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"1525:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":154,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":147,"src":"1541:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1525:24:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":156,"nodeType":"ExpressionStatement","src":"1525:24:3"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":158,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"1589:5:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1589:7:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":160,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":147,"src":"1598:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":157,"name":"OwnershipTransferStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"1564:24:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":162,"nodeType":"EmitStatement","src":"1559:48:3"}]},"documentation":{"id":145,"nodeType":"StructuredDocumentation","src":"1249:182:3","text":" @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":164,"implemented":true,"kind":"function","modifiers":[{"id":151,"kind":"modifierInvocation","modifierName":{"id":150,"name":"onlyOwner","nameLocations":["1505:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"1505:9:3"},"nodeType":"ModifierInvocation","src":"1505:9:3"}],"name":"transferOwnership","nameLocation":"1445:17:3","nodeType":"FunctionDefinition","overrides":{"id":149,"nodeType":"OverrideSpecifier","overrides":[],"src":"1496:8:3"},"parameters":{"id":148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"newOwner","nameLocation":"1471:8:3","nodeType":"VariableDeclaration","scope":164,"src":"1463:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1462:18:3"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[],"src":"1515:0:3"},"scope":209,"src":"1436:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[336],"body":{"id":180,"nodeType":"Block","src":"1870:81:3","statements":[{"expression":{"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1880:20:3","subExpression":{"id":171,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"1887:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":173,"nodeType":"ExpressionStatement","src":"1880:20:3"},{"expression":{"arguments":[{"id":177,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"1935:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":174,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1910:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Ownable2StepUpgradeable_$209_$","typeString":"type(contract super Ownable2StepUpgradeable)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1916:18:3","memberName":"_transferOwnership","nodeType":"MemberAccess","referencedDeclaration":336,"src":"1910:24:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1910:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"ExpressionStatement","src":"1910:34:3"}]},"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"1620:173:3","text":" @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."},"id":181,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"1807:18:3","nodeType":"FunctionDefinition","overrides":{"id":169,"nodeType":"OverrideSpecifier","overrides":[],"src":"1861:8:3"},"parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"newOwner","nameLocation":"1834:8:3","nodeType":"VariableDeclaration","scope":181,"src":"1826:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1825:18:3"},"returnParameters":{"id":170,"nodeType":"ParameterList","parameters":[],"src":"1870:0:3"},"scope":209,"src":"1798:153:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":202,"nodeType":"Block","src":"2073:170:3","statements":[{"assignments":[186],"declarations":[{"constant":false,"id":186,"mutability":"mutable","name":"sender","nameLocation":"2091:6:3","nodeType":"VariableDeclaration","scope":202,"src":"2083:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"2083:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":189,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":187,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"2100:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2100:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2083:29:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":191,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":144,"src":"2130:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2130:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":193,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"2148:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2130:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572","id":195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2156:43:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""},"value":"Ownable2Step: caller is not the new owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""}],"id":190,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2122:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2122:78:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":197,"nodeType":"ExpressionStatement","src":"2122:78:3"},{"expression":{"arguments":[{"id":199,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"2229:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":198,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[181],"referencedDeclaration":181,"src":"2210:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2210:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":201,"nodeType":"ExpressionStatement","src":"2210:26:3"}]},"documentation":{"id":182,"nodeType":"StructuredDocumentation","src":"1957:69:3","text":" @dev The new owner accepts the ownership transfer."},"functionSelector":"79ba5097","id":203,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"2040:15:3","nodeType":"FunctionDefinition","parameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"2055:2:3"},"returnParameters":{"id":184,"nodeType":"ParameterList","parameters":[],"src":"2073:0:3"},"scope":209,"src":"2031:212:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":204,"nodeType":"StructuredDocumentation","src":"2249:254:3","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":208,"mutability":"mutable","name":"__gap","nameLocation":"2528:5:3","nodeType":"VariableDeclaration","scope":209,"src":"2508:25:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":205,"name":"uint256","nodeType":"ElementaryTypeName","src":"2508:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":207,"length":{"hexValue":"3439","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2516:2:3","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2508:11:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":210,"src":"674:1862:3","usedErrors":[],"usedEvents":[120,227,357]}],"src":"107:2430:3"}},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"id":4,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1020],"Initializable":[511],"OwnableUpgradeable":[342]},"id":343,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":211,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":212,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":343,"sourceUnit":1021,"src":"127:41:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":214,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":343,"sourceUnit":512,"src":"169:63:4","symbolAliases":[{"foreign":{"id":213,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"177:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":216,"name":"Initializable","nameLocations":["769:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":511,"src":"769:13:4"},"id":217,"nodeType":"InheritanceSpecifier","src":"769:13:4"},{"baseName":{"id":218,"name":"ContextUpgradeable","nameLocations":["784:18:4"],"nodeType":"IdentifierPath","referencedDeclaration":1020,"src":"784:18:4"},"id":219,"nodeType":"InheritanceSpecifier","src":"784:18:4"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":215,"nodeType":"StructuredDocumentation","src":"234:494:4","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":342,"linearizedBaseContracts":[342,1020,511],"name":"OwnableUpgradeable","nameLocation":"747:18:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":221,"mutability":"mutable","name":"_owner","nameLocation":"825:6:4","nodeType":"VariableDeclaration","scope":342,"src":"809:22:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":220,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":227,"name":"OwnershipTransferred","nameLocation":"844:20:4","nodeType":"EventDefinition","parameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"881:13:4","nodeType":"VariableDeclaration","scope":227,"src":"865:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":225,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"912:8:4","nodeType":"VariableDeclaration","scope":227,"src":"896:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":224,"name":"address","nodeType":"ElementaryTypeName","src":"896:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"864:57:4"},"src":"838:84:4"},{"body":{"id":236,"nodeType":"Block","src":"1076:43:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":233,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"1086:24:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1086:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":235,"nodeType":"ExpressionStatement","src":"1086:26:4"}]},"documentation":{"id":228,"nodeType":"StructuredDocumentation","src":"928:91:4","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":237,"implemented":true,"kind":"function","modifiers":[{"id":231,"kind":"modifierInvocation","modifierName":{"id":230,"name":"onlyInitializing","nameLocations":["1059:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1059:16:4"},"nodeType":"ModifierInvocation","src":"1059:16:4"}],"name":"__Ownable_init","nameLocation":"1033:14:4","nodeType":"FunctionDefinition","parameters":{"id":229,"nodeType":"ParameterList","parameters":[],"src":"1047:2:4"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[],"src":"1076:0:4"},"scope":342,"src":"1024:95:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":247,"nodeType":"Block","src":"1187:49:4","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":243,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"1216:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1216:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":242,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"1197:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1197:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":246,"nodeType":"ExpressionStatement","src":"1197:32:4"}]},"id":248,"implemented":true,"kind":"function","modifiers":[{"id":240,"kind":"modifierInvocation","modifierName":{"id":239,"name":"onlyInitializing","nameLocations":["1170:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1170:16:4"},"nodeType":"ModifierInvocation","src":"1170:16:4"}],"name":"__Ownable_init_unchained","nameLocation":"1134:24:4","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[],"src":"1158:2:4"},"returnParameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"1187:0:4"},"scope":342,"src":"1125:111:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":255,"nodeType":"Block","src":"1345:41:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":251,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"1355:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1355:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"ExpressionStatement","src":"1355:13:4"},{"id":254,"nodeType":"PlaceholderStatement","src":"1378:1:4"}]},"documentation":{"id":249,"nodeType":"StructuredDocumentation","src":"1242:77:4","text":" @dev Throws if called by any account other than the owner."},"id":256,"name":"onlyOwner","nameLocation":"1333:9:4","nodeType":"ModifierDefinition","parameters":{"id":250,"nodeType":"ParameterList","parameters":[],"src":"1342:2:4"},"src":"1324:62:4","virtual":false,"visibility":"internal"},{"body":{"id":264,"nodeType":"Block","src":"1517:30:4","statements":[{"expression":{"id":262,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"1534:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":261,"id":263,"nodeType":"Return","src":"1527:13:4"}]},"documentation":{"id":257,"nodeType":"StructuredDocumentation","src":"1392:65:4","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":265,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1471:5:4","nodeType":"FunctionDefinition","parameters":{"id":258,"nodeType":"ParameterList","parameters":[],"src":"1476:2:4"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"1508:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":259,"name":"address","nodeType":"ElementaryTypeName","src":"1508:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1507:9:4"},"scope":342,"src":"1462:85:4","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":278,"nodeType":"Block","src":"1665:85:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":270,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"1683:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1683:7:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":272,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"1694:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1694:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1683:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1708:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":269,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1675:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1675:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"ExpressionStatement","src":"1675:68:4"}]},"documentation":{"id":266,"nodeType":"StructuredDocumentation","src":"1553:62:4","text":" @dev Throws if the sender is not the owner."},"id":279,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1629:11:4","nodeType":"FunctionDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[],"src":"1640:2:4"},"returnParameters":{"id":268,"nodeType":"ParameterList","parameters":[],"src":"1665:0:4"},"scope":342,"src":"1620:130:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":292,"nodeType":"Block","src":"2139:47:4","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:1:4","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":287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2168:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":286,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:4","typeDescriptions":{}}},"id":289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2168:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":285,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"2149:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2149:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":291,"nodeType":"ExpressionStatement","src":"2149:30:4"}]},"documentation":{"id":280,"nodeType":"StructuredDocumentation","src":"1756:324:4","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":293,"implemented":true,"kind":"function","modifiers":[{"id":283,"kind":"modifierInvocation","modifierName":{"id":282,"name":"onlyOwner","nameLocations":["2129:9:4"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"2129:9:4"},"nodeType":"ModifierInvocation","src":"2129:9:4"}],"name":"renounceOwnership","nameLocation":"2094:17:4","nodeType":"FunctionDefinition","parameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"2111:2:4"},"returnParameters":{"id":284,"nodeType":"ParameterList","parameters":[],"src":"2139:0:4"},"scope":342,"src":"2085:101:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":315,"nodeType":"Block","src":"2405:128:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":302,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"2423:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2443:1:4","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":304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2435:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:4","typeDescriptions":{}}},"id":306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2435:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2423:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2447:40:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":301,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2415:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2415:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":310,"nodeType":"ExpressionStatement","src":"2415:73:4"},{"expression":{"arguments":[{"id":312,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"2517:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":311,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"2498:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2498:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":314,"nodeType":"ExpressionStatement","src":"2498:28:4"}]},"documentation":{"id":294,"nodeType":"StructuredDocumentation","src":"2192:138:4","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":316,"implemented":true,"kind":"function","modifiers":[{"id":299,"kind":"modifierInvocation","modifierName":{"id":298,"name":"onlyOwner","nameLocations":["2395:9:4"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"2395:9:4"},"nodeType":"ModifierInvocation","src":"2395:9:4"}],"name":"transferOwnership","nameLocation":"2344:17:4","nodeType":"FunctionDefinition","parameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":296,"mutability":"mutable","name":"newOwner","nameLocation":"2370:8:4","nodeType":"VariableDeclaration","scope":316,"src":"2362:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":295,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2361:18:4"},"returnParameters":{"id":300,"nodeType":"ParameterList","parameters":[],"src":"2405:0:4"},"scope":342,"src":"2335:198:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"2750:124:4","statements":[{"assignments":[323],"declarations":[{"constant":false,"id":323,"mutability":"mutable","name":"oldOwner","nameLocation":"2768:8:4","nodeType":"VariableDeclaration","scope":335,"src":"2760:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":322,"name":"address","nodeType":"ElementaryTypeName","src":"2760:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":325,"initialValue":{"id":324,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"2779:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2760:25:4"},{"expression":{"id":328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":326,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"2795:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":327,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"2804:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2795:17:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":329,"nodeType":"ExpressionStatement","src":"2795:17:4"},{"eventCall":{"arguments":[{"id":331,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":323,"src":"2848:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":332,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"2858:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":330,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"2827:20:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"2822:45:4"}]},"documentation":{"id":317,"nodeType":"StructuredDocumentation","src":"2539:143:4","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":336,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2696:18:4","nodeType":"FunctionDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":319,"mutability":"mutable","name":"newOwner","nameLocation":"2723:8:4","nodeType":"VariableDeclaration","scope":336,"src":"2715:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":318,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2714:18:4"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[],"src":"2750:0:4"},"scope":342,"src":"2687:187:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":337,"nodeType":"StructuredDocumentation","src":"2880:254:4","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":341,"mutability":"mutable","name":"__gap","nameLocation":"3159:5:4","nodeType":"VariableDeclaration","scope":342,"src":"3139:25:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":340,"length":{"hexValue":"3439","id":339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:2:4","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3139:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":343,"src":"729:2438:4","usedErrors":[],"usedEvents":[227,357]}],"src":"102:3066:4"}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"id":5,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[969],"Initializable":[511]},"id":512,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":344,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":345,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":512,"sourceUnit":970,"src":"138:44:5","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"184:2209:5","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":511,"linearizedBaseContracts":[511],"name":"Initializable","nameLocation":"2412:13:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":347,"nodeType":"StructuredDocumentation","src":"2432:109:5","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":349,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:5","nodeType":"VariableDeclaration","scope":511,"src":"2546:26:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":348,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"2579:91:5","text":" @dev Indicates that the contract is in the process of being initialized."},"id":352,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:5","nodeType":"VariableDeclaration","scope":511,"src":"2675:26:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":351,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"2708:90:5","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":357,"name":"Initialized","nameLocation":"2809:11:5","nodeType":"EventDefinition","parameters":{"id":356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:5","nodeType":"VariableDeclaration","scope":357,"src":"2821:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":354,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:5"},"src":"2803:33:5"},{"body":{"id":412,"nodeType":"Block","src":"3269:483:5","statements":[{"assignments":[361],"declarations":[{"constant":false,"id":361,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:5","nodeType":"VariableDeclaration","scope":412,"src":"3279:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":360,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":364,"initialValue":{"id":363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:5","subExpression":{"id":362,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"3302:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":366,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"3347:14:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":367,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3365:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":371,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:5","subExpression":{"arguments":[{"arguments":[{"id":376,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$511","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$511","typeString":"contract Initializable"}],"id":375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:5","typeDescriptions":{}}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":372,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"3388:18:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$969_$","typeString":"type(library AddressUpgradeable)"}},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:5","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":657,"src":"3388:29:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":380,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3436:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":365,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"ExpressionStatement","src":"3325:201:5"},{"expression":{"id":391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":389,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3536:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":392,"nodeType":"ExpressionStatement","src":"3536:16:5"},{"condition":{"id":393,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"3566:14:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"3562:65:5","trueBody":{"id":398,"nodeType":"Block","src":"3582:45:5","statements":[{"expression":{"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":394,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"3596:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":397,"nodeType":"ExpressionStatement","src":"3596:20:5"}]}},{"id":400,"nodeType":"PlaceholderStatement","src":"3636:1:5"},{"condition":{"id":401,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"3651:14:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":411,"nodeType":"IfStatement","src":"3647:99:5","trueBody":{"id":410,"nodeType":"Block","src":"3667:79:5","statements":[{"expression":{"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":402,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"3681:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":405,"nodeType":"ExpressionStatement","src":"3681:21:5"},{"eventCall":{"arguments":[{"hexValue":"31","id":407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:5","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":406,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"3721:11:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":409,"nodeType":"EmitStatement","src":"3716:19:5"}]}}]},"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"2842:399:5","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 functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":413,"name":"initializer","nameLocation":"3255:11:5","nodeType":"ModifierDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"3266:2:5"},"src":"3246:506:5","virtual":false,"visibility":"internal"},{"body":{"id":445,"nodeType":"Block","src":"4863:255:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:5","subExpression":{"id":419,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"4882:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":421,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"4899:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":422,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"4914:7:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":418,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"4873:99:5"},{"expression":{"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":428,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"4982:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":429,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"4997:7:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":431,"nodeType":"ExpressionStatement","src":"4982:22:5"},{"expression":{"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":432,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"5014:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":435,"nodeType":"ExpressionStatement","src":"5014:20:5"},{"id":436,"nodeType":"PlaceholderStatement","src":"5044:1:5"},{"expression":{"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":437,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"5055:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":440,"nodeType":"ExpressionStatement","src":"5055:21:5"},{"eventCall":{"arguments":[{"id":442,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"5103:7:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":441,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"5091:11:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":444,"nodeType":"EmitStatement","src":"5086:25:5"}]},"documentation":{"id":414,"nodeType":"StructuredDocumentation","src":"3758:1062:5","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 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":446,"name":"reinitializer","nameLocation":"4834:13:5","nodeType":"ModifierDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"version","nameLocation":"4854:7:5","nodeType":"VariableDeclaration","scope":446,"src":"4848:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":415,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:5"},"src":"4825:293:5","virtual":false,"visibility":"internal"},{"body":{"id":455,"nodeType":"Block","src":"5356:97:5","statements":[{"expression":{"arguments":[{"id":450,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"5374:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":449,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":453,"nodeType":"ExpressionStatement","src":"5366:69:5"},{"id":454,"nodeType":"PlaceholderStatement","src":"5445:1:5"}]},"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"5124:199:5","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":456,"name":"onlyInitializing","nameLocation":"5337:16:5","nodeType":"ModifierDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"5353:2:5"},"src":"5328:125:5","virtual":false,"visibility":"internal"},{"body":{"id":491,"nodeType":"Block","src":"5988:231:5","statements":[{"expression":{"arguments":[{"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:5","subExpression":{"id":461,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6007:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":460,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":465,"nodeType":"ExpressionStatement","src":"5998:66:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":466,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"6078:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":468,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":467,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:5","memberName":"max","nodeType":"MemberAccess","src":"6094:15:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":490,"nodeType":"IfStatement","src":"6074:139:5","trueBody":{"id":489,"nodeType":"Block","src":"6111:102:5","statements":[{"expression":{"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":473,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"6125:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":475,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":474,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:5","memberName":"max","nodeType":"MemberAccess","src":"6140:15:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":480,"nodeType":"ExpressionStatement","src":"6125:30:5"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":483,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:5","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":482,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:5","memberName":"max","nodeType":"MemberAccess","src":"6186:15:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":481,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"6174:11:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"EmitStatement","src":"6169:33:5"}]}}]},"documentation":{"id":457,"nodeType":"StructuredDocumentation","src":"5459:475:5","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":492,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:5","nodeType":"FunctionDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[],"src":"5968:2:5"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"5988:0:5"},"scope":511,"src":"5939:280:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":500,"nodeType":"Block","src":"6393:36:5","statements":[{"expression":{"id":498,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"6410:12:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":497,"id":499,"nodeType":"Return","src":"6403:19:5"}]},"documentation":{"id":493,"nodeType":"StructuredDocumentation","src":"6225:99:5","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":501,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:5","nodeType":"FunctionDefinition","parameters":{"id":494,"nodeType":"ParameterList","parameters":[],"src":"6360:2:5"},"returnParameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"6386:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":495,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:5"},"scope":511,"src":"6329:100:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":509,"nodeType":"Block","src":"6601:37:5","statements":[{"expression":{"id":507,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6618:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":506,"id":508,"nodeType":"Return","src":"6611:20:5"}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"6435:105:5","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":510,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:5","nodeType":"FunctionDefinition","parameters":{"id":503,"nodeType":"ParameterList","parameters":[],"src":"6569:2:5"},"returnParameters":{"id":506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":510,"src":"6595:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":504,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:5"},"scope":511,"src":"6545:93:5","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":512,"src":"2394:4246:5","usedErrors":[],"usedEvents":[357]}],"src":"113:6528:5"}},"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol":{"id":6,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1020],"Initializable":[511],"PausableUpgradeable":[639]},"id":640,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":513,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":514,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":640,"sourceUnit":1021,"src":"130:41:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":516,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":640,"sourceUnit":512,"src":"172:63:6","symbolAliases":[{"foreign":{"id":515,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"180:13:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":518,"name":"Initializable","nameLocations":["718:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":511,"src":"718:13:6"},"id":519,"nodeType":"InheritanceSpecifier","src":"718:13:6"},{"baseName":{"id":520,"name":"ContextUpgradeable","nameLocations":["733:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":1020,"src":"733:18:6"},"id":521,"nodeType":"InheritanceSpecifier","src":"733:18:6"}],"canonicalName":"PausableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":517,"nodeType":"StructuredDocumentation","src":"237:439:6","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"id":639,"linearizedBaseContracts":[639,1020,511],"name":"PausableUpgradeable","nameLocation":"695:19:6","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":522,"nodeType":"StructuredDocumentation","src":"758:73:6","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":526,"name":"Paused","nameLocation":"842:6:6","nodeType":"EventDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":524,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"857:7:6","nodeType":"VariableDeclaration","scope":526,"src":"849:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"848:17:6"},"src":"836:30:6"},{"anonymous":false,"documentation":{"id":527,"nodeType":"StructuredDocumentation","src":"872:70:6","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":531,"name":"Unpaused","nameLocation":"953:8:6","nodeType":"EventDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":529,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"970:7:6","nodeType":"VariableDeclaration","scope":531,"src":"962:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":528,"name":"address","nodeType":"ElementaryTypeName","src":"962:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"961:17:6"},"src":"947:32:6"},{"constant":false,"id":533,"mutability":"mutable","name":"_paused","nameLocation":"998:7:6","nodeType":"VariableDeclaration","scope":639,"src":"985:20:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":532,"name":"bool","nodeType":"ElementaryTypeName","src":"985:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":542,"nodeType":"Block","src":"1137:44:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":539,"name":"__Pausable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1147:25:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1147:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":541,"nodeType":"ExpressionStatement","src":"1147:27:6"}]},"documentation":{"id":534,"nodeType":"StructuredDocumentation","src":"1012:67:6","text":" @dev Initializes the contract in unpaused state."},"id":543,"implemented":true,"kind":"function","modifiers":[{"id":537,"kind":"modifierInvocation","modifierName":{"id":536,"name":"onlyInitializing","nameLocations":["1120:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1120:16:6"},"nodeType":"ModifierInvocation","src":"1120:16:6"}],"name":"__Pausable_init","nameLocation":"1093:15:6","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"1108:2:6"},"returnParameters":{"id":538,"nodeType":"ParameterList","parameters":[],"src":"1137:0:6"},"scope":639,"src":"1084:97:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":552,"nodeType":"Block","src":"1250:32:6","statements":[{"expression":{"id":550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":548,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"1260:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1270:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1260:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":551,"nodeType":"ExpressionStatement","src":"1260:15:6"}]},"id":553,"implemented":true,"kind":"function","modifiers":[{"id":546,"kind":"modifierInvocation","modifierName":{"id":545,"name":"onlyInitializing","nameLocations":["1233:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1233:16:6"},"nodeType":"ModifierInvocation","src":"1233:16:6"}],"name":"__Pausable_init_unchained","nameLocation":"1196:25:6","nodeType":"FunctionDefinition","parameters":{"id":544,"nodeType":"ParameterList","parameters":[],"src":"1221:2:6"},"returnParameters":{"id":547,"nodeType":"ParameterList","parameters":[],"src":"1250:0:6"},"scope":639,"src":"1187:95:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":560,"nodeType":"Block","src":"1493:47:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":556,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"1503:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"ExpressionStatement","src":"1503:19:6"},{"id":559,"nodeType":"PlaceholderStatement","src":"1532:1:6"}]},"documentation":{"id":554,"nodeType":"StructuredDocumentation","src":"1288:175:6","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":561,"name":"whenNotPaused","nameLocation":"1477:13:6","nodeType":"ModifierDefinition","parameters":{"id":555,"nodeType":"ParameterList","parameters":[],"src":"1490:2:6"},"src":"1468:72:6","virtual":false,"visibility":"internal"},{"body":{"id":568,"nodeType":"Block","src":"1740:44:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":564,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"1750:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"1750:16:6"},{"id":567,"nodeType":"PlaceholderStatement","src":"1776:1:6"}]},"documentation":{"id":562,"nodeType":"StructuredDocumentation","src":"1546:167:6","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":569,"name":"whenPaused","nameLocation":"1727:10:6","nodeType":"ModifierDefinition","parameters":{"id":563,"nodeType":"ParameterList","parameters":[],"src":"1737:2:6"},"src":"1718:66:6","virtual":false,"visibility":"internal"},{"body":{"id":577,"nodeType":"Block","src":"1932:31:6","statements":[{"expression":{"id":575,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"1949:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":574,"id":576,"nodeType":"Return","src":"1942:14:6"}]},"documentation":{"id":570,"nodeType":"StructuredDocumentation","src":"1790:84:6","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":578,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"1888:6:6","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[],"src":"1894:2:6"},"returnParameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":578,"src":"1926:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":572,"name":"bool","nodeType":"ElementaryTypeName","src":"1926:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1925:6:6"},"scope":639,"src":"1879:84:6","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":589,"nodeType":"Block","src":"2082:55:6","statements":[{"expression":{"arguments":[{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2100:9:6","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":583,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2101:6:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2101:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5061757361626c653a20706175736564","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2111:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a","typeString":"literal_string \"Pausable: paused\""},"value":"Pausable: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a","typeString":"literal_string \"Pausable: paused\""}],"id":582,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2092:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":588,"nodeType":"ExpressionStatement","src":"2092:38:6"}]},"documentation":{"id":579,"nodeType":"StructuredDocumentation","src":"1969:57:6","text":" @dev Throws if the contract is paused."},"id":590,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"2040:17:6","nodeType":"FunctionDefinition","parameters":{"id":580,"nodeType":"ParameterList","parameters":[],"src":"2057:2:6"},"returnParameters":{"id":581,"nodeType":"ParameterList","parameters":[],"src":"2082:0:6"},"scope":639,"src":"2031:106:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":600,"nodeType":"Block","src":"2257:58:6","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":595,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2275:6:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2275:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5061757361626c653a206e6f7420706175736564","id":597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2285:22:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a","typeString":"literal_string \"Pausable: not paused\""},"value":"Pausable: not paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a","typeString":"literal_string \"Pausable: not paused\""}],"id":594,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2267:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2267:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":599,"nodeType":"ExpressionStatement","src":"2267:41:6"}]},"documentation":{"id":591,"nodeType":"StructuredDocumentation","src":"2143:61:6","text":" @dev Throws if the contract is not paused."},"id":601,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2218:14:6","nodeType":"FunctionDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[],"src":"2232:2:6"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"2257:0:6"},"scope":639,"src":"2209:106:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":616,"nodeType":"Block","src":"2499:66:6","statements":[{"expression":{"id":609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":607,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"2509:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2519:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2509:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":610,"nodeType":"ExpressionStatement","src":"2509:14:6"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":612,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"2545:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2545:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":611,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2538:6:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2538:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":615,"nodeType":"EmitStatement","src":"2533:25:6"}]},"documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"2321:124:6","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":617,"implemented":true,"kind":"function","modifiers":[{"id":605,"kind":"modifierInvocation","modifierName":{"id":604,"name":"whenNotPaused","nameLocations":["2485:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":561,"src":"2485:13:6"},"nodeType":"ModifierInvocation","src":"2485:13:6"}],"name":"_pause","nameLocation":"2459:6:6","nodeType":"FunctionDefinition","parameters":{"id":603,"nodeType":"ParameterList","parameters":[],"src":"2465:2:6"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"2499:0:6"},"scope":639,"src":"2450:115:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":632,"nodeType":"Block","src":"2745:69:6","statements":[{"expression":{"id":625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":623,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"2755:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2765:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2755:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":626,"nodeType":"ExpressionStatement","src":"2755:15:6"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":628,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"2794:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2794:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":627,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"2785:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2785:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":631,"nodeType":"EmitStatement","src":"2780:27:6"}]},"documentation":{"id":618,"nodeType":"StructuredDocumentation","src":"2571:121:6","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":633,"implemented":true,"kind":"function","modifiers":[{"id":621,"kind":"modifierInvocation","modifierName":{"id":620,"name":"whenPaused","nameLocations":["2734:10:6"],"nodeType":"IdentifierPath","referencedDeclaration":569,"src":"2734:10:6"},"nodeType":"ModifierInvocation","src":"2734:10:6"}],"name":"_unpause","nameLocation":"2706:8:6","nodeType":"FunctionDefinition","parameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"2714:2:6"},"returnParameters":{"id":622,"nodeType":"ParameterList","parameters":[],"src":"2745:0:6"},"scope":639,"src":"2697:117:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":634,"nodeType":"StructuredDocumentation","src":"2820:254:6","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":638,"mutability":"mutable","name":"__gap","nameLocation":"3099:5:6","nodeType":"VariableDeclaration","scope":639,"src":"3079:25:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3079:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":637,"length":{"hexValue":"3439","id":636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3087:2:6","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3079:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":640,"src":"677:2430:6","usedErrors":[],"usedEvents":[357,526,531]}],"src":"105:3003:6"}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"id":7,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[969]},"id":970,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":641,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":642,"nodeType":"StructuredDocumentation","src":"126:67:7","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":969,"linearizedBaseContracts":[969],"name":"AddressUpgradeable","nameLocation":"202:18:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":656,"nodeType":"Block","src":"1489:254:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":650,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"1713:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:7","memberName":"code","nodeType":"MemberAccess","src":"1713:12:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:7","memberName":"length","nodeType":"MemberAccess","src":"1713:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":649,"id":655,"nodeType":"Return","src":"1706:30:7"}]},"documentation":{"id":643,"nodeType":"StructuredDocumentation","src":"227:1191:7","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":657,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:7","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"mutability":"mutable","name":"account","nameLocation":"1451:7:7","nodeType":"VariableDeclaration","scope":657,"src":"1443:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":644,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:7"},"returnParameters":{"id":649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":657,"src":"1483:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":647,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:7"},"scope":969,"src":"1423:320:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":690,"nodeType":"Block","src":"2729:241:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":668,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$969","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$969","typeString":"library AddressUpgradeable"}],"id":667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":666,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:7","typeDescriptions":{}}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:7","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":671,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"2772:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"ExpressionStatement","src":"2739:73:7"},{"assignments":[677,null],"declarations":[{"constant":false,"id":677,"mutability":"mutable","name":"success","nameLocation":"2829:7:7","nodeType":"VariableDeclaration","scope":690,"src":"2824:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":676,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":684,"initialValue":{"arguments":[{"hexValue":"","id":682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:7","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":678,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"2842:9:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:7","memberName":"call","nodeType":"MemberAccess","src":"2842:14:7","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":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":680,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"2864:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:7","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":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:7"},{"expression":{"arguments":[{"id":686,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"2893:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":689,"nodeType":"ExpressionStatement","src":"2885:78:7"}]},"documentation":{"id":658,"nodeType":"StructuredDocumentation","src":"1749:904:7","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.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":691,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:7","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:7","nodeType":"VariableDeclaration","scope":691,"src":"2677:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:7","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":662,"mutability":"mutable","name":"amount","nameLocation":"2712:6:7","nodeType":"VariableDeclaration","scope":691,"src":"2704:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:7"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[],"src":"2729:0:7"},"scope":969,"src":"2658:312:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":708,"nodeType":"Block","src":"3801:96:7","statements":[{"expression":{"arguments":[{"id":702,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"3840:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":703,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"3848:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"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"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":701,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[749,793],"referencedDeclaration":793,"src":"3818:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":700,"id":707,"nodeType":"Return","src":"3811:79:7"}]},"documentation":{"id":692,"nodeType":"StructuredDocumentation","src":"2976:731:7","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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"},"id":709,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:7","nodeType":"FunctionDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"target","nameLocation":"3742:6:7","nodeType":"VariableDeclaration","scope":709,"src":"3734:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":693,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"data","nameLocation":"3763:4:7","nodeType":"VariableDeclaration","scope":709,"src":"3750:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":695,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:7"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":709,"src":"3787:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":698,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:7"},"scope":969,"src":"3712:185:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":728,"nodeType":"Block","src":"4266:76:7","statements":[{"expression":{"arguments":[{"id":722,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"4305:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":723,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"4313:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":725,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"4322:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":721,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[749,793],"referencedDeclaration":793,"src":"4283:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":720,"id":727,"nodeType":"Return","src":"4276:59:7"}]},"documentation":{"id":710,"nodeType":"StructuredDocumentation","src":"3903:211:7","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":729,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:7","nodeType":"FunctionDefinition","parameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":712,"mutability":"mutable","name":"target","nameLocation":"4158:6:7","nodeType":"VariableDeclaration","scope":729,"src":"4150:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":711,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":714,"mutability":"mutable","name":"data","nameLocation":"4187:4:7","nodeType":"VariableDeclaration","scope":729,"src":"4174:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:7","nodeType":"VariableDeclaration","scope":729,"src":"4201:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":715,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:7"},"returnParameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":729,"src":"4252:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":718,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:7"},"scope":969,"src":"4119:223:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":748,"nodeType":"Block","src":"4817:111:7","statements":[{"expression":{"arguments":[{"id":742,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"4856:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":743,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"4864:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":736,"src":"4870:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":741,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[749,793],"referencedDeclaration":793,"src":"4834:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":740,"id":747,"nodeType":"Return","src":"4827:94:7"}]},"documentation":{"id":730,"nodeType":"StructuredDocumentation","src":"4348:351:7","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`.\n _Available since v3.1._"},"id":749,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:7","nodeType":"FunctionDefinition","parameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"mutability":"mutable","name":"target","nameLocation":"4743:6:7","nodeType":"VariableDeclaration","scope":749,"src":"4735:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":734,"mutability":"mutable","name":"data","nameLocation":"4764:4:7","nodeType":"VariableDeclaration","scope":749,"src":"4751:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":733,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":736,"mutability":"mutable","name":"value","nameLocation":"4778:5:7","nodeType":"VariableDeclaration","scope":749,"src":"4770:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":735,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:7"},"returnParameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":749,"src":"4803:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":738,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:7"},"scope":969,"src":"4704:224:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":792,"nodeType":"Block","src":"5355:267:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":766,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$969","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$969","typeString":"library AddressUpgradeable"}],"id":765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":764,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:7","typeDescriptions":{}}},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:7","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"5398:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":773,"nodeType":"ExpressionStatement","src":"5365:81:7"},{"assignments":[775,777],"declarations":[{"constant":false,"id":775,"mutability":"mutable","name":"success","nameLocation":"5462:7:7","nodeType":"VariableDeclaration","scope":792,"src":"5457:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":774,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":777,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:7","nodeType":"VariableDeclaration","scope":792,"src":"5471:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":776,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":784,"initialValue":{"arguments":[{"id":782,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"5524:4:7","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":778,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"5498:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:7","memberName":"call","nodeType":"MemberAccess","src":"5498:11:7","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":781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":780,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"5517:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:7","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":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:7"},{"expression":{"arguments":[{"id":786,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"5573:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":787,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"5581:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":788,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":777,"src":"5590:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":789,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"5602:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":785,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"5546:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":762,"id":791,"nodeType":"Return","src":"5539:76:7"}]},"documentation":{"id":750,"nodeType":"StructuredDocumentation","src":"4934:237:7","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":793,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:7","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"target","nameLocation":"5224:6:7","nodeType":"VariableDeclaration","scope":793,"src":"5216:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"data","nameLocation":"5253:4:7","nodeType":"VariableDeclaration","scope":793,"src":"5240:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":753,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":756,"mutability":"mutable","name":"value","nameLocation":"5275:5:7","nodeType":"VariableDeclaration","scope":793,"src":"5267:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":758,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:7","nodeType":"VariableDeclaration","scope":793,"src":"5290:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":757,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:7"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":793,"src":"5341:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":760,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:7"},"scope":969,"src":"5176:446:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":809,"nodeType":"Block","src":"5899:97:7","statements":[{"expression":{"arguments":[{"id":804,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"5935:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":805,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"5943:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":803,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[810,839],"referencedDeclaration":839,"src":"5916:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":802,"id":808,"nodeType":"Return","src":"5909:80:7"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"5628:166:7","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":810,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:7","nodeType":"FunctionDefinition","parameters":{"id":799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"target","nameLocation":"5835:6:7","nodeType":"VariableDeclaration","scope":810,"src":"5827:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":798,"mutability":"mutable","name":"data","nameLocation":"5856:4:7","nodeType":"VariableDeclaration","scope":810,"src":"5843:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":797,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:7"},"returnParameters":{"id":802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":810,"src":"5885:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":800,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:7"},"scope":969,"src":"5799:197:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":838,"nodeType":"Block","src":"6338:168:7","statements":[{"assignments":[823,825],"declarations":[{"constant":false,"id":823,"mutability":"mutable","name":"success","nameLocation":"6354:7:7","nodeType":"VariableDeclaration","scope":838,"src":"6349:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":822,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":825,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:7","nodeType":"VariableDeclaration","scope":838,"src":"6363:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":824,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":830,"initialValue":{"arguments":[{"id":828,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"6408:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":826,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"6390:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:7","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:7","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":829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:7"},{"expression":{"arguments":[{"id":832,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"6457:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":833,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":823,"src":"6465:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":834,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"6474:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":835,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"6486:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":831,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"6430:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":821,"id":837,"nodeType":"Return","src":"6423:76:7"}]},"documentation":{"id":811,"nodeType":"StructuredDocumentation","src":"6002:173:7","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":839,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:7","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"target","nameLocation":"6225:6:7","nodeType":"VariableDeclaration","scope":839,"src":"6217:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":815,"mutability":"mutable","name":"data","nameLocation":"6254:4:7","nodeType":"VariableDeclaration","scope":839,"src":"6241:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":814,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":817,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:7","nodeType":"VariableDeclaration","scope":839,"src":"6268:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":816,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:7"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":839,"src":"6324:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":819,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:7"},"scope":969,"src":"6180:326:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":855,"nodeType":"Block","src":"6782:101:7","statements":[{"expression":{"arguments":[{"id":850,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"6820:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":851,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"6828:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":849,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[856,885],"referencedDeclaration":885,"src":"6799:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":848,"id":854,"nodeType":"Return","src":"6792:84:7"}]},"documentation":{"id":840,"nodeType":"StructuredDocumentation","src":"6512:168:7","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":856,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:7","nodeType":"FunctionDefinition","parameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"target","nameLocation":"6723:6:7","nodeType":"VariableDeclaration","scope":856,"src":"6715:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":841,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":844,"mutability":"mutable","name":"data","nameLocation":"6744:4:7","nodeType":"VariableDeclaration","scope":856,"src":"6731:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":843,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:7"},"returnParameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":856,"src":"6768:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:7"},"scope":969,"src":"6685:198:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":884,"nodeType":"Block","src":"7224:170:7","statements":[{"assignments":[869,871],"declarations":[{"constant":false,"id":869,"mutability":"mutable","name":"success","nameLocation":"7240:7:7","nodeType":"VariableDeclaration","scope":884,"src":"7235:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":868,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:7","nodeType":"VariableDeclaration","scope":884,"src":"7249:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":870,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":876,"initialValue":{"arguments":[{"id":874,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"7296:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":872,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"7276:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:7","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:7","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":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:7"},{"expression":{"arguments":[{"id":878,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"7345:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":879,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"7353:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":880,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"7362:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":881,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"7374:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":877,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"7318:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":867,"id":883,"nodeType":"Return","src":"7311:76:7"}]},"documentation":{"id":857,"nodeType":"StructuredDocumentation","src":"6889:175:7","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":885,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:7","nodeType":"FunctionDefinition","parameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"target","nameLocation":"7116:6:7","nodeType":"VariableDeclaration","scope":885,"src":"7108:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":858,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":861,"mutability":"mutable","name":"data","nameLocation":"7145:4:7","nodeType":"VariableDeclaration","scope":885,"src":"7132:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":860,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":863,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:7","nodeType":"VariableDeclaration","scope":885,"src":"7159:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":862,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:7"},"returnParameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":885,"src":"7210:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":865,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:7"},"scope":969,"src":"7069:325:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":923,"nodeType":"Block","src":"7876:434:7","statements":[{"condition":{"id":899,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"7890:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":921,"nodeType":"Block","src":"8246:58:7","statements":[{"expression":{"arguments":[{"id":917,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"8268:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":918,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"8280:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":916,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"8260:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":920,"nodeType":"ExpressionStatement","src":"8260:33:7"}]},"id":922,"nodeType":"IfStatement","src":"7886:418:7","trueBody":{"id":915,"nodeType":"Block","src":"7899:341:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":900,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"7917:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:7","memberName":"length","nodeType":"MemberAccess","src":"7917:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":912,"nodeType":"IfStatement","src":"7913:286:7","trueBody":{"id":911,"nodeType":"Block","src":"7941:258:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":906,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"8143:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":905,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"8132:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":904,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":910,"nodeType":"ExpressionStatement","src":"8124:60:7"}]}},{"expression":{"id":913,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"8219:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":898,"id":914,"nodeType":"Return","src":"8212:17:7"}]}}]},"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"7400:277:7","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":924,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:7","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"target","nameLocation":"7735:6:7","nodeType":"VariableDeclaration","scope":924,"src":"7727:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":890,"mutability":"mutable","name":"success","nameLocation":"7756:7:7","nodeType":"VariableDeclaration","scope":924,"src":"7751:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":889,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:7","nodeType":"VariableDeclaration","scope":924,"src":"7773:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":891,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":894,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:7","nodeType":"VariableDeclaration","scope":924,"src":"7806:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":893,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:7"},"returnParameters":{"id":898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":924,"src":"7862:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":896,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:7"},"scope":969,"src":"7682:628:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":947,"nodeType":"Block","src":"8691:135:7","statements":[{"condition":{"id":936,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"8705:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":945,"nodeType":"Block","src":"8762:58:7","statements":[{"expression":{"arguments":[{"id":941,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"8784:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":942,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"8796:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":940,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"8776:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":944,"nodeType":"ExpressionStatement","src":"8776:33:7"}]},"id":946,"nodeType":"IfStatement","src":"8701:119:7","trueBody":{"id":939,"nodeType":"Block","src":"8714:42:7","statements":[{"expression":{"id":937,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"8735:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":935,"id":938,"nodeType":"Return","src":"8728:17:7"}]}}]},"documentation":{"id":925,"nodeType":"StructuredDocumentation","src":"8316:210:7","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":948,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:7","nodeType":"FunctionDefinition","parameters":{"id":932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":927,"mutability":"mutable","name":"success","nameLocation":"8571:7:7","nodeType":"VariableDeclaration","scope":948,"src":"8566:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":926,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":929,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:7","nodeType":"VariableDeclaration","scope":948,"src":"8588:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":928,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":931,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:7","nodeType":"VariableDeclaration","scope":948,"src":"8621:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":930,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:7"},"returnParameters":{"id":935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":948,"src":"8677:12:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":933,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:7"},"scope":969,"src":"8531:295:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":967,"nodeType":"Block","src":"8915:457:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":955,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"8991:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:7","memberName":"length","nodeType":"MemberAccess","src":"8991:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":965,"nodeType":"Block","src":"9321:45:7","statements":[{"expression":{"arguments":[{"id":962,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"9342:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":961,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:7","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":964,"nodeType":"ExpressionStatement","src":"9335:20:7"}]},"id":966,"nodeType":"IfStatement","src":"8987:379:7","trueBody":{"id":960,"nodeType":"Block","src":"9014:301:7","statements":[{"AST":{"nativeSrc":"9172:133:7","nodeType":"YulBlock","src":"9172:133:7","statements":[{"nativeSrc":"9190:40:7","nodeType":"YulVariableDeclaration","src":"9190:40:7","value":{"arguments":[{"name":"returndata","nativeSrc":"9219:10:7","nodeType":"YulIdentifier","src":"9219:10:7"}],"functionName":{"name":"mload","nativeSrc":"9213:5:7","nodeType":"YulIdentifier","src":"9213:5:7"},"nativeSrc":"9213:17:7","nodeType":"YulFunctionCall","src":"9213:17:7"},"variables":[{"name":"returndata_size","nativeSrc":"9194:15:7","nodeType":"YulTypedName","src":"9194:15:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9258:2:7","nodeType":"YulLiteral","src":"9258:2:7","type":"","value":"32"},{"name":"returndata","nativeSrc":"9262:10:7","nodeType":"YulIdentifier","src":"9262:10:7"}],"functionName":{"name":"add","nativeSrc":"9254:3:7","nodeType":"YulIdentifier","src":"9254:3:7"},"nativeSrc":"9254:19:7","nodeType":"YulFunctionCall","src":"9254:19:7"},{"name":"returndata_size","nativeSrc":"9275:15:7","nodeType":"YulIdentifier","src":"9275:15:7"}],"functionName":{"name":"revert","nativeSrc":"9247:6:7","nodeType":"YulIdentifier","src":"9247:6:7"},"nativeSrc":"9247:44:7","nodeType":"YulFunctionCall","src":"9247:44:7"},"nativeSrc":"9247:44:7","nodeType":"YulExpressionStatement","src":"9247:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":950,"isOffset":false,"isSlot":false,"src":"9219:10:7","valueSize":1},{"declaration":950,"isOffset":false,"isSlot":false,"src":"9262:10:7","valueSize":1}],"id":959,"nodeType":"InlineAssembly","src":"9163:142:7"}]}}]},"id":968,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:7","nodeType":"FunctionDefinition","parameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":950,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:7","nodeType":"VariableDeclaration","scope":968,"src":"8849:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":949,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":952,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:7","nodeType":"VariableDeclaration","scope":968,"src":"8874:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":951,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:7"},"returnParameters":{"id":954,"nodeType":"ParameterList","parameters":[],"src":"8915:0:7"},"scope":969,"src":"8832:540:7","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":970,"src":"194:9180:7","usedErrors":[],"usedEvents":[]}],"src":"101:9274:7"}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"id":8,"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1020],"Initializable":[511]},"id":1021,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":971,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":973,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1021,"sourceUnit":512,"src":"125:63:8","symbolAliases":[{"foreign":{"id":972,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"133:13:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":975,"name":"Initializable","nameLocations":["727:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":511,"src":"727:13:8"},"id":976,"nodeType":"InheritanceSpecifier","src":"727:13:8"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":974,"nodeType":"StructuredDocumentation","src":"190:496:8","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1020,"linearizedBaseContracts":[1020,511],"name":"ContextUpgradeable","nameLocation":"705:18:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":981,"nodeType":"Block","src":"799:7:8","statements":[]},"id":982,"implemented":true,"kind":"function","modifiers":[{"id":979,"kind":"modifierInvocation","modifierName":{"id":978,"name":"onlyInitializing","nameLocations":["782:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"782:16:8"},"nodeType":"ModifierInvocation","src":"782:16:8"}],"name":"__Context_init","nameLocation":"756:14:8","nodeType":"FunctionDefinition","parameters":{"id":977,"nodeType":"ParameterList","parameters":[],"src":"770:2:8"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"799:0:8"},"scope":1020,"src":"747:59:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":987,"nodeType":"Block","src":"874:7:8","statements":[]},"id":988,"implemented":true,"kind":"function","modifiers":[{"id":985,"kind":"modifierInvocation","modifierName":{"id":984,"name":"onlyInitializing","nameLocations":["857:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"857:16:8"},"nodeType":"ModifierInvocation","src":"857:16:8"}],"name":"__Context_init_unchained","nameLocation":"821:24:8","nodeType":"FunctionDefinition","parameters":{"id":983,"nodeType":"ParameterList","parameters":[],"src":"845:2:8"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[],"src":"874:0:8"},"scope":1020,"src":"812:69:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":996,"nodeType":"Block","src":"948:34:8","statements":[{"expression":{"expression":{"id":993,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:8","memberName":"sender","nodeType":"MemberAccess","src":"965:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":992,"id":995,"nodeType":"Return","src":"958:17:8"}]},"id":997,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:8","nodeType":"FunctionDefinition","parameters":{"id":989,"nodeType":"ParameterList","parameters":[],"src":"905:2:8"},"returnParameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":997,"src":"939:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:8"},"scope":1020,"src":"886:96:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1005,"nodeType":"Block","src":"1055:32:8","statements":[{"expression":{"expression":{"id":1002,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1072:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:8","memberName":"data","nodeType":"MemberAccess","src":"1072:8:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1001,"id":1004,"nodeType":"Return","src":"1065:15:8"}]},"id":1006,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:8","nodeType":"FunctionDefinition","parameters":{"id":998,"nodeType":"ParameterList","parameters":[],"src":"1005:2:8"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1006,"src":"1039:14:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":999,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:8"},"scope":1020,"src":"988:99:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1013,"nodeType":"Block","src":"1165:25:8","statements":[{"expression":{"hexValue":"30","id":1011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1010,"id":1012,"nodeType":"Return","src":"1175:8:8"}]},"id":1014,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:8","nodeType":"FunctionDefinition","parameters":{"id":1007,"nodeType":"ParameterList","parameters":[],"src":"1122:2:8"},"returnParameters":{"id":1010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1014,"src":"1156:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1008,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:8"},"scope":1020,"src":"1093:97:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"1196:254:8","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1019,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:8","nodeType":"VariableDeclaration","scope":1020,"src":"1455:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1018,"length":{"hexValue":"3530","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:8","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1021,"src":"687:796:8","usedErrors":[],"usedEvents":[357]}],"src":"101:1383:8"}},"@openzeppelin/contracts/access/IAccessControl.sol":{"id":9,"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1093]},"id":1094,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1022,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"94:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1023,"nodeType":"StructuredDocumentation","src":"119:89:9","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1093,"linearizedBaseContracts":[1093],"name":"IAccessControl","nameLocation":"219:14:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1024,"nodeType":"StructuredDocumentation","src":"240:292:9","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1032,"name":"RoleAdminChanged","nameLocation":"543:16:9","nodeType":"EventDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1026,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"576:4:9","nodeType":"VariableDeclaration","scope":1032,"src":"560:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1025,"name":"bytes32","nodeType":"ElementaryTypeName","src":"560:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1028,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"598:17:9","nodeType":"VariableDeclaration","scope":1032,"src":"582:33:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1027,"name":"bytes32","nodeType":"ElementaryTypeName","src":"582:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1030,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"633:12:9","nodeType":"VariableDeclaration","scope":1032,"src":"617:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1029,"name":"bytes32","nodeType":"ElementaryTypeName","src":"617:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"559:87:9"},"src":"537:110:9"},{"anonymous":false,"documentation":{"id":1033,"nodeType":"StructuredDocumentation","src":"653:212:9","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1041,"name":"RoleGranted","nameLocation":"876:11:9","nodeType":"EventDefinition","parameters":{"id":1040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"904:4:9","nodeType":"VariableDeclaration","scope":1041,"src":"888:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"888:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1037,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"926:7:9","nodeType":"VariableDeclaration","scope":1041,"src":"910:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1036,"name":"address","nodeType":"ElementaryTypeName","src":"910:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1039,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"951:6:9","nodeType":"VariableDeclaration","scope":1041,"src":"935:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"887:71:9"},"src":"870:89:9"},{"anonymous":false,"documentation":{"id":1042,"nodeType":"StructuredDocumentation","src":"965:275:9","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1050,"name":"RoleRevoked","nameLocation":"1251:11:9","nodeType":"EventDefinition","parameters":{"id":1049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1044,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1279:4:9","nodeType":"VariableDeclaration","scope":1050,"src":"1263:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1043,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1263:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1046,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1301:7:9","nodeType":"VariableDeclaration","scope":1050,"src":"1285:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1045,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1048,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1326:6:9","nodeType":"VariableDeclaration","scope":1050,"src":"1310:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1047,"name":"address","nodeType":"ElementaryTypeName","src":"1310:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1262:71:9"},"src":"1245:89:9"},{"documentation":{"id":1051,"nodeType":"StructuredDocumentation","src":"1340:76:9","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1060,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1430:7:9","nodeType":"FunctionDefinition","parameters":{"id":1056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1053,"mutability":"mutable","name":"role","nameLocation":"1446:4:9","nodeType":"VariableDeclaration","scope":1060,"src":"1438:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1052,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1438:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1055,"mutability":"mutable","name":"account","nameLocation":"1460:7:9","nodeType":"VariableDeclaration","scope":1060,"src":"1452:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1054,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1437:31:9"},"returnParameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1058,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1060,"src":"1492:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1057,"name":"bool","nodeType":"ElementaryTypeName","src":"1492:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1491:6:9"},"scope":1093,"src":"1421:77:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1061,"nodeType":"StructuredDocumentation","src":"1504:184:9","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1068,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"1702:12:9","nodeType":"FunctionDefinition","parameters":{"id":1064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1063,"mutability":"mutable","name":"role","nameLocation":"1723:4:9","nodeType":"VariableDeclaration","scope":1068,"src":"1715:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1715:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1714:14:9"},"returnParameters":{"id":1067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1068,"src":"1752:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1752:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1751:9:9"},"scope":1093,"src":"1693:68:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1069,"nodeType":"StructuredDocumentation","src":"1767:239:9","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1076,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2020:9:9","nodeType":"FunctionDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1071,"mutability":"mutable","name":"role","nameLocation":"2038:4:9","nodeType":"VariableDeclaration","scope":1076,"src":"2030:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2030:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1073,"mutability":"mutable","name":"account","nameLocation":"2052:7:9","nodeType":"VariableDeclaration","scope":1076,"src":"2044:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1072,"name":"address","nodeType":"ElementaryTypeName","src":"2044:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2029:31:9"},"returnParameters":{"id":1075,"nodeType":"ParameterList","parameters":[],"src":"2069:0:9"},"scope":1093,"src":"2011:59:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1077,"nodeType":"StructuredDocumentation","src":"2076:223:9","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1084,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2313:10:9","nodeType":"FunctionDefinition","parameters":{"id":1082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"role","nameLocation":"2332:4:9","nodeType":"VariableDeclaration","scope":1084,"src":"2324:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1081,"mutability":"mutable","name":"account","nameLocation":"2346:7:9","nodeType":"VariableDeclaration","scope":1084,"src":"2338:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1080,"name":"address","nodeType":"ElementaryTypeName","src":"2338:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2323:31:9"},"returnParameters":{"id":1083,"nodeType":"ParameterList","parameters":[],"src":"2363:0:9"},"scope":1093,"src":"2304:60:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1085,"nodeType":"StructuredDocumentation","src":"2370:480:9","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."},"functionSelector":"36568abe","id":1092,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"2864:12:9","nodeType":"FunctionDefinition","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"role","nameLocation":"2885:4:9","nodeType":"VariableDeclaration","scope":1092,"src":"2877:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2877:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"account","nameLocation":"2899:7:9","nodeType":"VariableDeclaration","scope":1092,"src":"2891:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"2891:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2876:31:9"},"returnParameters":{"id":1091,"nodeType":"ParameterList","parameters":[],"src":"2916:0:9"},"scope":1093,"src":"2855:62:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1094,"src":"209:2710:9","usedErrors":[],"usedEvents":[1032,1041,1050]}],"src":"94:2826:9"}},"@openzeppelin/contracts/access/Ownable.sol":{"id":10,"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[3290],"Ownable":[1206]},"id":1207,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1095,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:10"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":1096,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1207,"sourceUnit":3291,"src":"127:30:10","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1098,"name":"Context","nameLocations":["683:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":3290,"src":"683:7:10"},"id":1099,"nodeType":"InheritanceSpecifier","src":"683:7:10"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1097,"nodeType":"StructuredDocumentation","src":"159:494:10","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":1206,"linearizedBaseContracts":[1206,3290],"name":"Ownable","nameLocation":"672:7:10","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1101,"mutability":"mutable","name":"_owner","nameLocation":"713:6:10","nodeType":"VariableDeclaration","scope":1206,"src":"697:22:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1100,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":1107,"name":"OwnershipTransferred","nameLocation":"732:20:10","nodeType":"EventDefinition","parameters":{"id":1106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1103,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:10","nodeType":"VariableDeclaration","scope":1107,"src":"753:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1102,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1105,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:10","nodeType":"VariableDeclaration","scope":1107,"src":"784:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1104,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:10"},"src":"726:84:10"},{"body":{"id":1116,"nodeType":"Block","src":"926:49:10","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1112,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"955:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"955:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1111,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"936:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"936:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1115,"nodeType":"ExpressionStatement","src":"936:32:10"}]},"documentation":{"id":1108,"nodeType":"StructuredDocumentation","src":"816:91:10","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":1117,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1109,"nodeType":"ParameterList","parameters":[],"src":"923:2:10"},"returnParameters":{"id":1110,"nodeType":"ParameterList","parameters":[],"src":"926:0:10"},"scope":1206,"src":"912:63:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1124,"nodeType":"Block","src":"1084:41:10","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1120,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"1094:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1122,"nodeType":"ExpressionStatement","src":"1094:13:10"},{"id":1123,"nodeType":"PlaceholderStatement","src":"1117:1:10"}]},"documentation":{"id":1118,"nodeType":"StructuredDocumentation","src":"981:77:10","text":" @dev Throws if called by any account other than the owner."},"id":1125,"name":"onlyOwner","nameLocation":"1072:9:10","nodeType":"ModifierDefinition","parameters":{"id":1119,"nodeType":"ParameterList","parameters":[],"src":"1081:2:10"},"src":"1063:62:10","virtual":false,"visibility":"internal"},{"body":{"id":1133,"nodeType":"Block","src":"1256:30:10","statements":[{"expression":{"id":1131,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1273:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1130,"id":1132,"nodeType":"Return","src":"1266:13:10"}]},"documentation":{"id":1126,"nodeType":"StructuredDocumentation","src":"1131:65:10","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":1134,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:10","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"1215:2:10"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1134,"src":"1247:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1128,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:10"},"scope":1206,"src":"1201:85:10","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1147,"nodeType":"Block","src":"1404:85:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1139,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"1422:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1141,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"1433:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1433:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":1138,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1414:68:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1146,"nodeType":"ExpressionStatement","src":"1414:68:10"}]},"documentation":{"id":1135,"nodeType":"StructuredDocumentation","src":"1292:62:10","text":" @dev Throws if the sender is not the owner."},"id":1148,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:10","nodeType":"FunctionDefinition","parameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"1379:2:10"},"returnParameters":{"id":1137,"nodeType":"ParameterList","parameters":[],"src":"1404:0:10"},"scope":1206,"src":"1359:130:10","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1161,"nodeType":"Block","src":"1878:47:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1155,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:10","typeDescriptions":{}}},"id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1154,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"1888:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1888:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1160,"nodeType":"ExpressionStatement","src":"1888:30:10"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"1495:324:10","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":1162,"implemented":true,"kind":"function","modifiers":[{"id":1152,"kind":"modifierInvocation","modifierName":{"id":1151,"name":"onlyOwner","nameLocations":["1868:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"1868:9:10"},"nodeType":"ModifierInvocation","src":"1868:9:10"}],"name":"renounceOwnership","nameLocation":"1833:17:10","nodeType":"FunctionDefinition","parameters":{"id":1150,"nodeType":"ParameterList","parameters":[],"src":"1850:2:10"},"returnParameters":{"id":1153,"nodeType":"ParameterList","parameters":[],"src":"1878:0:10"},"scope":1206,"src":"1824:101:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1184,"nodeType":"Block","src":"2144:128:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1171,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"2162:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:10","typeDescriptions":{}}},"id":1175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":1177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":1170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2154:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:73:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1179,"nodeType":"ExpressionStatement","src":"2154:73:10"},{"expression":{"arguments":[{"id":1181,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"2256:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1180,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"2237:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2237:28:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1183,"nodeType":"ExpressionStatement","src":"2237:28:10"}]},"documentation":{"id":1163,"nodeType":"StructuredDocumentation","src":"1931:138:10","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":1185,"implemented":true,"kind":"function","modifiers":[{"id":1168,"kind":"modifierInvocation","modifierName":{"id":1167,"name":"onlyOwner","nameLocations":["2134:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"2134:9:10"},"nodeType":"ModifierInvocation","src":"2134:9:10"}],"name":"transferOwnership","nameLocation":"2083:17:10","nodeType":"FunctionDefinition","parameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1165,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:10","nodeType":"VariableDeclaration","scope":1185,"src":"2101:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1164,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:10"},"returnParameters":{"id":1169,"nodeType":"ParameterList","parameters":[],"src":"2144:0:10"},"scope":1206,"src":"2074:198:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1204,"nodeType":"Block","src":"2489:124:10","statements":[{"assignments":[1192],"declarations":[{"constant":false,"id":1192,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:10","nodeType":"VariableDeclaration","scope":1204,"src":"2499:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1191,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1194,"initialValue":{"id":1193,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"2518:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:10"},{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"2534:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1196,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"2543:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1198,"nodeType":"ExpressionStatement","src":"2534:17:10"},{"eventCall":{"arguments":[{"id":1200,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"2587:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1201,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"2597:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1199,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"2566:20:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1203,"nodeType":"EmitStatement","src":"2561:45:10"}]},"documentation":{"id":1186,"nodeType":"StructuredDocumentation","src":"2278:143:10","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":1205,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:10","nodeType":"FunctionDefinition","parameters":{"id":1189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1188,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:10","nodeType":"VariableDeclaration","scope":1205,"src":"2454:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1187,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:10"},"returnParameters":{"id":1190,"nodeType":"ParameterList","parameters":[],"src":"2489:0:10"},"scope":1206,"src":"2426:187:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1207,"src":"654:1961:10","usedErrors":[],"usedEvents":[1107]}],"src":"102:2514:10"}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"id":11,"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[1227]},"id":1228,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1208,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":1209,"nodeType":"StructuredDocumentation","src":"132:133:11","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":1227,"linearizedBaseContracts":[1227],"name":"IERC1967","nameLocation":"276:8:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1210,"nodeType":"StructuredDocumentation","src":"291:68:11","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1214,"name":"Upgraded","nameLocation":"370:8:11","nodeType":"EventDefinition","parameters":{"id":1213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1212,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"395:14:11","nodeType":"VariableDeclaration","scope":1214,"src":"379:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1211,"name":"address","nodeType":"ElementaryTypeName","src":"379:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"378:32:11"},"src":"364:47:11"},{"anonymous":false,"documentation":{"id":1215,"nodeType":"StructuredDocumentation","src":"417:67:11","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1221,"name":"AdminChanged","nameLocation":"495:12:11","nodeType":"EventDefinition","parameters":{"id":1220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"516:13:11","nodeType":"VariableDeclaration","scope":1221,"src":"508:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1216,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1219,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"539:8:11","nodeType":"VariableDeclaration","scope":1221,"src":"531:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1218,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"507:41:11"},"src":"489:60:11"},{"anonymous":false,"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"555:59:11","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1226,"name":"BeaconUpgraded","nameLocation":"625:14:11","nodeType":"EventDefinition","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"656:6:11","nodeType":"VariableDeclaration","scope":1226,"src":"640:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1223,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:24:11"},"src":"619:45:11"}],"scope":1228,"src":"266:400:11","usedErrors":[],"usedEvents":[1214,1221,1226]}],"src":"107:560:11"}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"id":12,"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1237]},"id":1238,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1229,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"138:203:12","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1237,"linearizedBaseContracts":[1237],"name":"IERC1822Proxiable","nameLocation":"352:17:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1231,"nodeType":"StructuredDocumentation","src":"376:438:12","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":1236,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"828:13:12","nodeType":"FunctionDefinition","parameters":{"id":1232,"nodeType":"ParameterList","parameters":[],"src":"841:2:12"},"returnParameters":{"id":1235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1236,"src":"867:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1233,"name":"bytes32","nodeType":"ElementaryTypeName","src":"867:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"866:9:12"},"scope":1237,"src":"819:57:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1238,"src":"342:536:12","usedErrors":[],"usedEvents":[]}],"src":"113:766:12"}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"id":13,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[3260],"ERC1967Proxy":[1274],"ERC1967Upgrade":[1578],"IBeacon":[1706],"IERC1822Proxiable":[1237],"IERC1967":[1227],"Proxy":[1630],"StorageSlot":[3400]},"id":1275,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1239,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:13"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":1240,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1275,"sourceUnit":1631,"src":"139:22:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":1241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1275,"sourceUnit":1579,"src":"162:30:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1243,"name":"Proxy","nameLocations":["592:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":1630,"src":"592:5:13"},"id":1244,"nodeType":"InheritanceSpecifier","src":"592:5:13"},{"baseName":{"id":1245,"name":"ERC1967Upgrade","nameLocations":["599:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":1578,"src":"599:14:13"},"id":1246,"nodeType":"InheritanceSpecifier","src":"599:14:13"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"194:372:13","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":1274,"linearizedBaseContracts":[1274,1578,1227,1630],"name":"ERC1967Proxy","nameLocation":"576:12:13","nodeType":"ContractDefinition","nodes":[{"body":{"id":1260,"nodeType":"Block","src":"1014:56:13","statements":[{"expression":{"arguments":[{"id":1255,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"1042:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1256,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"1050:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":1257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1057:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1254,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"1024:17:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1259,"nodeType":"ExpressionStatement","src":"1024:39:13"}]},"documentation":{"id":1247,"nodeType":"StructuredDocumentation","src":"620:333:13","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."},"id":1261,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"_logic","nameLocation":"978:6:13","nodeType":"VariableDeclaration","scope":1261,"src":"970:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1251,"mutability":"mutable","name":"_data","nameLocation":"999:5:13","nodeType":"VariableDeclaration","scope":1261,"src":"986:18:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1250,"name":"bytes","nodeType":"ElementaryTypeName","src":"986:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"969:36:13"},"returnParameters":{"id":1253,"nodeType":"ParameterList","parameters":[],"src":"1014:0:13"},"scope":1274,"src":"958:112:13","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1595],"body":{"id":1272,"nodeType":"Block","src":"1229:59:13","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1268,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"1246:14:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$1578_$","typeString":"type(contract ERC1967Upgrade)"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1261:18:13","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":1304,"src":"1246:33:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1246:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1267,"id":1271,"nodeType":"Return","src":"1239:42:13"}]},"documentation":{"id":1262,"nodeType":"StructuredDocumentation","src":"1076:67:13","text":" @dev Returns the current implementation address."},"id":1273,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1157:15:13","nodeType":"FunctionDefinition","overrides":{"id":1264,"nodeType":"OverrideSpecifier","overrides":[],"src":"1197:8:13"},"parameters":{"id":1263,"nodeType":"ParameterList","parameters":[],"src":"1172:2:13"},"returnParameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1266,"mutability":"mutable","name":"impl","nameLocation":"1223:4:13","nodeType":"VariableDeclaration","scope":1273,"src":"1215:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1265,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:14:13"},"scope":1274,"src":"1148:140:13","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1275,"src":"567:723:13","usedErrors":[],"usedEvents":[1214,1221,1226]}],"src":"114:1177:13"}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"id":14,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[3260],"ERC1967Upgrade":[1578],"IBeacon":[1706],"IERC1822Proxiable":[1237],"IERC1967":[1227],"StorageSlot":[3400]},"id":1579,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1276,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:14"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1579,"sourceUnit":1707,"src":"141:31:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":1278,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1579,"sourceUnit":1228,"src":"173:39:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":1279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1579,"sourceUnit":1238,"src":"213:45:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1579,"sourceUnit":3261,"src":"259:33:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1579,"sourceUnit":3401,"src":"293:37:14","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1283,"name":"IERC1967","nameLocations":["553:8:14"],"nodeType":"IdentifierPath","referencedDeclaration":1227,"src":"553:8:14"},"id":1284,"nodeType":"InheritanceSpecifier","src":"553:8:14"}],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":1282,"nodeType":"StructuredDocumentation","src":"332:184:14","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":1578,"linearizedBaseContracts":[1578,1227],"name":"ERC1967Upgrade","nameLocation":"535:14:14","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1287,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"672:14:14","nodeType":"VariableDeclaration","scope":1578,"src":"647:108:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1285,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"689:66:14","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":1288,"nodeType":"StructuredDocumentation","src":"762:214:14","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, and is\n validated in the constructor."},"id":1291,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1007:20:14","nodeType":"VariableDeclaration","scope":1578,"src":"981:115:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1289,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:66:14","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":1303,"nodeType":"Block","src":"1237:78:14","statements":[{"expression":{"expression":{"arguments":[{"id":1299,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"1281:20:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1297,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"1254:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"1254:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:48:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1303:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"1254:54:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1296,"id":1302,"nodeType":"Return","src":"1247:61:14"}]},"documentation":{"id":1292,"nodeType":"StructuredDocumentation","src":"1103:67:14","text":" @dev Returns the current implementation address."},"id":1304,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1184:18:14","nodeType":"FunctionDefinition","parameters":{"id":1293,"nodeType":"ParameterList","parameters":[],"src":"1202:2:14"},"returnParameters":{"id":1296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1304,"src":"1228:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1294,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:9:14"},"scope":1578,"src":"1175:140:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1327,"nodeType":"Block","src":"1469:196:14","statements":[{"expression":{"arguments":[{"arguments":[{"id":1313,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"1506:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1311,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"1487:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1495:10:14","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2948,"src":"1487:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:37:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1526:47:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":1310,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1479:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:95:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1317,"nodeType":"ExpressionStatement","src":"1479:95:14"},{"expression":{"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1321,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"1611:20:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1318,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"1584:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"1584:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:48:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1633:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"1584:54:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1324,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"1641:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1584:74:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1326,"nodeType":"ExpressionStatement","src":"1584:74:14"}]},"documentation":{"id":1305,"nodeType":"StructuredDocumentation","src":"1321:80:14","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1328,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1415:18:14","nodeType":"FunctionDefinition","parameters":{"id":1308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1307,"mutability":"mutable","name":"newImplementation","nameLocation":"1442:17:14","nodeType":"VariableDeclaration","scope":1328,"src":"1434:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1306,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:27:14"},"returnParameters":{"id":1309,"nodeType":"ParameterList","parameters":[],"src":"1469:0:14"},"scope":1578,"src":"1406:259:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1342,"nodeType":"Block","src":"1827:96:14","statements":[{"expression":{"arguments":[{"id":1335,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"1856:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1334,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"1837:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:37:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1337,"nodeType":"ExpressionStatement","src":"1837:37:14"},{"eventCall":{"arguments":[{"id":1339,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"1898:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1338,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"1889:8:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1889:27:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1341,"nodeType":"EmitStatement","src":"1884:32:14"}]},"documentation":{"id":1329,"nodeType":"StructuredDocumentation","src":"1671:95:14","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":1343,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1780:10:14","nodeType":"FunctionDefinition","parameters":{"id":1332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1331,"mutability":"mutable","name":"newImplementation","nameLocation":"1799:17:14","nodeType":"VariableDeclaration","scope":1343,"src":"1791:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1330,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:27:14"},"returnParameters":{"id":1333,"nodeType":"ParameterList","parameters":[],"src":"1827:0:14"},"scope":1578,"src":"1771:152:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1372,"nodeType":"Block","src":"2155:167:14","statements":[{"expression":{"arguments":[{"id":1354,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"2176:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1353,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"2165:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1356,"nodeType":"ExpressionStatement","src":"2165:29:14"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2208:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:6:14","memberName":"length","nodeType":"MemberAccess","src":"2208:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2222:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2208:15:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1361,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"2227:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1371,"nodeType":"IfStatement","src":"2204:112:14","trueBody":{"id":1370,"nodeType":"Block","src":"2238:78:14","statements":[{"expression":{"arguments":[{"id":1366,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"2281:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1367,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2300:4:14","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":1363,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"2252:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:20:14","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3147,"src":"2252:28:14","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":1368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:53:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1369,"nodeType":"ExpressionStatement","src":"2252:53:14"}]}}]},"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"1929:123:14","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":1373,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2066:17:14","nodeType":"FunctionDefinition","parameters":{"id":1351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1346,"mutability":"mutable","name":"newImplementation","nameLocation":"2092:17:14","nodeType":"VariableDeclaration","scope":1373,"src":"2084:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1348,"mutability":"mutable","name":"data","nameLocation":"2124:4:14","nodeType":"VariableDeclaration","scope":1373,"src":"2111:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1347,"name":"bytes","nodeType":"ElementaryTypeName","src":"2111:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1350,"mutability":"mutable","name":"forceCall","nameLocation":"2135:9:14","nodeType":"VariableDeclaration","scope":1373,"src":"2130:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1349,"name":"bool","nodeType":"ElementaryTypeName","src":"2130:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:62:14"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[],"src":"2155:0:14"},"scope":1578,"src":"2057:265:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1425,"nodeType":"Block","src":"2596:820:14","statements":[{"condition":{"expression":{"arguments":[{"id":1385,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"2937:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1383,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"2910:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2922:14:14","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":3333,"src":"2910:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$3299_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:42:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3299_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":1387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2953:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3298,"src":"2910:48:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1423,"nodeType":"Block","src":"3028:382:14","statements":[{"clauses":[{"block":{"id":1408,"nodeType":"Block","src":"3122:115:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1402,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"3148:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1403,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"3156:20:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3148:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:43:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":1401,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3140:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:82:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1407,"nodeType":"ExpressionStatement","src":"3140:82:14"}]},"errorName":"","id":1409,"nodeType":"TryCatchClause","parameters":{"id":1400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1399,"mutability":"mutable","name":"slot","nameLocation":"3116:4:14","nodeType":"VariableDeclaration","scope":1409,"src":"3108:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1398,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:14:14"},"src":"3099:138:14"},{"block":{"id":1414,"nodeType":"Block","src":"3244:89:14","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3269:48:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":1410,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3262:6:14","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:56:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1413,"nodeType":"ExpressionStatement","src":"3262:56:14"}]},"errorName":"","id":1415,"nodeType":"TryCatchClause","src":"3238:95:14"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1394,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"3064:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1393,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"3046:17:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1237_$","typeString":"type(contract IERC1822Proxiable)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1237","typeString":"contract IERC1822Proxiable"}},"id":1396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:13:14","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1236,"src":"3046:50:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:52:14","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1416,"nodeType":"TryStatement","src":"3042:291:14"},{"expression":{"arguments":[{"id":1418,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"3364:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1419,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"3383:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1420,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"3389:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1417,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"3346:17:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3346:53:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1422,"nodeType":"ExpressionStatement","src":"3346:53:14"}]},"id":1424,"nodeType":"IfStatement","src":"2906:504:14","trueBody":{"id":1392,"nodeType":"Block","src":"2960:62:14","statements":[{"expression":{"arguments":[{"id":1389,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"2993:17:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1388,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"2974:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:37:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1391,"nodeType":"ExpressionStatement","src":"2974:37:14"}]}}]},"documentation":{"id":1374,"nodeType":"StructuredDocumentation","src":"2328:161:14","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":1426,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2503:21:14","nodeType":"FunctionDefinition","parameters":{"id":1381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1376,"mutability":"mutable","name":"newImplementation","nameLocation":"2533:17:14","nodeType":"VariableDeclaration","scope":1426,"src":"2525:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1375,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1378,"mutability":"mutable","name":"data","nameLocation":"2565:4:14","nodeType":"VariableDeclaration","scope":1426,"src":"2552:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1377,"name":"bytes","nodeType":"ElementaryTypeName","src":"2552:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1380,"mutability":"mutable","name":"forceCall","nameLocation":"2576:9:14","nodeType":"VariableDeclaration","scope":1426,"src":"2571:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1379,"name":"bool","nodeType":"ElementaryTypeName","src":"2571:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2524:62:14"},"returnParameters":{"id":1382,"nodeType":"ParameterList","parameters":[],"src":"2596:0:14"},"scope":1578,"src":"2494:922:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1427,"nodeType":"StructuredDocumentation","src":"3422:189:14","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":1430,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3642:11:14","nodeType":"VariableDeclaration","scope":1578,"src":"3616:106:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:66:14","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1442,"nodeType":"Block","src":"3837:69:14","statements":[{"expression":{"expression":{"arguments":[{"id":1438,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"3881:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1436,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"3854:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3866:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"3854:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3894:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"3854:45:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1435,"id":1441,"nodeType":"Return","src":"3847:52:14"}]},"documentation":{"id":1431,"nodeType":"StructuredDocumentation","src":"3729:50:14","text":" @dev Returns the current admin."},"id":1443,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"3793:9:14","nodeType":"FunctionDefinition","parameters":{"id":1432,"nodeType":"ParameterList","parameters":[],"src":"3802:2:14"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1443,"src":"3828:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1433,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3827:9:14"},"scope":1578,"src":"3784:122:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1468,"nodeType":"Block","src":"4033:156:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1450,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1446,"src":"4051:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4071:1:14","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":1452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4063:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1451,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:14","typeDescriptions":{}}},"id":1454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4063:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4051:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4075:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":1449,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4043:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:73:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1458,"nodeType":"ExpressionStatement","src":"4043:73:14"},{"expression":{"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1462,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"4153:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1459,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"4126:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"4126:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4126:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4166:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"4126:45:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1465,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1446,"src":"4174:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:56:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1467,"nodeType":"ExpressionStatement","src":"4126:56:14"}]},"documentation":{"id":1444,"nodeType":"StructuredDocumentation","src":"3912:71:14","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1469,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3997:9:14","nodeType":"FunctionDefinition","parameters":{"id":1447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1446,"mutability":"mutable","name":"newAdmin","nameLocation":"4015:8:14","nodeType":"VariableDeclaration","scope":1469,"src":"4007:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1445,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4006:18:14"},"returnParameters":{"id":1448,"nodeType":"ParameterList","parameters":[],"src":"4033:0:14"},"scope":1578,"src":"3988:201:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1485,"nodeType":"Block","src":"4349:86:14","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1476,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"4377:9:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1478,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"4390:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1475,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1221,"src":"4364:12:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1480,"nodeType":"EmitStatement","src":"4359:40:14"},{"expression":{"arguments":[{"id":1482,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"4419:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1481,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"4409:9:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:19:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1484,"nodeType":"ExpressionStatement","src":"4409:19:14"}]},"documentation":{"id":1470,"nodeType":"StructuredDocumentation","src":"4195:100:14","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":1486,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4309:12:14","nodeType":"FunctionDefinition","parameters":{"id":1473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1472,"mutability":"mutable","name":"newAdmin","nameLocation":"4330:8:14","nodeType":"VariableDeclaration","scope":1486,"src":"4322:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1471,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4321:18:14"},"returnParameters":{"id":1474,"nodeType":"ParameterList","parameters":[],"src":"4349:0:14"},"scope":1578,"src":"4300:135:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1487,"nodeType":"StructuredDocumentation","src":"4441:232:14","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":1490,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"4704:12:14","nodeType":"VariableDeclaration","scope":1578,"src":"4678:107:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4678:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:66:14","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1502,"nodeType":"Block","src":"4902:70:14","statements":[{"expression":{"expression":{"arguments":[{"id":1498,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"4946:12:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1496,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"4919:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"4919:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4960:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"4919:46:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1495,"id":1501,"nodeType":"Return","src":"4912:53:14"}]},"documentation":{"id":1491,"nodeType":"StructuredDocumentation","src":"4792:51:14","text":" @dev Returns the current beacon."},"id":1503,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"4857:10:14","nodeType":"FunctionDefinition","parameters":{"id":1492,"nodeType":"ParameterList","parameters":[],"src":"4867:2:14"},"returnParameters":{"id":1495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1503,"src":"4893:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1493,"name":"address","nodeType":"ElementaryTypeName","src":"4893:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4892:9:14"},"scope":1578,"src":"4848:124:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1538,"nodeType":"Block","src":"5101:324:14","statements":[{"expression":{"arguments":[{"arguments":[{"id":1512,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"5138:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1510,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"5119:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5127:10:14","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2948,"src":"5119:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5119:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5150:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":1509,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5111:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:79:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1516,"nodeType":"ExpressionStatement","src":"5111:79:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1521,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"5248:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1520,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"5240:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1706_$","typeString":"type(contract IBeacon)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1706","typeString":"contract IBeacon"}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5259:14:14","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1705,"src":"5240:33:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1518,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"5221:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5229:10:14","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2948,"src":"5221:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5290:50:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":1517,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5200:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:150:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1528,"nodeType":"ExpressionStatement","src":"5200:150:14"},{"expression":{"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1532,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"5387:12:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1529,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"5360:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3400_$","typeString":"type(library StorageSlot)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:14:14","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3322,"src":"5360:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3296_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:5:14","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3295,"src":"5360:46:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1535,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"5409:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5360:58:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1537,"nodeType":"ExpressionStatement","src":"5360:58:14"}]},"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"4978:71:14","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1539,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5063:10:14","nodeType":"FunctionDefinition","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"newBeacon","nameLocation":"5082:9:14","nodeType":"VariableDeclaration","scope":1539,"src":"5074:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"5074:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5073:19:14"},"returnParameters":{"id":1508,"nodeType":"ParameterList","parameters":[],"src":"5101:0:14"},"scope":1578,"src":"5054:371:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1576,"nodeType":"Block","src":"5824:217:14","statements":[{"expression":{"arguments":[{"id":1550,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"5845:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1549,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"5834:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5834:21:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1552,"nodeType":"ExpressionStatement","src":"5834:21:14"},{"eventCall":{"arguments":[{"id":1554,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"5885:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1553,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"5870:14:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1556,"nodeType":"EmitStatement","src":"5865:30:14"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1557,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"5909:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5914:6:14","memberName":"length","nodeType":"MemberAccess","src":"5909:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5923:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5909:15:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1561,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1546,"src":"5928:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5909:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1575,"nodeType":"IfStatement","src":"5905:130:14","trueBody":{"id":1574,"nodeType":"Block","src":"5939:96:14","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1567,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"5990:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1566,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"5982:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1706_$","typeString":"type(contract IBeacon)"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1706","typeString":"contract IBeacon"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:14:14","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1705,"src":"5982:33:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1571,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"6019:4:14","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":1563,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"5953:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:20:14","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3147,"src":"5953:28:14","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":1572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1573,"nodeType":"ExpressionStatement","src":"5953:71:14"}]}}]},"documentation":{"id":1540,"nodeType":"StructuredDocumentation","src":"5431:292:14","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":1577,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"5737:23:14","nodeType":"FunctionDefinition","parameters":{"id":1547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"newBeacon","nameLocation":"5769:9:14","nodeType":"VariableDeclaration","scope":1577,"src":"5761:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1541,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1544,"mutability":"mutable","name":"data","nameLocation":"5793:4:14","nodeType":"VariableDeclaration","scope":1577,"src":"5780:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1543,"name":"bytes","nodeType":"ElementaryTypeName","src":"5780:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1546,"mutability":"mutable","name":"forceCall","nameLocation":"5804:9:14","nodeType":"VariableDeclaration","scope":1577,"src":"5799:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1545,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5760:54:14"},"returnParameters":{"id":1548,"nodeType":"ParameterList","parameters":[],"src":"5824:0:14"},"scope":1578,"src":"5728:313:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1579,"src":"517:5526:14","usedErrors":[],"usedEvents":[1214,1221,1226]}],"src":"116:5928:14"}},"@openzeppelin/contracts/proxy/Proxy.sol":{"id":15,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[1630]},"id":1631,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1580,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:15"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1581,"nodeType":"StructuredDocumentation","src":"124:598:15","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":1630,"linearizedBaseContracts":[1630],"name":"Proxy","nameLocation":"741:5:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":1588,"nodeType":"Block","src":"1008:835:15","statements":[{"AST":{"nativeSrc":"1027:810:15","nodeType":"YulBlock","src":"1027:810:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1280:1:15","nodeType":"YulLiteral","src":"1280:1:15","type":"","value":"0"},{"kind":"number","nativeSrc":"1283:1:15","nodeType":"YulLiteral","src":"1283:1:15","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1286:12:15","nodeType":"YulIdentifier","src":"1286:12:15"},"nativeSrc":"1286:14:15","nodeType":"YulFunctionCall","src":"1286:14:15"}],"functionName":{"name":"calldatacopy","nativeSrc":"1267:12:15","nodeType":"YulIdentifier","src":"1267:12:15"},"nativeSrc":"1267:34:15","nodeType":"YulFunctionCall","src":"1267:34:15"},"nativeSrc":"1267:34:15","nodeType":"YulExpressionStatement","src":"1267:34:15"},{"nativeSrc":"1428:74:15","nodeType":"YulVariableDeclaration","src":"1428:74:15","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1455:3:15","nodeType":"YulIdentifier","src":"1455:3:15"},"nativeSrc":"1455:5:15","nodeType":"YulFunctionCall","src":"1455:5:15"},{"name":"implementation","nativeSrc":"1462:14:15","nodeType":"YulIdentifier","src":"1462:14:15"},{"kind":"number","nativeSrc":"1478:1:15","nodeType":"YulLiteral","src":"1478:1:15","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1481:12:15","nodeType":"YulIdentifier","src":"1481:12:15"},"nativeSrc":"1481:14:15","nodeType":"YulFunctionCall","src":"1481:14:15"},{"kind":"number","nativeSrc":"1497:1:15","nodeType":"YulLiteral","src":"1497:1:15","type":"","value":"0"},{"kind":"number","nativeSrc":"1500:1:15","nodeType":"YulLiteral","src":"1500:1:15","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1442:12:15","nodeType":"YulIdentifier","src":"1442:12:15"},"nativeSrc":"1442:60:15","nodeType":"YulFunctionCall","src":"1442:60:15"},"variables":[{"name":"result","nativeSrc":"1432:6:15","nodeType":"YulTypedName","src":"1432:6:15","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1570:1:15","nodeType":"YulLiteral","src":"1570:1:15","type":"","value":"0"},{"kind":"number","nativeSrc":"1573:1:15","nodeType":"YulLiteral","src":"1573:1:15","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1576:14:15","nodeType":"YulIdentifier","src":"1576:14:15"},"nativeSrc":"1576:16:15","nodeType":"YulFunctionCall","src":"1576:16:15"}],"functionName":{"name":"returndatacopy","nativeSrc":"1555:14:15","nodeType":"YulIdentifier","src":"1555:14:15"},"nativeSrc":"1555:38:15","nodeType":"YulFunctionCall","src":"1555:38:15"},"nativeSrc":"1555:38:15","nodeType":"YulExpressionStatement","src":"1555:38:15"},{"cases":[{"body":{"nativeSrc":"1688:59:15","nodeType":"YulBlock","src":"1688:59:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1713:1:15","nodeType":"YulLiteral","src":"1713:1:15","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1716:14:15","nodeType":"YulIdentifier","src":"1716:14:15"},"nativeSrc":"1716:16:15","nodeType":"YulFunctionCall","src":"1716:16:15"}],"functionName":{"name":"revert","nativeSrc":"1706:6:15","nodeType":"YulIdentifier","src":"1706:6:15"},"nativeSrc":"1706:27:15","nodeType":"YulFunctionCall","src":"1706:27:15"},"nativeSrc":"1706:27:15","nodeType":"YulExpressionStatement","src":"1706:27:15"}]},"nativeSrc":"1681:66:15","nodeType":"YulCase","src":"1681:66:15","value":{"kind":"number","nativeSrc":"1686:1:15","nodeType":"YulLiteral","src":"1686:1:15","type":"","value":"0"}},{"body":{"nativeSrc":"1768:59:15","nodeType":"YulBlock","src":"1768:59:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1793:1:15","nodeType":"YulLiteral","src":"1793:1:15","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1796:14:15","nodeType":"YulIdentifier","src":"1796:14:15"},"nativeSrc":"1796:16:15","nodeType":"YulFunctionCall","src":"1796:16:15"}],"functionName":{"name":"return","nativeSrc":"1786:6:15","nodeType":"YulIdentifier","src":"1786:6:15"},"nativeSrc":"1786:27:15","nodeType":"YulFunctionCall","src":"1786:27:15"},"nativeSrc":"1786:27:15","nodeType":"YulExpressionStatement","src":"1786:27:15"}]},"nativeSrc":"1760:67:15","nodeType":"YulCase","src":"1760:67:15","value":"default"}],"expression":{"name":"result","nativeSrc":"1614:6:15","nodeType":"YulIdentifier","src":"1614:6:15"},"nativeSrc":"1607:220:15","nodeType":"YulSwitch","src":"1607:220:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":1584,"isOffset":false,"isSlot":false,"src":"1462:14:15","valueSize":1}],"id":1587,"nodeType":"InlineAssembly","src":"1018:819:15"}]},"documentation":{"id":1582,"nodeType":"StructuredDocumentation","src":"753:190:15","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1589,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:15","nodeType":"FunctionDefinition","parameters":{"id":1585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1584,"mutability":"mutable","name":"implementation","nameLocation":"975:14:15","nodeType":"VariableDeclaration","scope":1589,"src":"967:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1583,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:15"},"returnParameters":{"id":1586,"nodeType":"ParameterList","parameters":[],"src":"1008:0:15"},"scope":1630,"src":"948:895:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":1590,"nodeType":"StructuredDocumentation","src":"1849:173:15","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":1595,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:15","nodeType":"FunctionDefinition","parameters":{"id":1591,"nodeType":"ParameterList","parameters":[],"src":"2051:2:15"},"returnParameters":{"id":1594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1595,"src":"2085:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:15"},"scope":1630,"src":"2027:67:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1607,"nodeType":"Block","src":"2360:72:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1599,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"2370:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1601,"nodeType":"ExpressionStatement","src":"2370:17:15"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1603,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"2407:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1602,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"2397:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1606,"nodeType":"ExpressionStatement","src":"2397:28:15"}]},"documentation":{"id":1596,"nodeType":"StructuredDocumentation","src":"2100:217:15","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1608,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:15","nodeType":"FunctionDefinition","parameters":{"id":1597,"nodeType":"ParameterList","parameters":[],"src":"2340:2:15"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[],"src":"2360:0:15"},"scope":1630,"src":"2322:110:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1615,"nodeType":"Block","src":"2665:28:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1612,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"2675:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1614,"nodeType":"ExpressionStatement","src":"2675:11:15"}]},"documentation":{"id":1609,"nodeType":"StructuredDocumentation","src":"2438:186:15","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":1616,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1610,"nodeType":"ParameterList","parameters":[],"src":"2637:2:15"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[],"src":"2665:0:15"},"scope":1630,"src":"2629:64:15","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1623,"nodeType":"Block","src":"2888:28:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1620,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"2898:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1622,"nodeType":"ExpressionStatement","src":"2898:11:15"}]},"documentation":{"id":1617,"nodeType":"StructuredDocumentation","src":"2699:149:15","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":1624,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1618,"nodeType":"ParameterList","parameters":[],"src":"2860:2:15"},"returnParameters":{"id":1619,"nodeType":"ParameterList","parameters":[],"src":"2888:0:15"},"scope":1630,"src":"2853:63:15","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1628,"nodeType":"Block","src":"3242:2:15","statements":[]},"documentation":{"id":1625,"nodeType":"StructuredDocumentation","src":"2922:271:15","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":1629,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:15","nodeType":"FunctionDefinition","parameters":{"id":1626,"nodeType":"ParameterList","parameters":[],"src":"3222:2:15"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[],"src":"3242:0:15"},"scope":1630,"src":"3198:46:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1631,"src":"723:2523:15","usedErrors":[],"usedEvents":[]}],"src":"99:3148:15"}},"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol":{"id":16,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol","exportedSymbols":{"Address":[3260],"BeaconProxy":[1696],"ERC1967Upgrade":[1578],"IBeacon":[1706],"IERC1822Proxiable":[1237],"IERC1967":[1227],"Proxy":[1630],"StorageSlot":[3400]},"id":1697,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1632,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:16"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"./IBeacon.sol","id":1633,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1697,"sourceUnit":1707,"src":"137:23:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":1634,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1697,"sourceUnit":1631,"src":"161:22:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"../ERC1967/ERC1967Upgrade.sol","id":1635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1697,"sourceUnit":1579,"src":"184:39:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1637,"name":"Proxy","nameLocations":["604:5:16"],"nodeType":"IdentifierPath","referencedDeclaration":1630,"src":"604:5:16"},"id":1638,"nodeType":"InheritanceSpecifier","src":"604:5:16"},{"baseName":{"id":1639,"name":"ERC1967Upgrade","nameLocations":["611:14:16"],"nodeType":"IdentifierPath","referencedDeclaration":1578,"src":"611:14:16"},"id":1640,"nodeType":"InheritanceSpecifier","src":"611:14:16"}],"canonicalName":"BeaconProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1636,"nodeType":"StructuredDocumentation","src":"225:354:16","text":" @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n conflict with the storage layout of the implementation behind the proxy.\n _Available since v3.4._"},"fullyImplemented":true,"id":1696,"linearizedBaseContracts":[1696,1578,1227,1630],"name":"BeaconProxy","nameLocation":"589:11:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":1654,"nodeType":"Block","src":"1115:61:16","statements":[{"expression":{"arguments":[{"id":1649,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"1149:6:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1650,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"1157:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1163:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1648,"name":"_upgradeBeaconToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"1125:23:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1125:44:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1653,"nodeType":"ExpressionStatement","src":"1125:44:16"}]},"documentation":{"id":1641,"nodeType":"StructuredDocumentation","src":"632:423:16","text":" @dev Initializes the proxy with `beacon`.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n constructor.\n Requirements:\n - `beacon` must be a contract with the interface {IBeacon}."},"id":1655,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"beacon","nameLocation":"1080:6:16","nodeType":"VariableDeclaration","scope":1655,"src":"1072:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1642,"name":"address","nodeType":"ElementaryTypeName","src":"1072:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"data","nameLocation":"1101:4:16","nodeType":"VariableDeclaration","scope":1655,"src":"1088:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1644,"name":"bytes","nodeType":"ElementaryTypeName","src":"1088:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1071:35:16"},"returnParameters":{"id":1647,"nodeType":"ParameterList","parameters":[],"src":"1115:0:16"},"scope":1696,"src":"1060:116:16","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1664,"nodeType":"Block","src":"1305:36:16","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1661,"name":"_getBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"1322:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1660,"id":1663,"nodeType":"Return","src":"1315:19:16"}]},"documentation":{"id":1656,"nodeType":"StructuredDocumentation","src":"1182:59:16","text":" @dev Returns the current beacon address."},"id":1665,"implemented":true,"kind":"function","modifiers":[],"name":"_beacon","nameLocation":"1255:7:16","nodeType":"FunctionDefinition","parameters":{"id":1657,"nodeType":"ParameterList","parameters":[],"src":"1262:2:16"},"returnParameters":{"id":1660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1665,"src":"1296:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1658,"name":"address","nodeType":"ElementaryTypeName","src":"1296:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1295:9:16"},"scope":1696,"src":"1246:95:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1595],"body":{"id":1679,"nodeType":"Block","src":"1520:62:16","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1673,"name":"_getBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"1545:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1672,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"1537:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1706_$","typeString":"type(contract IBeacon)"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1537:21:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1706","typeString":"contract IBeacon"}},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1559:14:16","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1705,"src":"1537:36:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1537:38:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1671,"id":1678,"nodeType":"Return","src":"1530:45:16"}]},"documentation":{"id":1666,"nodeType":"StructuredDocumentation","src":"1347:92:16","text":" @dev Returns the current implementation address of the associated beacon."},"id":1680,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1453:15:16","nodeType":"FunctionDefinition","overrides":{"id":1668,"nodeType":"OverrideSpecifier","overrides":[],"src":"1493:8:16"},"parameters":{"id":1667,"nodeType":"ParameterList","parameters":[],"src":"1468:2:16"},"returnParameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1680,"src":"1511:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1669,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1510:9:16"},"scope":1696,"src":"1444:138:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1694,"nodeType":"Block","src":"2032:61:16","statements":[{"expression":{"arguments":[{"id":1689,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"2066:6:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1690,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"2074:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":1691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2080:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1688,"name":"_upgradeBeaconToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"2042:23:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2042:44:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1693,"nodeType":"ExpressionStatement","src":"2042:44:16"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"1588:367:16","text":" @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n Requirements:\n - `beacon` must be a contract.\n - The implementation returned by `beacon` must be a contract."},"id":1695,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"1969:10:16","nodeType":"FunctionDefinition","parameters":{"id":1686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"beacon","nameLocation":"1988:6:16","nodeType":"VariableDeclaration","scope":1695,"src":"1980:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"1980:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"data","nameLocation":"2009:4:16","nodeType":"VariableDeclaration","scope":1695,"src":"1996:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1684,"name":"bytes","nodeType":"ElementaryTypeName","src":"1996:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1979:35:16"},"returnParameters":{"id":1687,"nodeType":"ParameterList","parameters":[],"src":"2032:0:16"},"scope":1696,"src":"1960:133:16","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1697,"src":"580:1515:16","usedErrors":[],"usedEvents":[1214,1221,1226]}],"src":"112:1984:16"}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"id":17,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1706]},"id":1707,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1698,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"118:79:17","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1706,"linearizedBaseContracts":[1706],"name":"IBeacon","nameLocation":"208:7:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1700,"nodeType":"StructuredDocumentation","src":"222:162:17","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1705,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:17","nodeType":"FunctionDefinition","parameters":{"id":1701,"nodeType":"ParameterList","parameters":[],"src":"412:2:17"},"returnParameters":{"id":1704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1705,"src":"438:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:17"},"scope":1706,"src":"389:58:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1707,"src":"198:251:17","usedErrors":[],"usedEvents":[]}],"src":"93:357:17"}},"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol":{"id":18,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol","exportedSymbols":{"Address":[3260],"Context":[3290],"IBeacon":[1706],"Ownable":[1206],"UpgradeableBeacon":[1781]},"id":1782,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1708,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:18"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"./IBeacon.sol","id":1709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1782,"sourceUnit":1707,"src":"128:23:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"../../access/Ownable.sol","id":1710,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1782,"sourceUnit":1207,"src":"152:34:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1711,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1782,"sourceUnit":3261,"src":"187:33:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1713,"name":"IBeacon","nameLocations":["573:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":1706,"src":"573:7:18"},"id":1714,"nodeType":"InheritanceSpecifier","src":"573:7:18"},{"baseName":{"id":1715,"name":"Ownable","nameLocations":["582:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"582:7:18"},"id":1716,"nodeType":"InheritanceSpecifier","src":"582:7:18"}],"canonicalName":"UpgradeableBeacon","contractDependencies":[],"contractKind":"contract","documentation":{"id":1712,"nodeType":"StructuredDocumentation","src":"222:320:18","text":" @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n implementation contract, which is where they will delegate all function calls.\n An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon."},"fullyImplemented":true,"id":1781,"linearizedBaseContracts":[1781,1206,3290,1706],"name":"UpgradeableBeacon","nameLocation":"552:17:18","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1718,"mutability":"mutable","name":"_implementation","nameLocation":"612:15:18","nodeType":"VariableDeclaration","scope":1781,"src":"596:31:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1717,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":1719,"nodeType":"StructuredDocumentation","src":"634:90:18","text":" @dev Emitted when the implementation returned by the beacon is changed."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1723,"name":"Upgraded","nameLocation":"735:8:18","nodeType":"EventDefinition","parameters":{"id":1722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1721,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"760:14:18","nodeType":"VariableDeclaration","scope":1723,"src":"744:30:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1720,"name":"address","nodeType":"ElementaryTypeName","src":"744:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"743:32:18"},"src":"729:47:18"},{"body":{"id":1733,"nodeType":"Block","src":"968:52:18","statements":[{"expression":{"arguments":[{"id":1730,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"997:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1729,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"978:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"978:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1732,"nodeType":"ExpressionStatement","src":"978:35:18"}]},"documentation":{"id":1724,"nodeType":"StructuredDocumentation","src":"782:144:18","text":" @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n beacon."},"id":1734,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1726,"mutability":"mutable","name":"implementation_","nameLocation":"951:15:18","nodeType":"VariableDeclaration","scope":1734,"src":"943:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1725,"name":"address","nodeType":"ElementaryTypeName","src":"943:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"942:25:18"},"returnParameters":{"id":1728,"nodeType":"ParameterList","parameters":[],"src":"968:0:18"},"scope":1781,"src":"931:89:18","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1705],"body":{"id":1743,"nodeType":"Block","src":"1171:39:18","statements":[{"expression":{"id":1741,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"1188:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1740,"id":1742,"nodeType":"Return","src":"1181:22:18"}]},"documentation":{"id":1735,"nodeType":"StructuredDocumentation","src":"1026:67:18","text":" @dev Returns the current implementation address."},"functionSelector":"5c60da1b","id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"1107:14:18","nodeType":"FunctionDefinition","overrides":{"id":1737,"nodeType":"OverrideSpecifier","overrides":[],"src":"1144:8:18"},"parameters":{"id":1736,"nodeType":"ParameterList","parameters":[],"src":"1121:2:18"},"returnParameters":{"id":1740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1744,"src":"1162:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1161:9:18"},"scope":1781,"src":"1098:112:18","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1760,"nodeType":"Block","src":"1540:96:18","statements":[{"expression":{"arguments":[{"id":1753,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1569:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1752,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"1550:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1550:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1755,"nodeType":"ExpressionStatement","src":"1550:37:18"},{"eventCall":{"arguments":[{"id":1757,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1611:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1756,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1723,"src":"1602:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1602:27:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1759,"nodeType":"EmitStatement","src":"1597:32:18"}]},"documentation":{"id":1745,"nodeType":"StructuredDocumentation","src":"1216:248:18","text":" @dev Upgrades the beacon to a new implementation.\n Emits an {Upgraded} event.\n Requirements:\n - msg.sender must be the owner of the contract.\n - `newImplementation` must be a contract."},"functionSelector":"3659cfe6","id":1761,"implemented":true,"kind":"function","modifiers":[{"id":1750,"kind":"modifierInvocation","modifierName":{"id":1749,"name":"onlyOwner","nameLocations":["1530:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"1530:9:18"},"nodeType":"ModifierInvocation","src":"1530:9:18"}],"name":"upgradeTo","nameLocation":"1478:9:18","nodeType":"FunctionDefinition","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1747,"mutability":"mutable","name":"newImplementation","nameLocation":"1496:17:18","nodeType":"VariableDeclaration","scope":1761,"src":"1488:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"1488:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1487:27:18"},"returnParameters":{"id":1751,"nodeType":"ParameterList","parameters":[],"src":"1540:0:18"},"scope":1781,"src":"1469:167:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1779,"nodeType":"Block","src":"1874:163:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":1770,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"1911:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1768,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"1892:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3260_$","typeString":"type(library Address)"}},"id":1769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1900:10:18","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2948,"src":"1892:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1931:53:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6","typeString":"literal_string \"UpgradeableBeacon: implementation is not a contract\""},"value":"UpgradeableBeacon: implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6","typeString":"literal_string \"UpgradeableBeacon: implementation is not a contract\""}],"id":1767,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1884:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1884:101:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1774,"nodeType":"ExpressionStatement","src":"1884:101:18"},{"expression":{"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1775,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"1995:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1776,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"2013:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1995:35:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1778,"nodeType":"ExpressionStatement","src":"1995:35:18"}]},"documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"1642:164:18","text":" @dev Sets the implementation contract address for this beacon\n Requirements:\n - `newImplementation` must be a contract."},"id":1780,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1820:18:18","nodeType":"FunctionDefinition","parameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1764,"mutability":"mutable","name":"newImplementation","nameLocation":"1847:17:18","nodeType":"VariableDeclaration","scope":1780,"src":"1839:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1763,"name":"address","nodeType":"ElementaryTypeName","src":"1839:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:27:18"},"returnParameters":{"id":1766,"nodeType":"ParameterList","parameters":[],"src":"1874:0:18"},"scope":1781,"src":"1811:226:18","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1782,"src":"543:1496:18","usedErrors":[],"usedEvents":[1107,1723]}],"src":"103:1937:18"}},"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol":{"id":19,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"Address":[3260],"Context":[3290],"ERC1967Proxy":[1274],"ERC1967Upgrade":[1578],"IBeacon":[1706],"IERC1822Proxiable":[1237],"IERC1967":[1227],"ITransparentUpgradeableProxy":[1951],"Ownable":[1206],"Proxy":[1630],"ProxyAdmin":[1917],"StorageSlot":[3400],"TransparentUpgradeableProxy":[2240]},"id":1918,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1783,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:19"},{"absolutePath":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","id":1784,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1918,"sourceUnit":2241,"src":"141:43:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"../../access/Ownable.sol","id":1785,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1918,"sourceUnit":1207,"src":"185:34:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1787,"name":"Ownable","nameLocations":["473:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"473:7:19"},"id":1788,"nodeType":"InheritanceSpecifier","src":"473:7:19"}],"canonicalName":"ProxyAdmin","contractDependencies":[],"contractKind":"contract","documentation":{"id":1786,"nodeType":"StructuredDocumentation","src":"221:228:19","text":" @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}."},"fullyImplemented":true,"id":1917,"linearizedBaseContracts":[1917,1206,3290],"name":"ProxyAdmin","nameLocation":"459:10:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":1821,"nodeType":"Block","src":"756:332:19","statements":[{"assignments":[1798,1800],"declarations":[{"constant":false,"id":1798,"mutability":"mutable","name":"success","nameLocation":"929:7:19","nodeType":"VariableDeclaration","scope":1821,"src":"924:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1797,"name":"bool","nodeType":"ElementaryTypeName","src":"924:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1800,"mutability":"mutable","name":"returndata","nameLocation":"951:10:19","nodeType":"VariableDeclaration","scope":1821,"src":"938:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1799,"name":"bytes","nodeType":"ElementaryTypeName","src":"938:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1808,"initialValue":{"arguments":[{"hexValue":"5c60da1b","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"991:13:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}],"expression":{"arguments":[{"id":1803,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"973:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}],"id":1802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"965:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1801,"name":"address","nodeType":"ElementaryTypeName","src":"965:7:19","typeDescriptions":{}}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"965:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"980:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"965:25:19","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":1807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"965:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"923:82:19"},{"expression":{"arguments":[{"id":1810,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"1023:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1809,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1015:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1015:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1812,"nodeType":"ExpressionStatement","src":"1015:16:19"},{"expression":{"arguments":[{"id":1815,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"1059:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1072:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1816,"name":"address","nodeType":"ElementaryTypeName","src":"1072:7:19","typeDescriptions":{}}}],"id":1818,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1071:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":1813,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1048:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1052:6:19","memberName":"decode","nodeType":"MemberAccess","src":"1048:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1048:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":1796,"id":1820,"nodeType":"Return","src":"1041:40:19"}]},"documentation":{"id":1789,"nodeType":"StructuredDocumentation","src":"487:158:19","text":" @dev Returns the current implementation of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"204e1c7a","id":1822,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyImplementation","nameLocation":"659:22:19","nodeType":"FunctionDefinition","parameters":{"id":1793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1792,"mutability":"mutable","name":"proxy","nameLocation":"711:5:19","nodeType":"VariableDeclaration","scope":1822,"src":"682:34:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1791,"nodeType":"UserDefinedTypeName","pathNode":{"id":1790,"name":"ITransparentUpgradeableProxy","nameLocations":["682:28:19"],"nodeType":"IdentifierPath","referencedDeclaration":1951,"src":"682:28:19"},"referencedDeclaration":1951,"src":"682:28:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"681:36:19"},"returnParameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1795,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1822,"src":"747:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1794,"name":"address","nodeType":"ElementaryTypeName","src":"747:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"746:9:19"},"scope":1917,"src":"650:438:19","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1855,"nodeType":"Block","src":"1345:323:19","statements":[{"assignments":[1832,1834],"declarations":[{"constant":false,"id":1832,"mutability":"mutable","name":"success","nameLocation":"1509:7:19","nodeType":"VariableDeclaration","scope":1855,"src":"1504:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1831,"name":"bool","nodeType":"ElementaryTypeName","src":"1504:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1834,"mutability":"mutable","name":"returndata","nameLocation":"1531:10:19","nodeType":"VariableDeclaration","scope":1855,"src":"1518:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1833,"name":"bytes","nodeType":"ElementaryTypeName","src":"1518:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1842,"initialValue":{"arguments":[{"hexValue":"f851a440","id":1840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1571:13:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}],"expression":{"arguments":[{"id":1837,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1553:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}],"id":1836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1545:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1835,"name":"address","nodeType":"ElementaryTypeName","src":"1545:7:19","typeDescriptions":{}}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1560:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"1545:25:19","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":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1503:82:19"},{"expression":{"arguments":[{"id":1844,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"1603:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1843,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1595:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1595:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1846,"nodeType":"ExpressionStatement","src":"1595:16:19"},{"expression":{"arguments":[{"id":1849,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1639:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1652:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1850,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:19","typeDescriptions":{}}}],"id":1852,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1651:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":1847,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1628:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1632:6:19","memberName":"decode","nodeType":"MemberAccess","src":"1628:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1628:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":1830,"id":1854,"nodeType":"Return","src":"1621:40:19"}]},"documentation":{"id":1823,"nodeType":"StructuredDocumentation","src":"1094:149:19","text":" @dev Returns the current admin of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"f3b7dead","id":1856,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyAdmin","nameLocation":"1257:13:19","nodeType":"FunctionDefinition","parameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"proxy","nameLocation":"1300:5:19","nodeType":"VariableDeclaration","scope":1856,"src":"1271:34:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1825,"nodeType":"UserDefinedTypeName","pathNode":{"id":1824,"name":"ITransparentUpgradeableProxy","nameLocations":["1271:28:19"],"nodeType":"IdentifierPath","referencedDeclaration":1951,"src":"1271:28:19"},"referencedDeclaration":1951,"src":"1271:28:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"1270:36:19"},"returnParameters":{"id":1830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1856,"src":"1336:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1828,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1335:9:19"},"scope":1917,"src":"1248:420:19","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1873,"nodeType":"Block","src":"1947:44:19","statements":[{"expression":{"arguments":[{"id":1870,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"1975:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1867,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"1957:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1963:11:19","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":1938,"src":"1957:17:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1872,"nodeType":"ExpressionStatement","src":"1957:27:19"}]},"documentation":{"id":1857,"nodeType":"StructuredDocumentation","src":"1674:163:19","text":" @dev Changes the admin of `proxy` to `newAdmin`.\n Requirements:\n - This contract must be the current admin of `proxy`."},"functionSelector":"7eff275e","id":1874,"implemented":true,"kind":"function","modifiers":[{"id":1865,"kind":"modifierInvocation","modifierName":{"id":1864,"name":"onlyOwner","nameLocations":["1937:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"1937:9:19"},"nodeType":"ModifierInvocation","src":"1937:9:19"}],"name":"changeProxyAdmin","nameLocation":"1851:16:19","nodeType":"FunctionDefinition","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"proxy","nameLocation":"1897:5:19","nodeType":"VariableDeclaration","scope":1874,"src":"1868:34:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1859,"nodeType":"UserDefinedTypeName","pathNode":{"id":1858,"name":"ITransparentUpgradeableProxy","nameLocations":["1868:28:19"],"nodeType":"IdentifierPath","referencedDeclaration":1951,"src":"1868:28:19"},"referencedDeclaration":1951,"src":"1868:28:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"newAdmin","nameLocation":"1912:8:19","nodeType":"VariableDeclaration","scope":1874,"src":"1904:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1861,"name":"address","nodeType":"ElementaryTypeName","src":"1904:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1867:54:19"},"returnParameters":{"id":1866,"nodeType":"ParameterList","parameters":[],"src":"1947:0:19"},"scope":1917,"src":"1842:149:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1891,"nodeType":"Block","src":"2298:48:19","statements":[{"expression":{"arguments":[{"id":1888,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"2324:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1885,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"2308:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2314:9:19","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":1943,"src":"2308:15:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2308:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1890,"nodeType":"ExpressionStatement","src":"2308:31:19"}]},"documentation":{"id":1875,"nodeType":"StructuredDocumentation","src":"1997:194:19","text":" @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"99a88ec4","id":1892,"implemented":true,"kind":"function","modifiers":[{"id":1883,"kind":"modifierInvocation","modifierName":{"id":1882,"name":"onlyOwner","nameLocations":["2288:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"2288:9:19"},"nodeType":"ModifierInvocation","src":"2288:9:19"}],"name":"upgrade","nameLocation":"2205:7:19","nodeType":"FunctionDefinition","parameters":{"id":1881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1878,"mutability":"mutable","name":"proxy","nameLocation":"2242:5:19","nodeType":"VariableDeclaration","scope":1892,"src":"2213:34:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1877,"nodeType":"UserDefinedTypeName","pathNode":{"id":1876,"name":"ITransparentUpgradeableProxy","nameLocations":["2213:28:19"],"nodeType":"IdentifierPath","referencedDeclaration":1951,"src":"2213:28:19"},"referencedDeclaration":1951,"src":"2213:28:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":1880,"mutability":"mutable","name":"implementation","nameLocation":"2257:14:19","nodeType":"VariableDeclaration","scope":1892,"src":"2249:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2212:60:19"},"returnParameters":{"id":1884,"nodeType":"ParameterList","parameters":[],"src":"2298:0:19"},"scope":1917,"src":"2196:150:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1915,"nodeType":"Block","src":"2778:79:19","statements":[{"expression":{"arguments":[{"id":1911,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2829:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1912,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"2845:4:19","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":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1905,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"2788:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2794:16:19","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"2788:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1908,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2818:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2822:5:19","memberName":"value","nodeType":"MemberAccess","src":"2818:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2788:40:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,bytes memory) payable external"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2788:62:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1914,"nodeType":"ExpressionStatement","src":"2788:62:19"}]},"documentation":{"id":1893,"nodeType":"StructuredDocumentation","src":"2352:255:19","text":" @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n {TransparentUpgradeableProxy-upgradeToAndCall}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"9623609d","id":1916,"implemented":true,"kind":"function","modifiers":[{"id":1903,"kind":"modifierInvocation","modifierName":{"id":1902,"name":"onlyOwner","nameLocations":["2768:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"2768:9:19"},"nodeType":"ModifierInvocation","src":"2768:9:19"}],"name":"upgradeAndCall","nameLocation":"2621:14:19","nodeType":"FunctionDefinition","parameters":{"id":1901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"proxy","nameLocation":"2674:5:19","nodeType":"VariableDeclaration","scope":1916,"src":"2645:34:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1895,"nodeType":"UserDefinedTypeName","pathNode":{"id":1894,"name":"ITransparentUpgradeableProxy","nameLocations":["2645:28:19"],"nodeType":"IdentifierPath","referencedDeclaration":1951,"src":"2645:28:19"},"referencedDeclaration":1951,"src":"2645:28:19","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1951","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"implementation","nameLocation":"2697:14:19","nodeType":"VariableDeclaration","scope":1916,"src":"2689:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1900,"mutability":"mutable","name":"data","nameLocation":"2734:4:19","nodeType":"VariableDeclaration","scope":1916,"src":"2721:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1899,"name":"bytes","nodeType":"ElementaryTypeName","src":"2721:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2635:109:19"},"returnParameters":{"id":1904,"nodeType":"ParameterList","parameters":[],"src":"2778:0:19"},"scope":1917,"src":"2612:245:19","stateMutability":"payable","virtual":true,"visibility":"public"}],"scope":1918,"src":"450:2409:19","usedErrors":[],"usedEvents":[1107]}],"src":"116:2744:19"}},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"id":20,"ast":{"absolutePath":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[3260],"ERC1967Proxy":[1274],"ERC1967Upgrade":[1578],"IBeacon":[1706],"IERC1822Proxiable":[1237],"IERC1967":[1227],"ITransparentUpgradeableProxy":[1951],"Proxy":[1630],"StorageSlot":[3400],"TransparentUpgradeableProxy":[2240]},"id":2241,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1919,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"133:23:20"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","id":1920,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2241,"sourceUnit":1275,"src":"158:37:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1922,"name":"IERC1967","nameLocations":["679:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":1227,"src":"679:8:20"},"id":1923,"nodeType":"InheritanceSpecifier","src":"679:8:20"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"197:439:20","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and some of its functions are implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"id":1951,"linearizedBaseContracts":[1951,1227],"name":"ITransparentUpgradeableProxy","nameLocation":"647:28:20","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f851a440","id":1928,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nameLocation":"703:5:20","nodeType":"FunctionDefinition","parameters":{"id":1924,"nodeType":"ParameterList","parameters":[],"src":"708:2:20"},"returnParameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1928,"src":"734:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1925,"name":"address","nodeType":"ElementaryTypeName","src":"734:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"733:9:20"},"scope":1951,"src":"694:49:20","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5c60da1b","id":1933,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"758:14:20","nodeType":"FunctionDefinition","parameters":{"id":1929,"nodeType":"ParameterList","parameters":[],"src":"772:2:20"},"returnParameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1933,"src":"798:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1930,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"797:9:20"},"scope":1951,"src":"749:58:20","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8f283970","id":1938,"implemented":false,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"822:11:20","nodeType":"FunctionDefinition","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1938,"src":"834:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1934,"name":"address","nodeType":"ElementaryTypeName","src":"834:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"833:9:20"},"returnParameters":{"id":1937,"nodeType":"ParameterList","parameters":[],"src":"851:0:20"},"scope":1951,"src":"813:39:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3659cfe6","id":1943,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeTo","nameLocation":"867:9:20","nodeType":"FunctionDefinition","parameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1943,"src":"877:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:9:20"},"returnParameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"894:0:20"},"scope":1951,"src":"858:37:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4f1ef286","id":1950,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"910:16:20","nodeType":"FunctionDefinition","parameters":{"id":1948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1950,"src":"927:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1944,"name":"address","nodeType":"ElementaryTypeName","src":"927:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1950,"src":"936:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1946,"name":"bytes","nodeType":"ElementaryTypeName","src":"936:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"926:23:20"},"returnParameters":{"id":1949,"nodeType":"ParameterList","parameters":[],"src":"966:0:20"},"scope":1951,"src":"901:66:20","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2241,"src":"637:332:20","usedErrors":[],"usedEvents":[1214,1221,1226]},{"abstract":false,"baseContracts":[{"baseName":{"id":1953,"name":"ERC1967Proxy","nameLocations":["3429:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":1274,"src":"3429:12:20"},"id":1954,"nodeType":"InheritanceSpecifier","src":"3429:12:20"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1952,"nodeType":"StructuredDocumentation","src":"971:2417:20","text":" @dev This contract implements a proxy that is upgradeable by an admin.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches one of the admin functions exposed by the proxy itself.\n 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n \"admin cannot fallback to proxy target\".\n These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n to sudden errors when trying to call a function from the proxy implementation.\n Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler\n will not check that there are no selector conflicts, due to the note above. A selector clash between any new function\n and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could\n render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised."},"fullyImplemented":true,"id":2240,"linearizedBaseContracts":[2240,1274,1578,1227,1630],"name":"TransparentUpgradeableProxy","nameLocation":"3398:27:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":1972,"nodeType":"Block","src":"3763:37:20","statements":[{"expression":{"arguments":[{"id":1969,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"3786:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1968,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1486,"src":"3773:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3773:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1971,"nodeType":"ExpressionStatement","src":"3773:20:20"}]},"documentation":{"id":1955,"nodeType":"StructuredDocumentation","src":"3448:210:20","text":" @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"id":1973,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1964,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"3748:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1965,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"3756:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1966,"kind":"baseConstructorSpecifier","modifierName":{"id":1963,"name":"ERC1967Proxy","nameLocations":["3735:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":1274,"src":"3735:12:20"},"nodeType":"ModifierInvocation","src":"3735:27:20"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1957,"mutability":"mutable","name":"_logic","nameLocation":"3683:6:20","nodeType":"VariableDeclaration","scope":1973,"src":"3675:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1956,"name":"address","nodeType":"ElementaryTypeName","src":"3675:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1959,"mutability":"mutable","name":"admin_","nameLocation":"3699:6:20","nodeType":"VariableDeclaration","scope":1973,"src":"3691:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1958,"name":"address","nodeType":"ElementaryTypeName","src":"3691:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1961,"mutability":"mutable","name":"_data","nameLocation":"3720:5:20","nodeType":"VariableDeclaration","scope":1973,"src":"3707:18:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1960,"name":"bytes","nodeType":"ElementaryTypeName","src":"3707:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3674:52:20"},"returnParameters":{"id":1967,"nodeType":"ParameterList","parameters":[],"src":"3763:0:20"},"scope":2240,"src":"3663:137:20","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1988,"nodeType":"Block","src":"4151:115:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1976,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4165:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4169:6:20","memberName":"sender","nodeType":"MemberAccess","src":"4165:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1978,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"4179:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4179:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4165:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1986,"nodeType":"Block","src":"4224:36:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1983,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[2082],"referencedDeclaration":2082,"src":"4238:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1985,"nodeType":"ExpressionStatement","src":"4238:11:20"}]},"id":1987,"nodeType":"IfStatement","src":"4161:99:20","trueBody":{"id":1982,"nodeType":"Block","src":"4192:26:20","statements":[{"id":1981,"nodeType":"PlaceholderStatement","src":"4206:1:20"}]}}]},"documentation":{"id":1974,"nodeType":"StructuredDocumentation","src":"3806:321:20","text":" @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the\n implementation provides a function with the same selector."},"id":1989,"name":"ifAdmin","nameLocation":"4141:7:20","nodeType":"ModifierDefinition","parameters":{"id":1975,"nodeType":"ParameterList","parameters":[],"src":"4148:2:20"},"src":"4132:134:20","virtual":false,"visibility":"internal"},{"baseFunctions":[1608],"body":{"id":2081,"nodeType":"Block","src":"4454:1055:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1994,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4468:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4472:6:20","memberName":"sender","nodeType":"MemberAccess","src":"4468:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1996,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"4482:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4482:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4468:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2079,"nodeType":"Block","src":"5461:42:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2074,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5475:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$2240_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5481:9:20","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"5475:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5475:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2078,"nodeType":"ExpressionStatement","src":"5475:17:20"}]},"id":2080,"nodeType":"IfStatement","src":"4464:1039:20","trueBody":{"id":2073,"nodeType":"Block","src":"4495:960:20","statements":[{"assignments":[2000],"declarations":[{"constant":false,"id":2000,"mutability":"mutable","name":"ret","nameLocation":"4522:3:20","nodeType":"VariableDeclaration","scope":2073,"src":"4509:16:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1999,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2001,"nodeType":"VariableDeclarationStatement","src":"4509:16:20"},{"assignments":[2003],"declarations":[{"constant":false,"id":2003,"mutability":"mutable","name":"selector","nameLocation":"4546:8:20","nodeType":"VariableDeclaration","scope":2073,"src":"4539:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2002,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4539:6:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2006,"initialValue":{"expression":{"id":2004,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4557:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4561:3:20","memberName":"sig","nodeType":"MemberAccess","src":"4557:7:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"4539:25:20"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2007,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"4582:8:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2008,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"4594:28:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1951_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4623:9:20","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":1943,"src":"4594:38:20","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeTo(address)"}},"id":2010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4633:8:20","memberName":"selector","nodeType":"MemberAccess","src":"4594:47:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4582:59:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2018,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"4712:8:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2019,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"4724:28:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1951_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":2020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4753:16:20","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"4724:45:20","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes memory) payable"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4770:8:20","memberName":"selector","nodeType":"MemberAccess","src":"4724:54:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4712:66:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2029,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"4856:8:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2030,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"4868:28:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1951_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":2031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4897:11:20","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":1938,"src":"4868:40:20","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$returns$__$","typeString":"function ITransparentUpgradeableProxy.changeAdmin(address)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4909:8:20","memberName":"selector","nodeType":"MemberAccess","src":"4868:49:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4856:61:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2040,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"4990:8:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2041,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"5002:28:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1951_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5031:5:20","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":1928,"src":"5002:34:20","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function ITransparentUpgradeableProxy.admin() view returns (address)"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5037:8:20","memberName":"selector","nodeType":"MemberAccess","src":"5002:43:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4990:55:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2051,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"5112:8:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2052,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"5124:28:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1951_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5153:14:20","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"5124:43:20","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function ITransparentUpgradeableProxy.implementation() view returns (address)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5168:8:20","memberName":"selector","nodeType":"MemberAccess","src":"5124:52:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5112:64:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2066,"nodeType":"Block","src":"5248:109:20","statements":[{"expression":{"arguments":[{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","id":2063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5273:68:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"id":2062,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5266:6:20","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:76:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2065,"nodeType":"ExpressionStatement","src":"5266:76:20"}]},"id":2067,"nodeType":"IfStatement","src":"5108:249:20","trueBody":{"id":2061,"nodeType":"Block","src":"5178:64:20","statements":[{"expression":{"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2056,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"5196:3:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2057,"name":"_dispatchImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"5202:23:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$","typeString":"function () returns (bytes memory)"}},"id":2058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5202:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5196:31:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2060,"nodeType":"ExpressionStatement","src":"5196:31:20"}]}},"id":2068,"nodeType":"IfStatement","src":"4986:371:20","trueBody":{"id":2050,"nodeType":"Block","src":"5047:55:20","statements":[{"expression":{"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2045,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"5065:3:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2046,"name":"_dispatchAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5071:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$","typeString":"function () returns (bytes memory)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5071:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5065:22:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2049,"nodeType":"ExpressionStatement","src":"5065:22:20"}]}},"id":2069,"nodeType":"IfStatement","src":"4852:505:20","trueBody":{"id":2039,"nodeType":"Block","src":"4919:61:20","statements":[{"expression":{"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2034,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"4937:3:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2035,"name":"_dispatchChangeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4943:20:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$","typeString":"function () returns (bytes memory)"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4943:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4937:28:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2038,"nodeType":"ExpressionStatement","src":"4937:28:20"}]}},"id":2070,"nodeType":"IfStatement","src":"4708:649:20","trueBody":{"id":2028,"nodeType":"Block","src":"4780:66:20","statements":[{"expression":{"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2023,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"4798:3:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2024,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"4804:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$","typeString":"function () returns (bytes memory)"}},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4804:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4798:33:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2027,"nodeType":"ExpressionStatement","src":"4798:33:20"}]}},"id":2071,"nodeType":"IfStatement","src":"4578:779:20","trueBody":{"id":2017,"nodeType":"Block","src":"4643:59:20","statements":[{"expression":{"id":2015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2012,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"4661:3:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2013,"name":"_dispatchUpgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"4667:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$","typeString":"function () returns (bytes memory)"}},"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4667:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4661:26:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2016,"nodeType":"ExpressionStatement","src":"4661:26:20"}]}},{"AST":{"nativeSrc":"5379:66:20","nodeType":"YulBlock","src":"5379:66:20","statements":[{"expression":{"arguments":[{"arguments":[{"name":"ret","nativeSrc":"5408:3:20","nodeType":"YulIdentifier","src":"5408:3:20"},{"kind":"number","nativeSrc":"5413:4:20","nodeType":"YulLiteral","src":"5413:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5404:3:20","nodeType":"YulIdentifier","src":"5404:3:20"},"nativeSrc":"5404:14:20","nodeType":"YulFunctionCall","src":"5404:14:20"},{"arguments":[{"name":"ret","nativeSrc":"5426:3:20","nodeType":"YulIdentifier","src":"5426:3:20"}],"functionName":{"name":"mload","nativeSrc":"5420:5:20","nodeType":"YulIdentifier","src":"5420:5:20"},"nativeSrc":"5420:10:20","nodeType":"YulFunctionCall","src":"5420:10:20"}],"functionName":{"name":"return","nativeSrc":"5397:6:20","nodeType":"YulIdentifier","src":"5397:6:20"},"nativeSrc":"5397:34:20","nodeType":"YulFunctionCall","src":"5397:34:20"},"nativeSrc":"5397:34:20","nodeType":"YulExpressionStatement","src":"5397:34:20"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2000,"isOffset":false,"isSlot":false,"src":"5408:3:20","valueSize":1},{"declaration":2000,"isOffset":false,"isSlot":false,"src":"5426:3:20","valueSize":1}],"id":2072,"nodeType":"InlineAssembly","src":"5370:75:20"}]}}]},"documentation":{"id":1990,"nodeType":"StructuredDocumentation","src":"4272:130:20","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior"},"id":2082,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"4416:9:20","nodeType":"FunctionDefinition","overrides":{"id":1992,"nodeType":"OverrideSpecifier","overrides":[],"src":"4445:8:20"},"parameters":{"id":1991,"nodeType":"ParameterList","parameters":[],"src":"4425:2:20"},"returnParameters":{"id":1993,"nodeType":"ParameterList","parameters":[],"src":"4454:0:20"},"scope":2240,"src":"4407:1102:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2101,"nodeType":"Block","src":"5917:108:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2088,"name":"_requireZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"5927:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5927:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2090,"nodeType":"ExpressionStatement","src":"5927:19:20"},{"assignments":[2092],"declarations":[{"constant":false,"id":2092,"mutability":"mutable","name":"admin","nameLocation":"5965:5:20","nodeType":"VariableDeclaration","scope":2101,"src":"5957:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2091,"name":"address","nodeType":"ElementaryTypeName","src":"5957:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2095,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2093,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"5973:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5973:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5957:27:20"},{"expression":{"arguments":[{"id":2098,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"6012:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2096,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6001:3:20","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6005:6:20","memberName":"encode","nodeType":"MemberAccess","src":"6001:10:20","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6001:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2087,"id":2100,"nodeType":"Return","src":"5994:24:20"}]},"documentation":{"id":2083,"nodeType":"StructuredDocumentation","src":"5515:340:20","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":2102,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchAdmin","nameLocation":"5869:14:20","nodeType":"FunctionDefinition","parameters":{"id":2084,"nodeType":"ParameterList","parameters":[],"src":"5883:2:20"},"returnParameters":{"id":2087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2102,"src":"5903:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2085,"name":"bytes","nodeType":"ElementaryTypeName","src":"5903:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5902:14:20"},"scope":2240,"src":"5860:165:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2121,"nodeType":"Block","src":"6451:132:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2108,"name":"_requireZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"6461:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6461:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2110,"nodeType":"ExpressionStatement","src":"6461:19:20"},{"assignments":[2112],"declarations":[{"constant":false,"id":2112,"mutability":"mutable","name":"implementation","nameLocation":"6499:14:20","nodeType":"VariableDeclaration","scope":2121,"src":"6491:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2111,"name":"address","nodeType":"ElementaryTypeName","src":"6491:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2115,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2113,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[1273],"referencedDeclaration":1273,"src":"6516:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6491:42:20"},{"expression":{"arguments":[{"id":2118,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"6561:14:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2116,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6550:3:20","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6554:6:20","memberName":"encode","nodeType":"MemberAccess","src":"6550:10:20","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2107,"id":2120,"nodeType":"Return","src":"6543:33:20"}]},"documentation":{"id":2103,"nodeType":"StructuredDocumentation","src":"6031:349:20","text":" @dev Returns the current implementation.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"id":2122,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchImplementation","nameLocation":"6394:23:20","nodeType":"FunctionDefinition","parameters":{"id":2104,"nodeType":"ParameterList","parameters":[],"src":"6417:2:20"},"returnParameters":{"id":2107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2122,"src":"6437:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2105,"name":"bytes","nodeType":"ElementaryTypeName","src":"6437:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6436:14:20"},"scope":2240,"src":"6385:198:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2150,"nodeType":"Block","src":"6757:153:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2128,"name":"_requireZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"6767:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6767:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2130,"nodeType":"ExpressionStatement","src":"6767:19:20"},{"assignments":[2132],"declarations":[{"constant":false,"id":2132,"mutability":"mutable","name":"newAdmin","nameLocation":"6805:8:20","nodeType":"VariableDeclaration","scope":2150,"src":"6797:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2131,"name":"address","nodeType":"ElementaryTypeName","src":"6797:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2143,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":2135,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6827:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6831:4:20","memberName":"data","nodeType":"MemberAccess","src":"6827:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6827:12:20","startExpression":{"hexValue":"34","id":2137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6836:1:20","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":2140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6842:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2139,"name":"address","nodeType":"ElementaryTypeName","src":"6842:7:20","typeDescriptions":{}}}],"id":2141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6841:9:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":2133,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6816:3:20","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6820:6:20","memberName":"decode","nodeType":"MemberAccess","src":"6816:10:20","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6816:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"6797:54:20"},{"expression":{"arguments":[{"id":2145,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"6874:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2144,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1486,"src":"6861:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6861:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2147,"nodeType":"ExpressionStatement","src":"6861:22:20"},{"expression":{"hexValue":"","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6901:2:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2127,"id":2149,"nodeType":"Return","src":"6894:9:20"}]},"documentation":{"id":2123,"nodeType":"StructuredDocumentation","src":"6589:100:20","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":2151,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchChangeAdmin","nameLocation":"6703:20:20","nodeType":"FunctionDefinition","parameters":{"id":2124,"nodeType":"ParameterList","parameters":[],"src":"6723:2:20"},"returnParameters":{"id":2127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2151,"src":"6743:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2125,"name":"bytes","nodeType":"ElementaryTypeName","src":"6743:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6742:14:20"},"scope":2240,"src":"6694:216:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2184,"nodeType":"Block","src":"7046:194:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2157,"name":"_requireZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"7056:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7056:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2159,"nodeType":"ExpressionStatement","src":"7056:19:20"},{"assignments":[2161],"declarations":[{"constant":false,"id":2161,"mutability":"mutable","name":"newImplementation","nameLocation":"7094:17:20","nodeType":"VariableDeclaration","scope":2184,"src":"7086:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2160,"name":"address","nodeType":"ElementaryTypeName","src":"7086:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2172,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":2164,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7125:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7129:4:20","memberName":"data","nodeType":"MemberAccess","src":"7125:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7125:12:20","startExpression":{"hexValue":"34","id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7134:1:20","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":2169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7140:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2168,"name":"address","nodeType":"ElementaryTypeName","src":"7140:7:20","typeDescriptions":{}}}],"id":2170,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7139:9:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":2162,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7114:3:20","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7118:6:20","memberName":"decode","nodeType":"MemberAccess","src":"7114:10:20","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7114:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"7086:63:20"},{"expression":{"arguments":[{"id":2174,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"7177:17:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"","id":2177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7202:2:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7196:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2175,"name":"bytes","nodeType":"ElementaryTypeName","src":"7196:5:20","typeDescriptions":{}}},"id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7196:9:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7207:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2173,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"7159:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7159:54:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2181,"nodeType":"ExpressionStatement","src":"7159:54:20"},{"expression":{"hexValue":"","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7231:2:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2156,"id":2183,"nodeType":"Return","src":"7224:9:20"}]},"documentation":{"id":2152,"nodeType":"StructuredDocumentation","src":"6916:64:20","text":" @dev Upgrade the implementation of the proxy."},"id":2185,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeTo","nameLocation":"6994:18:20","nodeType":"FunctionDefinition","parameters":{"id":2153,"nodeType":"ParameterList","parameters":[],"src":"7012:2:20"},"returnParameters":{"id":2156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2185,"src":"7032:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2154,"name":"bytes","nodeType":"ElementaryTypeName","src":"7032:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7031:14:20"},"scope":2240,"src":"6985:255:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2216,"nodeType":"Block","src":"7592:186:20","statements":[{"assignments":[2192,2194],"declarations":[{"constant":false,"id":2192,"mutability":"mutable","name":"newImplementation","nameLocation":"7611:17:20","nodeType":"VariableDeclaration","scope":2216,"src":"7603:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2191,"name":"address","nodeType":"ElementaryTypeName","src":"7603:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2194,"mutability":"mutable","name":"data","nameLocation":"7643:4:20","nodeType":"VariableDeclaration","scope":2216,"src":"7630:17:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2193,"name":"bytes","nodeType":"ElementaryTypeName","src":"7630:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2207,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":2197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7662:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7666:4:20","memberName":"data","nodeType":"MemberAccess","src":"7662:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7662:12:20","startExpression":{"hexValue":"34","id":2199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7671:1:20","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":2202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7677:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2201,"name":"address","nodeType":"ElementaryTypeName","src":"7677:7:20","typeDescriptions":{}}},{"id":2204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7686:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2203,"name":"bytes","nodeType":"ElementaryTypeName","src":"7686:5:20","typeDescriptions":{}}}],"id":2205,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7676:16:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":2195,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7651:3:20","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7655:6:20","memberName":"decode","nodeType":"MemberAccess","src":"7651:10:20","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7651:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7602:91:20"},{"expression":{"arguments":[{"id":2209,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2192,"src":"7721:17:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2210,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"7740:4:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7746:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2208,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"7703:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7703:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2213,"nodeType":"ExpressionStatement","src":"7703:48:20"},{"expression":{"hexValue":"","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7769:2:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2190,"id":2215,"nodeType":"Return","src":"7762:9:20"}]},"documentation":{"id":2186,"nodeType":"StructuredDocumentation","src":"7246:273:20","text":" @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n proxied contract."},"id":2217,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"7533:25:20","nodeType":"FunctionDefinition","parameters":{"id":2187,"nodeType":"ParameterList","parameters":[],"src":"7558:2:20"},"returnParameters":{"id":2190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2217,"src":"7578:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2188,"name":"bytes","nodeType":"ElementaryTypeName","src":"7578:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7577:14:20"},"scope":2240,"src":"7524:254:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2226,"nodeType":"Block","src":"7989:35:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2223,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"8006:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8006:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2222,"id":2225,"nodeType":"Return","src":"7999:18:20"}]},"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"7784:142:20","text":" @dev Returns the current admin.\n CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead."},"id":2227,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nameLocation":"7940:6:20","nodeType":"FunctionDefinition","parameters":{"id":2219,"nodeType":"ParameterList","parameters":[],"src":"7946:2:20"},"returnParameters":{"id":2222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2227,"src":"7980:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2220,"name":"address","nodeType":"ElementaryTypeName","src":"7980:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7979:9:20"},"scope":2240,"src":"7931:93:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2238,"nodeType":"Block","src":"8298:40:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2232,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8316:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8320:5:20","memberName":"value","nodeType":"MemberAccess","src":"8316:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8329:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8316:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8308:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8308:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2237,"nodeType":"ExpressionStatement","src":"8308:23:20"}]},"documentation":{"id":2228,"nodeType":"StructuredDocumentation","src":"8030:226:20","text":" @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to\n emulate some proxy functions being non-payable while still allowing value to pass through."},"id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"_requireZeroValue","nameLocation":"8270:17:20","nodeType":"FunctionDefinition","parameters":{"id":2229,"nodeType":"ParameterList","parameters":[],"src":"8287:2:20"},"returnParameters":{"id":2230,"nodeType":"ParameterList","parameters":[],"src":"8298:0:20"},"scope":2240,"src":"8261:77:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":2241,"src":"3389:4951:20","usedErrors":[],"usedEvents":[1214,1221,1226]}],"src":"133:8208:20"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"id":21,"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"IERC20":[2905],"IERC20Metadata":[2930]},"id":2828,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2242,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:21"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":2243,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2828,"sourceUnit":2906,"src":"130:22:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":2244,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2828,"sourceUnit":2931,"src":"153:41:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":2245,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2828,"sourceUnit":3291,"src":"195:33:21","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2247,"name":"Context","nameLocations":["1550:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":3290,"src":"1550:7:21"},"id":2248,"nodeType":"InheritanceSpecifier","src":"1550:7:21"},{"baseName":{"id":2249,"name":"IERC20","nameLocations":["1559:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":2905,"src":"1559:6:21"},"id":2250,"nodeType":"InheritanceSpecifier","src":"1559:6:21"},{"baseName":{"id":2251,"name":"IERC20Metadata","nameLocations":["1567:14:21"],"nodeType":"IdentifierPath","referencedDeclaration":2930,"src":"1567:14:21"},"id":2252,"nodeType":"InheritanceSpecifier","src":"1567:14:21"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":2246,"nodeType":"StructuredDocumentation","src":"230:1301:21","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":2827,"linearizedBaseContracts":[2827,2930,2905,3290],"name":"ERC20","nameLocation":"1541:5:21","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2256,"mutability":"mutable","name":"_balances","nameLocation":"1624:9:21","nodeType":"VariableDeclaration","scope":2827,"src":"1588:45:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2255,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1588:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2262,"mutability":"mutable","name":"_allowances","nameLocation":"1696:11:21","nodeType":"VariableDeclaration","scope":2827,"src":"1640:67:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":2261,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2257,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:47:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2260,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2258,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1659:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2259,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":2264,"mutability":"mutable","name":"_totalSupply","nameLocation":"1730:12:21","nodeType":"VariableDeclaration","scope":2827,"src":"1714:28:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2263,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2266,"mutability":"mutable","name":"_name","nameLocation":"1764:5:21","nodeType":"VariableDeclaration","scope":2827,"src":"1749:20:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2265,"name":"string","nodeType":"ElementaryTypeName","src":"1749:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2268,"mutability":"mutable","name":"_symbol","nameLocation":"1790:7:21","nodeType":"VariableDeclaration","scope":2827,"src":"1775:22:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2267,"name":"string","nodeType":"ElementaryTypeName","src":"1775:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":2284,"nodeType":"Block","src":"2036:57:21","statements":[{"expression":{"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2276,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"2046:5:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2277,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"2054:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2046:13:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2279,"nodeType":"ExpressionStatement","src":"2046:13:21"},{"expression":{"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2280,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"2069:7:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2281,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"2079:7:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2069:17:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2283,"nodeType":"ExpressionStatement","src":"2069:17:21"}]},"documentation":{"id":2269,"nodeType":"StructuredDocumentation","src":"1804:171:21","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":2285,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2271,"mutability":"mutable","name":"name_","nameLocation":"2006:5:21","nodeType":"VariableDeclaration","scope":2285,"src":"1992:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2270,"name":"string","nodeType":"ElementaryTypeName","src":"1992:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2273,"mutability":"mutable","name":"symbol_","nameLocation":"2027:7:21","nodeType":"VariableDeclaration","scope":2285,"src":"2013:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2272,"name":"string","nodeType":"ElementaryTypeName","src":"2013:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1991:44:21"},"returnParameters":{"id":2275,"nodeType":"ParameterList","parameters":[],"src":"2036:0:21"},"scope":2827,"src":"1980:113:21","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2917],"body":{"id":2294,"nodeType":"Block","src":"2227:29:21","statements":[{"expression":{"id":2292,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"2244:5:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2291,"id":2293,"nodeType":"Return","src":"2237:12:21"}]},"documentation":{"id":2286,"nodeType":"StructuredDocumentation","src":"2099:54:21","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2167:4:21","nodeType":"FunctionDefinition","overrides":{"id":2288,"nodeType":"OverrideSpecifier","overrides":[],"src":"2194:8:21"},"parameters":{"id":2287,"nodeType":"ParameterList","parameters":[],"src":"2171:2:21"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2295,"src":"2212:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2289,"name":"string","nodeType":"ElementaryTypeName","src":"2212:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2211:15:21"},"scope":2827,"src":"2158:98:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2923],"body":{"id":2304,"nodeType":"Block","src":"2440:31:21","statements":[{"expression":{"id":2302,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"2457:7:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2301,"id":2303,"nodeType":"Return","src":"2450:14:21"}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"2262:102:21","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":2305,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2378:6:21","nodeType":"FunctionDefinition","overrides":{"id":2298,"nodeType":"OverrideSpecifier","overrides":[],"src":"2407:8:21"},"parameters":{"id":2297,"nodeType":"ParameterList","parameters":[],"src":"2384:2:21"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2305,"src":"2425:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2299,"name":"string","nodeType":"ElementaryTypeName","src":"2425:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2424:15:21"},"scope":2827,"src":"2369:102:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2929],"body":{"id":2314,"nodeType":"Block","src":"3169:26:21","statements":[{"expression":{"hexValue":"3138","id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3186:2:21","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":2311,"id":2313,"nodeType":"Return","src":"3179:9:21"}]},"documentation":{"id":2306,"nodeType":"StructuredDocumentation","src":"2477:622:21","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":2315,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3113:8:21","nodeType":"FunctionDefinition","overrides":{"id":2308,"nodeType":"OverrideSpecifier","overrides":[],"src":"3144:8:21"},"parameters":{"id":2307,"nodeType":"ParameterList","parameters":[],"src":"3121:2:21"},"returnParameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2315,"src":"3162:5:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2309,"name":"uint8","nodeType":"ElementaryTypeName","src":"3162:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3161:7:21"},"scope":2827,"src":"3104:91:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2854],"body":{"id":2324,"nodeType":"Block","src":"3325:36:21","statements":[{"expression":{"id":2322,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"3342:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2321,"id":2323,"nodeType":"Return","src":"3335:19:21"}]},"documentation":{"id":2316,"nodeType":"StructuredDocumentation","src":"3201:49:21","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":2325,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3264:11:21","nodeType":"FunctionDefinition","overrides":{"id":2318,"nodeType":"OverrideSpecifier","overrides":[],"src":"3298:8:21"},"parameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"3275:2:21"},"returnParameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2325,"src":"3316:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2319,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:21"},"scope":2827,"src":"3255:106:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2862],"body":{"id":2338,"nodeType":"Block","src":"3502:42:21","statements":[{"expression":{"baseExpression":{"id":2334,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"3519:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2336,"indexExpression":{"id":2335,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"3529:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3519:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2333,"id":2337,"nodeType":"Return","src":"3512:25:21"}]},"documentation":{"id":2326,"nodeType":"StructuredDocumentation","src":"3367:47:21","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":2339,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3428:9:21","nodeType":"FunctionDefinition","overrides":{"id":2330,"nodeType":"OverrideSpecifier","overrides":[],"src":"3475:8:21"},"parameters":{"id":2329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2328,"mutability":"mutable","name":"account","nameLocation":"3446:7:21","nodeType":"VariableDeclaration","scope":2339,"src":"3438:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2327,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3437:17:21"},"returnParameters":{"id":2333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"3493:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2331,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:9:21"},"scope":2827,"src":"3419:125:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2872],"body":{"id":2363,"nodeType":"Block","src":"3825:104:21","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"owner","nameLocation":"3843:5:21","nodeType":"VariableDeclaration","scope":2363,"src":"3835:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2350,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2354,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2352,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"3851:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3851:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3835:28:21"},{"expression":{"arguments":[{"id":2356,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"3883:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2357,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"3890:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2358,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2344,"src":"3894:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2355,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"3873:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3873:28:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2360,"nodeType":"ExpressionStatement","src":"3873:28:21"},{"expression":{"hexValue":"74727565","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3918:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2349,"id":2362,"nodeType":"Return","src":"3911:11:21"}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"3550:185:21","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":2364,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3749:8:21","nodeType":"FunctionDefinition","overrides":{"id":2346,"nodeType":"OverrideSpecifier","overrides":[],"src":"3801:8:21"},"parameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"to","nameLocation":"3766:2:21","nodeType":"VariableDeclaration","scope":2364,"src":"3758:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2341,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2344,"mutability":"mutable","name":"amount","nameLocation":"3778:6:21","nodeType":"VariableDeclaration","scope":2364,"src":"3770:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2343,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3757:28:21"},"returnParameters":{"id":2349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2364,"src":"3819:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2347,"name":"bool","nodeType":"ElementaryTypeName","src":"3819:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3818:6:21"},"scope":2827,"src":"3740:189:21","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2882],"body":{"id":2381,"nodeType":"Block","src":"4085:51:21","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2375,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2262,"src":"4102:11:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2377,"indexExpression":{"id":2376,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"4114:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:18:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2379,"indexExpression":{"id":2378,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"4121:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2374,"id":2380,"nodeType":"Return","src":"4095:34:21"}]},"documentation":{"id":2365,"nodeType":"StructuredDocumentation","src":"3935:47:21","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":2382,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3996:9:21","nodeType":"FunctionDefinition","overrides":{"id":2371,"nodeType":"OverrideSpecifier","overrides":[],"src":"4058:8:21"},"parameters":{"id":2370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"owner","nameLocation":"4014:5:21","nodeType":"VariableDeclaration","scope":2382,"src":"4006:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2366,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2369,"mutability":"mutable","name":"spender","nameLocation":"4029:7:21","nodeType":"VariableDeclaration","scope":2382,"src":"4021:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2368,"name":"address","nodeType":"ElementaryTypeName","src":"4021:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4005:32:21"},"returnParameters":{"id":2374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2382,"src":"4076:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2372,"name":"uint256","nodeType":"ElementaryTypeName","src":"4076:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4075:9:21"},"scope":2827,"src":"3987:149:21","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2892],"body":{"id":2406,"nodeType":"Block","src":"4533:108:21","statements":[{"assignments":[2394],"declarations":[{"constant":false,"id":2394,"mutability":"mutable","name":"owner","nameLocation":"4551:5:21","nodeType":"VariableDeclaration","scope":2406,"src":"4543:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2393,"name":"address","nodeType":"ElementaryTypeName","src":"4543:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2397,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2395,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"4559:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4543:28:21"},{"expression":{"arguments":[{"id":2399,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"4590:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2400,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2385,"src":"4597:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2401,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"4606:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2398,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4581:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2403,"nodeType":"ExpressionStatement","src":"4581:32:21"},{"expression":{"hexValue":"74727565","id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4630:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2392,"id":2405,"nodeType":"Return","src":"4623:11:21"}]},"documentation":{"id":2383,"nodeType":"StructuredDocumentation","src":"4142:297:21","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":2407,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4453:7:21","nodeType":"FunctionDefinition","overrides":{"id":2389,"nodeType":"OverrideSpecifier","overrides":[],"src":"4509:8:21"},"parameters":{"id":2388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2385,"mutability":"mutable","name":"spender","nameLocation":"4469:7:21","nodeType":"VariableDeclaration","scope":2407,"src":"4461:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2384,"name":"address","nodeType":"ElementaryTypeName","src":"4461:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2387,"mutability":"mutable","name":"amount","nameLocation":"4486:6:21","nodeType":"VariableDeclaration","scope":2407,"src":"4478:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2386,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:33:21"},"returnParameters":{"id":2392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2407,"src":"4527:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2390,"name":"bool","nodeType":"ElementaryTypeName","src":"4527:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4526:6:21"},"scope":2827,"src":"4444:197:21","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2904],"body":{"id":2439,"nodeType":"Block","src":"5306:153:21","statements":[{"assignments":[2421],"declarations":[{"constant":false,"id":2421,"mutability":"mutable","name":"spender","nameLocation":"5324:7:21","nodeType":"VariableDeclaration","scope":2439,"src":"5316:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2420,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2424,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2422,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"5334:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5316:30:21"},{"expression":{"arguments":[{"id":2426,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"5372:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2427,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2421,"src":"5378:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2428,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"5387:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2425,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"5356:15:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5356:38:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"ExpressionStatement","src":"5356:38:21"},{"expression":{"arguments":[{"id":2432,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"5414:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2433,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"5420:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2434,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"5424:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2431,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"5404:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5404:27:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2436,"nodeType":"ExpressionStatement","src":"5404:27:21"},{"expression":{"hexValue":"74727565","id":2437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5448:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2419,"id":2438,"nodeType":"Return","src":"5441:11:21"}]},"documentation":{"id":2408,"nodeType":"StructuredDocumentation","src":"4647:551:21","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":2440,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5212:12:21","nodeType":"FunctionDefinition","overrides":{"id":2416,"nodeType":"OverrideSpecifier","overrides":[],"src":"5282:8:21"},"parameters":{"id":2415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2410,"mutability":"mutable","name":"from","nameLocation":"5233:4:21","nodeType":"VariableDeclaration","scope":2440,"src":"5225:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2409,"name":"address","nodeType":"ElementaryTypeName","src":"5225:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2412,"mutability":"mutable","name":"to","nameLocation":"5247:2:21","nodeType":"VariableDeclaration","scope":2440,"src":"5239:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2411,"name":"address","nodeType":"ElementaryTypeName","src":"5239:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2414,"mutability":"mutable","name":"amount","nameLocation":"5259:6:21","nodeType":"VariableDeclaration","scope":2440,"src":"5251:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2413,"name":"uint256","nodeType":"ElementaryTypeName","src":"5251:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5224:42:21"},"returnParameters":{"id":2419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2440,"src":"5300:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2417,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5299:6:21"},"scope":2827,"src":"5203:256:21","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2468,"nodeType":"Block","src":"5948:140:21","statements":[{"assignments":[2451],"declarations":[{"constant":false,"id":2451,"mutability":"mutable","name":"owner","nameLocation":"5966:5:21","nodeType":"VariableDeclaration","scope":2468,"src":"5958:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2450,"name":"address","nodeType":"ElementaryTypeName","src":"5958:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2454,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2452,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"5974:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5974:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5958:28:21"},{"expression":{"arguments":[{"id":2456,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"6005:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2457,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"6012:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2459,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"6031:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2460,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"6038:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2458,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"6021:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6021:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2462,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2445,"src":"6049:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:38:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2455,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"5996:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:64:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2465,"nodeType":"ExpressionStatement","src":"5996:64:21"},{"expression":{"hexValue":"74727565","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6077:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2449,"id":2467,"nodeType":"Return","src":"6070:11:21"}]},"documentation":{"id":2441,"nodeType":"StructuredDocumentation","src":"5465:384:21","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":2469,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5863:17:21","nodeType":"FunctionDefinition","parameters":{"id":2446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"mutability":"mutable","name":"spender","nameLocation":"5889:7:21","nodeType":"VariableDeclaration","scope":2469,"src":"5881:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2442,"name":"address","nodeType":"ElementaryTypeName","src":"5881:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2445,"mutability":"mutable","name":"addedValue","nameLocation":"5906:10:21","nodeType":"VariableDeclaration","scope":2469,"src":"5898:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2444,"name":"uint256","nodeType":"ElementaryTypeName","src":"5898:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5880:37:21"},"returnParameters":{"id":2449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2469,"src":"5942:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2447,"name":"bool","nodeType":"ElementaryTypeName","src":"5942:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5941:6:21"},"scope":2827,"src":"5854:234:21","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2509,"nodeType":"Block","src":"6674:328:21","statements":[{"assignments":[2480],"declarations":[{"constant":false,"id":2480,"mutability":"mutable","name":"owner","nameLocation":"6692:5:21","nodeType":"VariableDeclaration","scope":2509,"src":"6684:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2479,"name":"address","nodeType":"ElementaryTypeName","src":"6684:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2483,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2481,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"6700:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6700:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6684:28:21"},{"assignments":[2485],"declarations":[{"constant":false,"id":2485,"mutability":"mutable","name":"currentAllowance","nameLocation":"6730:16:21","nodeType":"VariableDeclaration","scope":2509,"src":"6722:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2484,"name":"uint256","nodeType":"ElementaryTypeName","src":"6722:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2490,"initialValue":{"arguments":[{"id":2487,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"6759:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2488,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"6766:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2486,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"6749:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6722:52:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2492,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"6792:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2493,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"6812:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6792:35:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":2495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6829:39:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":2491,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6784:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6784:85:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2497,"nodeType":"ExpressionStatement","src":"6784:85:21"},{"id":2506,"nodeType":"UncheckedBlock","src":"6879:95:21","statements":[{"expression":{"arguments":[{"id":2499,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"6912:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2500,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"6919:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2501,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"6928:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2502,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"6947:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6928:34:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2498,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"6903:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:60:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2505,"nodeType":"ExpressionStatement","src":"6903:60:21"}]},{"expression":{"hexValue":"74727565","id":2507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6991:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2478,"id":2508,"nodeType":"Return","src":"6984:11:21"}]},"documentation":{"id":2470,"nodeType":"StructuredDocumentation","src":"6094:476:21","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":2510,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6584:17:21","nodeType":"FunctionDefinition","parameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2472,"mutability":"mutable","name":"spender","nameLocation":"6610:7:21","nodeType":"VariableDeclaration","scope":2510,"src":"6602:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"6602:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2474,"mutability":"mutable","name":"subtractedValue","nameLocation":"6627:15:21","nodeType":"VariableDeclaration","scope":2510,"src":"6619:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6601:42:21"},"returnParameters":{"id":2478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2510,"src":"6668:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2476,"name":"bool","nodeType":"ElementaryTypeName","src":"6668:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6667:6:21"},"scope":2827,"src":"6575:427:21","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2586,"nodeType":"Block","src":"7534:710:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2521,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"7552:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7568:1:21","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":2523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7560:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2522,"name":"address","nodeType":"ElementaryTypeName","src":"7560:7:21","typeDescriptions":{}}},"id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7552:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":2527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7572:39:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":2520,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7544:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7544:68:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"7544:68:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2531,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"7630:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7644:1:21","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":2533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7636:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2532,"name":"address","nodeType":"ElementaryTypeName","src":"7636:7:21","typeDescriptions":{}}},"id":2535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7636:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7630:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":2537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:37:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":2530,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7622:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:64:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2539,"nodeType":"ExpressionStatement","src":"7622:64:21"},{"expression":{"arguments":[{"id":2541,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"7718:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2542,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"7724:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2543,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"7728:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2540,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"7697:20:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7697:38:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2545,"nodeType":"ExpressionStatement","src":"7697:38:21"},{"assignments":[2547],"declarations":[{"constant":false,"id":2547,"mutability":"mutable","name":"fromBalance","nameLocation":"7754:11:21","nodeType":"VariableDeclaration","scope":2586,"src":"7746:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"7746:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2551,"initialValue":{"baseExpression":{"id":2548,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"7768:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2550,"indexExpression":{"id":2549,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"7778:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7768:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7746:37:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"7801:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2554,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"7816:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7824:40:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":2552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7793:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7793:72:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2558,"nodeType":"ExpressionStatement","src":"7793:72:21"},{"id":2573,"nodeType":"UncheckedBlock","src":"7875:273:21","statements":[{"expression":{"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2559,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"7899:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2561,"indexExpression":{"id":2560,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"7909:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7899:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2562,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"7917:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"7931:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7917:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:38:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2566,"nodeType":"ExpressionStatement","src":"7899:38:21"},{"expression":{"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2567,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"8114:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2569,"indexExpression":{"id":2568,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"8124:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8114:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2570,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"8131:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8114:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2572,"nodeType":"ExpressionStatement","src":"8114:23:21"}]},{"eventCall":{"arguments":[{"id":2575,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"8172:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2576,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"8178:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2577,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"8182:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2574,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"8163:8:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2579,"nodeType":"EmitStatement","src":"8158:31:21"},{"expression":{"arguments":[{"id":2581,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"8220:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2582,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"8226:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2583,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"8230:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2580,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"8200:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8200:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2585,"nodeType":"ExpressionStatement","src":"8200:37:21"}]},"documentation":{"id":2511,"nodeType":"StructuredDocumentation","src":"7008:443:21","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":2587,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7465:9:21","nodeType":"FunctionDefinition","parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2513,"mutability":"mutable","name":"from","nameLocation":"7483:4:21","nodeType":"VariableDeclaration","scope":2587,"src":"7475:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2512,"name":"address","nodeType":"ElementaryTypeName","src":"7475:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2515,"mutability":"mutable","name":"to","nameLocation":"7497:2:21","nodeType":"VariableDeclaration","scope":2587,"src":"7489:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"7489:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"amount","nameLocation":"7509:6:21","nodeType":"VariableDeclaration","scope":2587,"src":"7501:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2516,"name":"uint256","nodeType":"ElementaryTypeName","src":"7501:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7474:42:21"},"returnParameters":{"id":2519,"nodeType":"ParameterList","parameters":[],"src":"7534:0:21"},"scope":2827,"src":"7456:788:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2643,"nodeType":"Block","src":"8585:470:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2596,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"8603:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8622:1:21","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":2598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2597,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:21","typeDescriptions":{}}},"id":2600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8603:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8626:33:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":2595,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8595:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:65:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2604,"nodeType":"ExpressionStatement","src":"8595:65:21"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8700:1:21","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":2607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8692:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2606,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:21","typeDescriptions":{}}},"id":2609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8692:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2610,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"8704:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2611,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"8713:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"8671:20:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2613,"nodeType":"ExpressionStatement","src":"8671:49:21"},{"expression":{"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2614,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"8731:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2615,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"8747:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8731:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2617,"nodeType":"ExpressionStatement","src":"8731:22:21"},{"id":2624,"nodeType":"UncheckedBlock","src":"8763:175:21","statements":[{"expression":{"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2618,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"8899:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2620,"indexExpression":{"id":2619,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"8909:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8899:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2621,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"8921:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8899:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2623,"nodeType":"ExpressionStatement","src":"8899:28:21"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969:1:21","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":2627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8961:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:21","typeDescriptions":{}}},"id":2629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8961:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2630,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"8973:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2631,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"8982:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2625,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"8952:8:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2633,"nodeType":"EmitStatement","src":"8947:42:21"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:1:21","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":2636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9020:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2635,"name":"address","nodeType":"ElementaryTypeName","src":"9020:7:21","typeDescriptions":{}}},"id":2638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9020:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2639,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"9032:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2640,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"9041:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2634,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"9000:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9000:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2642,"nodeType":"ExpressionStatement","src":"9000:48:21"}]},"documentation":{"id":2588,"nodeType":"StructuredDocumentation","src":"8250:265:21","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8529:5:21","nodeType":"FunctionDefinition","parameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2590,"mutability":"mutable","name":"account","nameLocation":"8543:7:21","nodeType":"VariableDeclaration","scope":2644,"src":"8535:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2592,"mutability":"mutable","name":"amount","nameLocation":"8560:6:21","nodeType":"VariableDeclaration","scope":2644,"src":"8552:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"8552:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8534:33:21"},"returnParameters":{"id":2594,"nodeType":"ParameterList","parameters":[],"src":"8585:0:21"},"scope":2827,"src":"8520:535:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2715,"nodeType":"Block","src":"9440:594:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2653,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9458:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9477:1:21","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":2655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9469:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2654,"name":"address","nodeType":"ElementaryTypeName","src":"9469:7:21","typeDescriptions":{}}},"id":2657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9458:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":2659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9481:35:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":2652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9450:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9450:67:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2661,"nodeType":"ExpressionStatement","src":"9450:67:21"},{"expression":{"arguments":[{"id":2663,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9549:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9566:1:21","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":2665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9558:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"9558:7:21","typeDescriptions":{}}},"id":2667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9558:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2668,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"9570:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2662,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9528:20:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2670,"nodeType":"ExpressionStatement","src":"9528:49:21"},{"assignments":[2672],"declarations":[{"constant":false,"id":2672,"mutability":"mutable","name":"accountBalance","nameLocation":"9596:14:21","nodeType":"VariableDeclaration","scope":2715,"src":"9588:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2671,"name":"uint256","nodeType":"ElementaryTypeName","src":"9588:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2676,"initialValue":{"baseExpression":{"id":2673,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"9613:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2675,"indexExpression":{"id":2674,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9623:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9613:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9588:43:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2678,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"9649:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2679,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"9667:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9649:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":2681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9675:36:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":2677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9641:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9641:71:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2683,"nodeType":"ExpressionStatement","src":"9641:71:21"},{"id":2696,"nodeType":"UncheckedBlock","src":"9722:194:21","statements":[{"expression":{"id":2690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2684,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"9746:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2686,"indexExpression":{"id":2685,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9756:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9746:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2687,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"9767:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2688,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"9784:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9767:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9746:44:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2691,"nodeType":"ExpressionStatement","src":"9746:44:21"},{"expression":{"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2692,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"9883:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2693,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"9899:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9883:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2695,"nodeType":"ExpressionStatement","src":"9883:22:21"}]},{"eventCall":{"arguments":[{"id":2698,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9940:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9957:1:21","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":2700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9949:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2699,"name":"address","nodeType":"ElementaryTypeName","src":"9949:7:21","typeDescriptions":{}}},"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9949:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"9961:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2697,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"9931:8:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9931:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2705,"nodeType":"EmitStatement","src":"9926:42:21"},{"expression":{"arguments":[{"id":2707,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"9999:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016:1:21","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":2709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10008:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2708,"name":"address","nodeType":"ElementaryTypeName","src":"10008:7:21","typeDescriptions":{}}},"id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"10020:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2706,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"9979:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9979:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2714,"nodeType":"ExpressionStatement","src":"9979:48:21"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"9061:309:21","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":2716,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9384:5:21","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"account","nameLocation":"9398:7:21","nodeType":"VariableDeclaration","scope":2716,"src":"9390:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2646,"name":"address","nodeType":"ElementaryTypeName","src":"9390:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"amount","nameLocation":"9415:6:21","nodeType":"VariableDeclaration","scope":2716,"src":"9407:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2648,"name":"uint256","nodeType":"ElementaryTypeName","src":"9407:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9389:33:21"},"returnParameters":{"id":2651,"nodeType":"ParameterList","parameters":[],"src":"9440:0:21"},"scope":2827,"src":"9375:659:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2760,"nodeType":"Block","src":"10540:257:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2727,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2719,"src":"10558:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10575:1:21","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":2729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10567:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2728,"name":"address","nodeType":"ElementaryTypeName","src":"10567:7:21","typeDescriptions":{}}},"id":2731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10567:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10558:19:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":2733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10579:38:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":2726,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10550:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10550:68:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2735,"nodeType":"ExpressionStatement","src":"10550:68:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2737,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"10636:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655:1:21","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":2739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10647:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2738,"name":"address","nodeType":"ElementaryTypeName","src":"10647:7:21","typeDescriptions":{}}},"id":2741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10647:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10636:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10659:36:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":2736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10628:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10628:68:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2745,"nodeType":"ExpressionStatement","src":"10628:68:21"},{"expression":{"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2746,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2262,"src":"10707:11:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2749,"indexExpression":{"id":2747,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2719,"src":"10719:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10707:18:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2750,"indexExpression":{"id":2748,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"10726:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10707:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2751,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"10737:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10707:36:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2753,"nodeType":"ExpressionStatement","src":"10707:36:21"},{"eventCall":{"arguments":[{"id":2755,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2719,"src":"10767:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2756,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"10774:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2757,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"10783:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2754,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"10758:8:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10758:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2759,"nodeType":"EmitStatement","src":"10753:37:21"}]},"documentation":{"id":2717,"nodeType":"StructuredDocumentation","src":"10040:412:21","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":2761,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10466:8:21","nodeType":"FunctionDefinition","parameters":{"id":2724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2719,"mutability":"mutable","name":"owner","nameLocation":"10483:5:21","nodeType":"VariableDeclaration","scope":2761,"src":"10475:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2718,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2721,"mutability":"mutable","name":"spender","nameLocation":"10498:7:21","nodeType":"VariableDeclaration","scope":2761,"src":"10490:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2720,"name":"address","nodeType":"ElementaryTypeName","src":"10490:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2723,"mutability":"mutable","name":"amount","nameLocation":"10515:6:21","nodeType":"VariableDeclaration","scope":2761,"src":"10507:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2722,"name":"uint256","nodeType":"ElementaryTypeName","src":"10507:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10474:48:21"},"returnParameters":{"id":2725,"nodeType":"ParameterList","parameters":[],"src":"10540:0:21"},"scope":2827,"src":"10457:340:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2803,"nodeType":"Block","src":"11168:321:21","statements":[{"assignments":[2772],"declarations":[{"constant":false,"id":2772,"mutability":"mutable","name":"currentAllowance","nameLocation":"11186:16:21","nodeType":"VariableDeclaration","scope":2803,"src":"11178:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"11178:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2777,"initialValue":{"arguments":[{"id":2774,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"11215:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2775,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"11222:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2773,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"11205:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11178:52:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2778,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"11244:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":2781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11269:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"11269:7:21","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2779,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11264:4:21","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11264:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11278:3:21","memberName":"max","nodeType":"MemberAccess","src":"11264:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11244:37:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2802,"nodeType":"IfStatement","src":"11240:243:21","trueBody":{"id":2801,"nodeType":"Block","src":"11283:200:21","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2786,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"11305:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2787,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"11325:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11305:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":2789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11333:31:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":2785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11297:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11297:68:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2791,"nodeType":"ExpressionStatement","src":"11297:68:21"},{"id":2800,"nodeType":"UncheckedBlock","src":"11379:94:21","statements":[{"expression":{"arguments":[{"id":2793,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"11416:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2794,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"11423:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2795,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"11432:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2796,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"11451:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11432:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2792,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"11407:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11407:51:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2799,"nodeType":"ExpressionStatement","src":"11407:51:21"}]}]}}]},"documentation":{"id":2762,"nodeType":"StructuredDocumentation","src":"10803:270:21","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":2804,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11087:15:21","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"owner","nameLocation":"11111:5:21","nodeType":"VariableDeclaration","scope":2804,"src":"11103:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2763,"name":"address","nodeType":"ElementaryTypeName","src":"11103:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"spender","nameLocation":"11126:7:21","nodeType":"VariableDeclaration","scope":2804,"src":"11118:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"11118:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"amount","nameLocation":"11143:6:21","nodeType":"VariableDeclaration","scope":2804,"src":"11135:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11102:48:21"},"returnParameters":{"id":2770,"nodeType":"ParameterList","parameters":[],"src":"11168:0:21"},"scope":2827,"src":"11078:411:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2814,"nodeType":"Block","src":"12162:2:21","statements":[]},"documentation":{"id":2805,"nodeType":"StructuredDocumentation","src":"11495:573:21","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2815,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"12082:20:21","nodeType":"FunctionDefinition","parameters":{"id":2812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2807,"mutability":"mutable","name":"from","nameLocation":"12111:4:21","nodeType":"VariableDeclaration","scope":2815,"src":"12103:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2806,"name":"address","nodeType":"ElementaryTypeName","src":"12103:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2809,"mutability":"mutable","name":"to","nameLocation":"12125:2:21","nodeType":"VariableDeclaration","scope":2815,"src":"12117:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2808,"name":"address","nodeType":"ElementaryTypeName","src":"12117:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2811,"mutability":"mutable","name":"amount","nameLocation":"12137:6:21","nodeType":"VariableDeclaration","scope":2815,"src":"12129:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2810,"name":"uint256","nodeType":"ElementaryTypeName","src":"12129:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:42:21"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[],"src":"12162:0:21"},"scope":2827,"src":"12073:91:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2825,"nodeType":"Block","src":"12840:2:21","statements":[]},"documentation":{"id":2816,"nodeType":"StructuredDocumentation","src":"12170:577:21","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2826,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12761:19:21","nodeType":"FunctionDefinition","parameters":{"id":2823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2818,"mutability":"mutable","name":"from","nameLocation":"12789:4:21","nodeType":"VariableDeclaration","scope":2826,"src":"12781:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2817,"name":"address","nodeType":"ElementaryTypeName","src":"12781:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2820,"mutability":"mutable","name":"to","nameLocation":"12803:2:21","nodeType":"VariableDeclaration","scope":2826,"src":"12795:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2819,"name":"address","nodeType":"ElementaryTypeName","src":"12795:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"amount","nameLocation":"12815:6:21","nodeType":"VariableDeclaration","scope":2826,"src":"12807:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2821,"name":"uint256","nodeType":"ElementaryTypeName","src":"12807:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12780:42:21"},"returnParameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"12840:0:21"},"scope":2827,"src":"12752:90:21","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2828,"src":"1532:11312:21","usedErrors":[],"usedEvents":[2839,2848]}],"src":"105:12740:21"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"id":22,"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2905]},"id":2906,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2829,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:22"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2830,"nodeType":"StructuredDocumentation","src":"131:70:22","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2905,"linearizedBaseContracts":[2905],"name":"IERC20","nameLocation":"212:6:22","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2831,"nodeType":"StructuredDocumentation","src":"225:158:22","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":2839,"name":"Transfer","nameLocation":"394:8:22","nodeType":"EventDefinition","parameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2833,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:22","nodeType":"VariableDeclaration","scope":2839,"src":"403:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2832,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2835,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:22","nodeType":"VariableDeclaration","scope":2839,"src":"425:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:22","nodeType":"VariableDeclaration","scope":2839,"src":"445:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2836,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:22"},"src":"388:72:22"},{"anonymous":false,"documentation":{"id":2840,"nodeType":"StructuredDocumentation","src":"466:148:22","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":2848,"name":"Approval","nameLocation":"625:8:22","nodeType":"EventDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2842,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:22","nodeType":"VariableDeclaration","scope":2848,"src":"634:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2841,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2844,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:22","nodeType":"VariableDeclaration","scope":2848,"src":"657:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2843,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2846,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:22","nodeType":"VariableDeclaration","scope":2848,"src":"682:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2845,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:22"},"src":"619:78:22"},{"documentation":{"id":2849,"nodeType":"StructuredDocumentation","src":"703:66:22","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2854,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:22","nodeType":"FunctionDefinition","parameters":{"id":2850,"nodeType":"ParameterList","parameters":[],"src":"794:2:22"},"returnParameters":{"id":2853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2854,"src":"820:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2851,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:22"},"scope":2905,"src":"774:55:22","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2855,"nodeType":"StructuredDocumentation","src":"835:72:22","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2862,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:22","nodeType":"FunctionDefinition","parameters":{"id":2858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2857,"mutability":"mutable","name":"account","nameLocation":"939:7:22","nodeType":"VariableDeclaration","scope":2862,"src":"931:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2856,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:22"},"returnParameters":{"id":2861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2862,"src":"971:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2859,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:22"},"scope":2905,"src":"912:68:22","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2863,"nodeType":"StructuredDocumentation","src":"986:202:22","text":" @dev Moves `amount` 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":2872,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:22","nodeType":"FunctionDefinition","parameters":{"id":2868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2865,"mutability":"mutable","name":"to","nameLocation":"1219:2:22","nodeType":"VariableDeclaration","scope":2872,"src":"1211:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2864,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2867,"mutability":"mutable","name":"amount","nameLocation":"1231:6:22","nodeType":"VariableDeclaration","scope":2872,"src":"1223:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2866,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:22"},"returnParameters":{"id":2871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2872,"src":"1257:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2869,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:22"},"scope":2905,"src":"1193:70:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2873,"nodeType":"StructuredDocumentation","src":"1269:264:22","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":2882,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:22","nodeType":"FunctionDefinition","parameters":{"id":2878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2875,"mutability":"mutable","name":"owner","nameLocation":"1565:5:22","nodeType":"VariableDeclaration","scope":2882,"src":"1557:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2874,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2877,"mutability":"mutable","name":"spender","nameLocation":"1580:7:22","nodeType":"VariableDeclaration","scope":2882,"src":"1572:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2876,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:22"},"returnParameters":{"id":2881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2882,"src":"1612:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2879,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:22"},"scope":2905,"src":"1538:83:22","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2883,"nodeType":"StructuredDocumentation","src":"1627:642:22","text":" @dev Sets `amount` as the allowance of `spender` over the 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":2892,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:22","nodeType":"FunctionDefinition","parameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2885,"mutability":"mutable","name":"spender","nameLocation":"2299:7:22","nodeType":"VariableDeclaration","scope":2892,"src":"2291:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2884,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2887,"mutability":"mutable","name":"amount","nameLocation":"2316:6:22","nodeType":"VariableDeclaration","scope":2892,"src":"2308:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:22"},"returnParameters":{"id":2891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2892,"src":"2342:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2889,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:22"},"scope":2905,"src":"2274:74:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2893,"nodeType":"StructuredDocumentation","src":"2354:287:22","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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":2904,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:22","nodeType":"FunctionDefinition","parameters":{"id":2900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2895,"mutability":"mutable","name":"from","nameLocation":"2676:4:22","nodeType":"VariableDeclaration","scope":2904,"src":"2668:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2894,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"to","nameLocation":"2690:2:22","nodeType":"VariableDeclaration","scope":2904,"src":"2682:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2896,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2899,"mutability":"mutable","name":"amount","nameLocation":"2702:6:22","nodeType":"VariableDeclaration","scope":2904,"src":"2694:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:22"},"returnParameters":{"id":2903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2904,"src":"2728:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2901,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:22"},"scope":2905,"src":"2646:88:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2906,"src":"202:2534:22","usedErrors":[],"usedEvents":[2839,2848]}],"src":"106:2631:22"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"id":23,"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[2905],"IERC20Metadata":[2930]},"id":2931,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2907,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":2908,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2931,"sourceUnit":2906,"src":"135:23:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2910,"name":"IERC20","nameLocations":["305:6:23"],"nodeType":"IdentifierPath","referencedDeclaration":2905,"src":"305:6:23"},"id":2911,"nodeType":"InheritanceSpecifier","src":"305:6:23"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":2909,"nodeType":"StructuredDocumentation","src":"160:116:23","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":2930,"linearizedBaseContracts":[2930,2905],"name":"IERC20Metadata","nameLocation":"287:14:23","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2912,"nodeType":"StructuredDocumentation","src":"318:54:23","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":2917,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:23","nodeType":"FunctionDefinition","parameters":{"id":2913,"nodeType":"ParameterList","parameters":[],"src":"390:2:23"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2917,"src":"416:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2914,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:23"},"scope":2930,"src":"377:54:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2918,"nodeType":"StructuredDocumentation","src":"437:56:23","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":2923,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:23","nodeType":"FunctionDefinition","parameters":{"id":2919,"nodeType":"ParameterList","parameters":[],"src":"513:2:23"},"returnParameters":{"id":2922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2923,"src":"539:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2920,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:23"},"scope":2930,"src":"498:56:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2924,"nodeType":"StructuredDocumentation","src":"560:65:23","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":2929,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:23","nodeType":"FunctionDefinition","parameters":{"id":2925,"nodeType":"ParameterList","parameters":[],"src":"647:2:23"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2929,"src":"673:5:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2926,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:23"},"scope":2930,"src":"630:50:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2931,"src":"277:405:23","usedErrors":[],"usedEvents":[2839,2848]}],"src":"110:573:23"}},"@openzeppelin/contracts/utils/Address.sol":{"id":24,"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[3260]},"id":3261,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2932,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:24"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":2933,"nodeType":"StructuredDocumentation","src":"126:67:24","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":3260,"linearizedBaseContracts":[3260],"name":"Address","nameLocation":"202:7:24","nodeType":"ContractDefinition","nodes":[{"body":{"id":2947,"nodeType":"Block","src":"1478:254:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2941,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"1702:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:24","memberName":"code","nodeType":"MemberAccess","src":"1702:12:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:24","memberName":"length","nodeType":"MemberAccess","src":"1702:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2940,"id":2946,"nodeType":"Return","src":"1695:30:24"}]},"documentation":{"id":2934,"nodeType":"StructuredDocumentation","src":"216:1191:24","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":2948,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:24","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2936,"mutability":"mutable","name":"account","nameLocation":"1440:7:24","nodeType":"VariableDeclaration","scope":2948,"src":"1432:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2935,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:24"},"returnParameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2948,"src":"1472:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2938,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:24"},"scope":3260,"src":"1412:320:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2981,"nodeType":"Block","src":"2718:241:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2959,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3260","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3260","typeString":"library Address"}],"id":2958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2957,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:24","typeDescriptions":{}}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:24","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2962,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"2761:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":2964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":2956,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2966,"nodeType":"ExpressionStatement","src":"2728:73:24"},{"assignments":[2968,null],"declarations":[{"constant":false,"id":2968,"mutability":"mutable","name":"success","nameLocation":"2818:7:24","nodeType":"VariableDeclaration","scope":2981,"src":"2813:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2967,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2975,"initialValue":{"arguments":[{"hexValue":"","id":2973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:24","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":2969,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"2831:9:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:24","memberName":"call","nodeType":"MemberAccess","src":"2831:14:24","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":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2971,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"2853:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:24","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":2974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:24"},{"expression":{"arguments":[{"id":2977,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2968,"src":"2882:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":2978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":2976,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2980,"nodeType":"ExpressionStatement","src":"2874:78:24"}]},"documentation":{"id":2949,"nodeType":"StructuredDocumentation","src":"1738:904:24","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.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":2982,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:24","nodeType":"FunctionDefinition","parameters":{"id":2954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2951,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:24","nodeType":"VariableDeclaration","scope":2982,"src":"2666:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2950,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:24","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2953,"mutability":"mutable","name":"amount","nameLocation":"2701:6:24","nodeType":"VariableDeclaration","scope":2982,"src":"2693:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2952,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:24"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[],"src":"2718:0:24"},"scope":3260,"src":"2647:312:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2999,"nodeType":"Block","src":"3790:96:24","statements":[{"expression":{"arguments":[{"id":2993,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3829:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2994,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2987,"src":"3837:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"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"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":2992,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[3040,3084],"referencedDeclaration":3084,"src":"3807:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2991,"id":2998,"nodeType":"Return","src":"3800:79:24"}]},"documentation":{"id":2983,"nodeType":"StructuredDocumentation","src":"2965:731:24","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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"},"id":3000,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:24","nodeType":"FunctionDefinition","parameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2985,"mutability":"mutable","name":"target","nameLocation":"3731:6:24","nodeType":"VariableDeclaration","scope":3000,"src":"3723:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2984,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2987,"mutability":"mutable","name":"data","nameLocation":"3752:4:24","nodeType":"VariableDeclaration","scope":3000,"src":"3739:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2986,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:24"},"returnParameters":{"id":2991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3000,"src":"3776:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2989,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:24"},"scope":3260,"src":"3701:185:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3019,"nodeType":"Block","src":"4255:76:24","statements":[{"expression":{"arguments":[{"id":3013,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"4294:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3014,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"4302:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3016,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"4311:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3012,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[3040,3084],"referencedDeclaration":3084,"src":"4272:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3011,"id":3018,"nodeType":"Return","src":"4265:59:24"}]},"documentation":{"id":3001,"nodeType":"StructuredDocumentation","src":"3892:211:24","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":3020,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:24","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"target","nameLocation":"4147:6:24","nodeType":"VariableDeclaration","scope":3020,"src":"4139:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3002,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3005,"mutability":"mutable","name":"data","nameLocation":"4176:4:24","nodeType":"VariableDeclaration","scope":3020,"src":"4163:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3004,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:24","nodeType":"VariableDeclaration","scope":3020,"src":"4190:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3006,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:24"},"returnParameters":{"id":3011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3020,"src":"4241:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3009,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:24"},"scope":3260,"src":"4108:223:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3039,"nodeType":"Block","src":"4806:111:24","statements":[{"expression":{"arguments":[{"id":3033,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3023,"src":"4845:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3034,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"4853:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"4859:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":3036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":3032,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[3040,3084],"referencedDeclaration":3084,"src":"4823:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3031,"id":3038,"nodeType":"Return","src":"4816:94:24"}]},"documentation":{"id":3021,"nodeType":"StructuredDocumentation","src":"4337:351:24","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`.\n _Available since v3.1._"},"id":3040,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:24","nodeType":"FunctionDefinition","parameters":{"id":3028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3023,"mutability":"mutable","name":"target","nameLocation":"4732:6:24","nodeType":"VariableDeclaration","scope":3040,"src":"4724:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3025,"mutability":"mutable","name":"data","nameLocation":"4753:4:24","nodeType":"VariableDeclaration","scope":3040,"src":"4740:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3024,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3027,"mutability":"mutable","name":"value","nameLocation":"4767:5:24","nodeType":"VariableDeclaration","scope":3040,"src":"4759:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3026,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:24"},"returnParameters":{"id":3031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3040,"src":"4792:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3029,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:24"},"scope":3260,"src":"4693:224:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3083,"nodeType":"Block","src":"5344:267:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3057,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3260","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3260","typeString":"library Address"}],"id":3056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3055,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:24","typeDescriptions":{}}},"id":3058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:24","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"5387:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":3062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":3054,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3064,"nodeType":"ExpressionStatement","src":"5354:81:24"},{"assignments":[3066,3068],"declarations":[{"constant":false,"id":3066,"mutability":"mutable","name":"success","nameLocation":"5451:7:24","nodeType":"VariableDeclaration","scope":3083,"src":"5446:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3065,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3068,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:24","nodeType":"VariableDeclaration","scope":3083,"src":"5460:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3067,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3075,"initialValue":{"arguments":[{"id":3073,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"5513:4:24","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":3069,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"5487:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:24","memberName":"call","nodeType":"MemberAccess","src":"5487:11:24","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":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"5506:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:24","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":3074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:24"},{"expression":{"arguments":[{"id":3077,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"5562:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3078,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5570:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3079,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"5579:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3080,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3049,"src":"5591:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3076,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"5535:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3053,"id":3082,"nodeType":"Return","src":"5528:76:24"}]},"documentation":{"id":3041,"nodeType":"StructuredDocumentation","src":"4923:237:24","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":3084,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:24","nodeType":"FunctionDefinition","parameters":{"id":3050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3043,"mutability":"mutable","name":"target","nameLocation":"5213:6:24","nodeType":"VariableDeclaration","scope":3084,"src":"5205:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3042,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3045,"mutability":"mutable","name":"data","nameLocation":"5242:4:24","nodeType":"VariableDeclaration","scope":3084,"src":"5229:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3044,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3047,"mutability":"mutable","name":"value","nameLocation":"5264:5:24","nodeType":"VariableDeclaration","scope":3084,"src":"5256:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3046,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3049,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:24","nodeType":"VariableDeclaration","scope":3084,"src":"5279:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3048,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:24"},"returnParameters":{"id":3053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3084,"src":"5330:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3051,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:24"},"scope":3260,"src":"5165:446:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3100,"nodeType":"Block","src":"5888:97:24","statements":[{"expression":{"arguments":[{"id":3095,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5924:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3096,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"5932:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":3097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":3094,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[3101,3130],"referencedDeclaration":3130,"src":"5905:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3093,"id":3099,"nodeType":"Return","src":"5898:80:24"}]},"documentation":{"id":3085,"nodeType":"StructuredDocumentation","src":"5617:166:24","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":3101,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:24","nodeType":"FunctionDefinition","parameters":{"id":3090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3087,"mutability":"mutable","name":"target","nameLocation":"5824:6:24","nodeType":"VariableDeclaration","scope":3101,"src":"5816:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3086,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3089,"mutability":"mutable","name":"data","nameLocation":"5845:4:24","nodeType":"VariableDeclaration","scope":3101,"src":"5832:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3088,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:24"},"returnParameters":{"id":3093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3101,"src":"5874:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3091,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:24"},"scope":3260,"src":"5788:197:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3129,"nodeType":"Block","src":"6327:168:24","statements":[{"assignments":[3114,3116],"declarations":[{"constant":false,"id":3114,"mutability":"mutable","name":"success","nameLocation":"6343:7:24","nodeType":"VariableDeclaration","scope":3129,"src":"6338:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3113,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3116,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:24","nodeType":"VariableDeclaration","scope":3129,"src":"6352:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3115,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3121,"initialValue":{"arguments":[{"id":3119,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"6397:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3117,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"6379:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:24","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:24","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":3120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:24"},{"expression":{"arguments":[{"id":3123,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"6446:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3124,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"6454:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3125,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"6463:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3126,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"6475:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3122,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6419:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3112,"id":3128,"nodeType":"Return","src":"6412:76:24"}]},"documentation":{"id":3102,"nodeType":"StructuredDocumentation","src":"5991:173:24","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":3130,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:24","nodeType":"FunctionDefinition","parameters":{"id":3109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"target","nameLocation":"6214:6:24","nodeType":"VariableDeclaration","scope":3130,"src":"6206:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3103,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"data","nameLocation":"6243:4:24","nodeType":"VariableDeclaration","scope":3130,"src":"6230:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3105,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3108,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:24","nodeType":"VariableDeclaration","scope":3130,"src":"6257:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3107,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:24"},"returnParameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3130,"src":"6313:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3110,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:24"},"scope":3260,"src":"6169:326:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3146,"nodeType":"Block","src":"6771:101:24","statements":[{"expression":{"arguments":[{"id":3141,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"6809:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3142,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3135,"src":"6817:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":3143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":3140,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[3147,3176],"referencedDeclaration":3176,"src":"6788:20:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3139,"id":3145,"nodeType":"Return","src":"6781:84:24"}]},"documentation":{"id":3131,"nodeType":"StructuredDocumentation","src":"6501:168:24","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":3147,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:24","nodeType":"FunctionDefinition","parameters":{"id":3136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3133,"mutability":"mutable","name":"target","nameLocation":"6712:6:24","nodeType":"VariableDeclaration","scope":3147,"src":"6704:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3132,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3135,"mutability":"mutable","name":"data","nameLocation":"6733:4:24","nodeType":"VariableDeclaration","scope":3147,"src":"6720:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3134,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:24"},"returnParameters":{"id":3139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3147,"src":"6757:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3137,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:24"},"scope":3260,"src":"6674:198:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3175,"nodeType":"Block","src":"7213:170:24","statements":[{"assignments":[3160,3162],"declarations":[{"constant":false,"id":3160,"mutability":"mutable","name":"success","nameLocation":"7229:7:24","nodeType":"VariableDeclaration","scope":3175,"src":"7224:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3159,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3162,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:24","nodeType":"VariableDeclaration","scope":3175,"src":"7238:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3161,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3167,"initialValue":{"arguments":[{"id":3165,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"7285:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3163,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"7265:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:24","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:24","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":3166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:24"},{"expression":{"arguments":[{"id":3169,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"7334:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3170,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"7342:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3171,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"7351:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3172,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"7363:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3168,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"7307:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3158,"id":3174,"nodeType":"Return","src":"7300:76:24"}]},"documentation":{"id":3148,"nodeType":"StructuredDocumentation","src":"6878:175:24","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":3176,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:24","nodeType":"FunctionDefinition","parameters":{"id":3155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3150,"mutability":"mutable","name":"target","nameLocation":"7105:6:24","nodeType":"VariableDeclaration","scope":3176,"src":"7097:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3149,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3152,"mutability":"mutable","name":"data","nameLocation":"7134:4:24","nodeType":"VariableDeclaration","scope":3176,"src":"7121:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3151,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3154,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:24","nodeType":"VariableDeclaration","scope":3176,"src":"7148:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3153,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:24"},"returnParameters":{"id":3158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3176,"src":"7199:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3156,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:24"},"scope":3260,"src":"7058:325:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3214,"nodeType":"Block","src":"7865:434:24","statements":[{"condition":{"id":3190,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"7879:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3212,"nodeType":"Block","src":"8235:58:24","statements":[{"expression":{"arguments":[{"id":3208,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"8257:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3209,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"8269:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3207,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"8249:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3211,"nodeType":"ExpressionStatement","src":"8249:33:24"}]},"id":3213,"nodeType":"IfStatement","src":"7875:418:24","trueBody":{"id":3206,"nodeType":"Block","src":"7888:341:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3191,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"7906:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:24","memberName":"length","nodeType":"MemberAccess","src":"7906:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3203,"nodeType":"IfStatement","src":"7902:286:24","trueBody":{"id":3202,"nodeType":"Block","src":"7930:258:24","statements":[{"expression":{"arguments":[{"arguments":[{"id":3197,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"8132:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3196,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"8121:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":3199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":3195,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3201,"nodeType":"ExpressionStatement","src":"8113:60:24"}]}},{"expression":{"id":3204,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"8208:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3189,"id":3205,"nodeType":"Return","src":"8201:17:24"}]}}]},"documentation":{"id":3177,"nodeType":"StructuredDocumentation","src":"7389:277:24","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":3215,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:24","nodeType":"FunctionDefinition","parameters":{"id":3186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3179,"mutability":"mutable","name":"target","nameLocation":"7724:6:24","nodeType":"VariableDeclaration","scope":3215,"src":"7716:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3178,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3181,"mutability":"mutable","name":"success","nameLocation":"7745:7:24","nodeType":"VariableDeclaration","scope":3215,"src":"7740:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3180,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3183,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:24","nodeType":"VariableDeclaration","scope":3215,"src":"7762:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3182,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3185,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:24","nodeType":"VariableDeclaration","scope":3215,"src":"7795:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3184,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:24"},"returnParameters":{"id":3189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3215,"src":"7851:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3187,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:24"},"scope":3260,"src":"7671:628:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3238,"nodeType":"Block","src":"8680:135:24","statements":[{"condition":{"id":3227,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"8694:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3236,"nodeType":"Block","src":"8751:58:24","statements":[{"expression":{"arguments":[{"id":3232,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"8773:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3233,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"8785:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3231,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"8765:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3235,"nodeType":"ExpressionStatement","src":"8765:33:24"}]},"id":3237,"nodeType":"IfStatement","src":"8690:119:24","trueBody":{"id":3230,"nodeType":"Block","src":"8703:42:24","statements":[{"expression":{"id":3228,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"8724:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3226,"id":3229,"nodeType":"Return","src":"8717:17:24"}]}}]},"documentation":{"id":3216,"nodeType":"StructuredDocumentation","src":"8305:210:24","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":3239,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:24","nodeType":"FunctionDefinition","parameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3218,"mutability":"mutable","name":"success","nameLocation":"8560:7:24","nodeType":"VariableDeclaration","scope":3239,"src":"8555:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3217,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3220,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:24","nodeType":"VariableDeclaration","scope":3239,"src":"8577:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3219,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3222,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:24","nodeType":"VariableDeclaration","scope":3239,"src":"8610:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3221,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:24"},"returnParameters":{"id":3226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3239,"src":"8666:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3224,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:24"},"scope":3260,"src":"8520:295:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3258,"nodeType":"Block","src":"8904:457:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3246,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"8980:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:24","memberName":"length","nodeType":"MemberAccess","src":"8980:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3256,"nodeType":"Block","src":"9310:45:24","statements":[{"expression":{"arguments":[{"id":3253,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9331:12:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3252,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:24","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3255,"nodeType":"ExpressionStatement","src":"9324:20:24"}]},"id":3257,"nodeType":"IfStatement","src":"8976:379:24","trueBody":{"id":3251,"nodeType":"Block","src":"9003:301:24","statements":[{"AST":{"nativeSrc":"9161:133:24","nodeType":"YulBlock","src":"9161:133:24","statements":[{"nativeSrc":"9179:40:24","nodeType":"YulVariableDeclaration","src":"9179:40:24","value":{"arguments":[{"name":"returndata","nativeSrc":"9208:10:24","nodeType":"YulIdentifier","src":"9208:10:24"}],"functionName":{"name":"mload","nativeSrc":"9202:5:24","nodeType":"YulIdentifier","src":"9202:5:24"},"nativeSrc":"9202:17:24","nodeType":"YulFunctionCall","src":"9202:17:24"},"variables":[{"name":"returndata_size","nativeSrc":"9183:15:24","nodeType":"YulTypedName","src":"9183:15:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9247:2:24","nodeType":"YulLiteral","src":"9247:2:24","type":"","value":"32"},{"name":"returndata","nativeSrc":"9251:10:24","nodeType":"YulIdentifier","src":"9251:10:24"}],"functionName":{"name":"add","nativeSrc":"9243:3:24","nodeType":"YulIdentifier","src":"9243:3:24"},"nativeSrc":"9243:19:24","nodeType":"YulFunctionCall","src":"9243:19:24"},{"name":"returndata_size","nativeSrc":"9264:15:24","nodeType":"YulIdentifier","src":"9264:15:24"}],"functionName":{"name":"revert","nativeSrc":"9236:6:24","nodeType":"YulIdentifier","src":"9236:6:24"},"nativeSrc":"9236:44:24","nodeType":"YulFunctionCall","src":"9236:44:24"},"nativeSrc":"9236:44:24","nodeType":"YulExpressionStatement","src":"9236:44:24"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3241,"isOffset":false,"isSlot":false,"src":"9208:10:24","valueSize":1},{"declaration":3241,"isOffset":false,"isSlot":false,"src":"9251:10:24","valueSize":1}],"id":3250,"nodeType":"InlineAssembly","src":"9152:142:24"}]}}]},"id":3259,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:24","nodeType":"FunctionDefinition","parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3241,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:24","nodeType":"VariableDeclaration","scope":3259,"src":"8838:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3240,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:24","nodeType":"VariableDeclaration","scope":3259,"src":"8863:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3242,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:24"},"returnParameters":{"id":3245,"nodeType":"ParameterList","parameters":[],"src":"8904:0:24"},"scope":3260,"src":"8821:540:24","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":3261,"src":"194:9169:24","usedErrors":[],"usedEvents":[]}],"src":"101:9263:24"}},"@openzeppelin/contracts/utils/Context.sol":{"id":25,"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[3290]},"id":3291,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3262,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:25"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":3263,"nodeType":"StructuredDocumentation","src":"126:496:25","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":3290,"linearizedBaseContracts":[3290],"name":"Context","nameLocation":"641:7:25","nodeType":"ContractDefinition","nodes":[{"body":{"id":3271,"nodeType":"Block","src":"717:34:25","statements":[{"expression":{"expression":{"id":3268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"734:3:25","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:25","memberName":"sender","nodeType":"MemberAccess","src":"734:10:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3267,"id":3270,"nodeType":"Return","src":"727:17:25"}]},"id":3272,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:25","nodeType":"FunctionDefinition","parameters":{"id":3264,"nodeType":"ParameterList","parameters":[],"src":"674:2:25"},"returnParameters":{"id":3267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3272,"src":"708:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3265,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:25"},"scope":3290,"src":"655:96:25","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3280,"nodeType":"Block","src":"824:32:25","statements":[{"expression":{"expression":{"id":3277,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"841:3:25","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:25","memberName":"data","nodeType":"MemberAccess","src":"841:8:25","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":3276,"id":3279,"nodeType":"Return","src":"834:15:25"}]},"id":3281,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:25","nodeType":"FunctionDefinition","parameters":{"id":3273,"nodeType":"ParameterList","parameters":[],"src":"774:2:25"},"returnParameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3281,"src":"808:14:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3274,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:25"},"scope":3290,"src":"757:99:25","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3288,"nodeType":"Block","src":"934:25:25","statements":[{"expression":{"hexValue":"30","id":3286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3285,"id":3287,"nodeType":"Return","src":"944:8:25"}]},"id":3289,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:25","nodeType":"FunctionDefinition","parameters":{"id":3282,"nodeType":"ParameterList","parameters":[],"src":"891:2:25"},"returnParameters":{"id":3285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3289,"src":"925:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3283,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:25"},"scope":3290,"src":"862:97:25","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3291,"src":"623:338:25","usedErrors":[],"usedEvents":[]}],"src":"101:861:25"}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"id":26,"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[3400]},"id":3401,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3292,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:26"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":3293,"nodeType":"StructuredDocumentation","src":"218:1201:26","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":3400,"linearizedBaseContracts":[3400],"name":"StorageSlot","nameLocation":"1428:11:26","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":3296,"members":[{"constant":false,"id":3295,"mutability":"mutable","name":"value","nameLocation":"1483:5:26","nodeType":"VariableDeclaration","scope":3296,"src":"1475:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3294,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:26","nodeType":"StructDefinition","scope":3400,"src":"1446:49:26","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":3299,"members":[{"constant":false,"id":3298,"mutability":"mutable","name":"value","nameLocation":"1535:5:26","nodeType":"VariableDeclaration","scope":3299,"src":"1530:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3297,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:26","nodeType":"StructDefinition","scope":3400,"src":"1501:46:26","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":3302,"members":[{"constant":false,"id":3301,"mutability":"mutable","name":"value","nameLocation":"1590:5:26","nodeType":"VariableDeclaration","scope":3302,"src":"1582:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:26","nodeType":"StructDefinition","scope":3400,"src":"1553:49:26","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":3305,"members":[{"constant":false,"id":3304,"mutability":"mutable","name":"value","nameLocation":"1645:5:26","nodeType":"VariableDeclaration","scope":3305,"src":"1637:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:26","nodeType":"StructDefinition","scope":3400,"src":"1608:49:26","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":3308,"members":[{"constant":false,"id":3307,"mutability":"mutable","name":"value","nameLocation":"1698:5:26","nodeType":"VariableDeclaration","scope":3308,"src":"1691:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3306,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:26","nodeType":"StructDefinition","scope":3400,"src":"1663:47:26","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":3311,"members":[{"constant":false,"id":3310,"mutability":"mutable","name":"value","nameLocation":"1749:5:26","nodeType":"VariableDeclaration","scope":3311,"src":"1743:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3309,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:26","nodeType":"StructDefinition","scope":3400,"src":"1716:45:26","visibility":"public"},{"body":{"id":3321,"nodeType":"Block","src":"1943:106:26","statements":[{"AST":{"nativeSrc":"2005:38:26","nodeType":"YulBlock","src":"2005:38:26","statements":[{"nativeSrc":"2019:14:26","nodeType":"YulAssignment","src":"2019:14:26","value":{"name":"slot","nativeSrc":"2029:4:26","nodeType":"YulIdentifier","src":"2029:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"2019:6:26","nodeType":"YulIdentifier","src":"2019:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3318,"isOffset":false,"isSlot":true,"src":"2019:6:26","suffix":"slot","valueSize":1},{"declaration":3314,"isOffset":false,"isSlot":false,"src":"2029:4:26","valueSize":1}],"id":3320,"nodeType":"InlineAssembly","src":"1996:47:26"}]},"documentation":{"id":3312,"nodeType":"StructuredDocumentation","src":"1767:87:26","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":3322,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:26","nodeType":"FunctionDefinition","parameters":{"id":3315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3314,"mutability":"mutable","name":"slot","nameLocation":"1891:4:26","nodeType":"VariableDeclaration","scope":3322,"src":"1883:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:26"},"returnParameters":{"id":3319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"r","nameLocation":"1940:1:26","nodeType":"VariableDeclaration","scope":3322,"src":"1920:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":3317,"nodeType":"UserDefinedTypeName","pathNode":{"id":3316,"name":"AddressSlot","nameLocations":["1920:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":3296,"src":"1920:11:26"},"referencedDeclaration":3296,"src":"1920:11:26","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3296_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:26"},"scope":3400,"src":"1859:190:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3332,"nodeType":"Block","src":"2231:106:26","statements":[{"AST":{"nativeSrc":"2293:38:26","nodeType":"YulBlock","src":"2293:38:26","statements":[{"nativeSrc":"2307:14:26","nodeType":"YulAssignment","src":"2307:14:26","value":{"name":"slot","nativeSrc":"2317:4:26","nodeType":"YulIdentifier","src":"2317:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"2307:6:26","nodeType":"YulIdentifier","src":"2307:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3329,"isOffset":false,"isSlot":true,"src":"2307:6:26","suffix":"slot","valueSize":1},{"declaration":3325,"isOffset":false,"isSlot":false,"src":"2317:4:26","valueSize":1}],"id":3331,"nodeType":"InlineAssembly","src":"2284:47:26"}]},"documentation":{"id":3323,"nodeType":"StructuredDocumentation","src":"2055:87:26","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":3333,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:26","nodeType":"FunctionDefinition","parameters":{"id":3326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3325,"mutability":"mutable","name":"slot","nameLocation":"2179:4:26","nodeType":"VariableDeclaration","scope":3333,"src":"2171:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:26"},"returnParameters":{"id":3330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"mutability":"mutable","name":"r","nameLocation":"2228:1:26","nodeType":"VariableDeclaration","scope":3333,"src":"2208:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3299_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":3328,"nodeType":"UserDefinedTypeName","pathNode":{"id":3327,"name":"BooleanSlot","nameLocations":["2208:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":3299,"src":"2208:11:26"},"referencedDeclaration":3299,"src":"2208:11:26","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3299_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:26"},"scope":3400,"src":"2147:190:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3343,"nodeType":"Block","src":"2519:106:26","statements":[{"AST":{"nativeSrc":"2581:38:26","nodeType":"YulBlock","src":"2581:38:26","statements":[{"nativeSrc":"2595:14:26","nodeType":"YulAssignment","src":"2595:14:26","value":{"name":"slot","nativeSrc":"2605:4:26","nodeType":"YulIdentifier","src":"2605:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"2595:6:26","nodeType":"YulIdentifier","src":"2595:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3340,"isOffset":false,"isSlot":true,"src":"2595:6:26","suffix":"slot","valueSize":1},{"declaration":3336,"isOffset":false,"isSlot":false,"src":"2605:4:26","valueSize":1}],"id":3342,"nodeType":"InlineAssembly","src":"2572:47:26"}]},"documentation":{"id":3334,"nodeType":"StructuredDocumentation","src":"2343:87:26","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":3344,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:26","nodeType":"FunctionDefinition","parameters":{"id":3337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3336,"mutability":"mutable","name":"slot","nameLocation":"2467:4:26","nodeType":"VariableDeclaration","scope":3344,"src":"2459:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:26"},"returnParameters":{"id":3341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3340,"mutability":"mutable","name":"r","nameLocation":"2516:1:26","nodeType":"VariableDeclaration","scope":3344,"src":"2496:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3302_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":3339,"nodeType":"UserDefinedTypeName","pathNode":{"id":3338,"name":"Bytes32Slot","nameLocations":["2496:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":3302,"src":"2496:11:26"},"referencedDeclaration":3302,"src":"2496:11:26","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3302_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:26"},"scope":3400,"src":"2435:190:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3354,"nodeType":"Block","src":"2807:106:26","statements":[{"AST":{"nativeSrc":"2869:38:26","nodeType":"YulBlock","src":"2869:38:26","statements":[{"nativeSrc":"2883:14:26","nodeType":"YulAssignment","src":"2883:14:26","value":{"name":"slot","nativeSrc":"2893:4:26","nodeType":"YulIdentifier","src":"2893:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"2883:6:26","nodeType":"YulIdentifier","src":"2883:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3351,"isOffset":false,"isSlot":true,"src":"2883:6:26","suffix":"slot","valueSize":1},{"declaration":3347,"isOffset":false,"isSlot":false,"src":"2893:4:26","valueSize":1}],"id":3353,"nodeType":"InlineAssembly","src":"2860:47:26"}]},"documentation":{"id":3345,"nodeType":"StructuredDocumentation","src":"2631:87:26","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":3355,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:26","nodeType":"FunctionDefinition","parameters":{"id":3348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3347,"mutability":"mutable","name":"slot","nameLocation":"2755:4:26","nodeType":"VariableDeclaration","scope":3355,"src":"2747:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:26"},"returnParameters":{"id":3352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"r","nameLocation":"2804:1:26","nodeType":"VariableDeclaration","scope":3355,"src":"2784:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3305_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":3350,"nodeType":"UserDefinedTypeName","pathNode":{"id":3349,"name":"Uint256Slot","nameLocations":["2784:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":3305,"src":"2784:11:26"},"referencedDeclaration":3305,"src":"2784:11:26","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3305_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:26"},"scope":3400,"src":"2723:190:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3365,"nodeType":"Block","src":"3092:106:26","statements":[{"AST":{"nativeSrc":"3154:38:26","nodeType":"YulBlock","src":"3154:38:26","statements":[{"nativeSrc":"3168:14:26","nodeType":"YulAssignment","src":"3168:14:26","value":{"name":"slot","nativeSrc":"3178:4:26","nodeType":"YulIdentifier","src":"3178:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"3168:6:26","nodeType":"YulIdentifier","src":"3168:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3362,"isOffset":false,"isSlot":true,"src":"3168:6:26","suffix":"slot","valueSize":1},{"declaration":3358,"isOffset":false,"isSlot":false,"src":"3178:4:26","valueSize":1}],"id":3364,"nodeType":"InlineAssembly","src":"3145:47:26"}]},"documentation":{"id":3356,"nodeType":"StructuredDocumentation","src":"2919:86:26","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":3366,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:26","nodeType":"FunctionDefinition","parameters":{"id":3359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3358,"mutability":"mutable","name":"slot","nameLocation":"3041:4:26","nodeType":"VariableDeclaration","scope":3366,"src":"3033:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:26"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"r","nameLocation":"3089:1:26","nodeType":"VariableDeclaration","scope":3366,"src":"3070:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3308_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3361,"nodeType":"UserDefinedTypeName","pathNode":{"id":3360,"name":"StringSlot","nameLocations":["3070:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":3308,"src":"3070:10:26"},"referencedDeclaration":3308,"src":"3070:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3308_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:26"},"scope":3400,"src":"3010:188:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3376,"nodeType":"Block","src":"3400:112:26","statements":[{"AST":{"nativeSrc":"3462:44:26","nodeType":"YulBlock","src":"3462:44:26","statements":[{"nativeSrc":"3476:20:26","nodeType":"YulAssignment","src":"3476:20:26","value":{"name":"store.slot","nativeSrc":"3486:10:26","nodeType":"YulIdentifier","src":"3486:10:26"},"variableNames":[{"name":"r.slot","nativeSrc":"3476:6:26","nodeType":"YulIdentifier","src":"3476:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3373,"isOffset":false,"isSlot":true,"src":"3476:6:26","suffix":"slot","valueSize":1},{"declaration":3369,"isOffset":false,"isSlot":true,"src":"3486:10:26","suffix":"slot","valueSize":1}],"id":3375,"nodeType":"InlineAssembly","src":"3453:53:26"}]},"documentation":{"id":3367,"nodeType":"StructuredDocumentation","src":"3204:101:26","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":3377,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:26","nodeType":"FunctionDefinition","parameters":{"id":3370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3369,"mutability":"mutable","name":"store","nameLocation":"3348:5:26","nodeType":"VariableDeclaration","scope":3377,"src":"3333:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3368,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:26"},"returnParameters":{"id":3374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3373,"mutability":"mutable","name":"r","nameLocation":"3397:1:26","nodeType":"VariableDeclaration","scope":3377,"src":"3378:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3308_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3372,"nodeType":"UserDefinedTypeName","pathNode":{"id":3371,"name":"StringSlot","nameLocations":["3378:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":3308,"src":"3378:10:26"},"referencedDeclaration":3308,"src":"3378:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3308_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:26"},"scope":3400,"src":"3310:202:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3387,"nodeType":"Block","src":"3688:106:26","statements":[{"AST":{"nativeSrc":"3750:38:26","nodeType":"YulBlock","src":"3750:38:26","statements":[{"nativeSrc":"3764:14:26","nodeType":"YulAssignment","src":"3764:14:26","value":{"name":"slot","nativeSrc":"3774:4:26","nodeType":"YulIdentifier","src":"3774:4:26"},"variableNames":[{"name":"r.slot","nativeSrc":"3764:6:26","nodeType":"YulIdentifier","src":"3764:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3384,"isOffset":false,"isSlot":true,"src":"3764:6:26","suffix":"slot","valueSize":1},{"declaration":3380,"isOffset":false,"isSlot":false,"src":"3774:4:26","valueSize":1}],"id":3386,"nodeType":"InlineAssembly","src":"3741:47:26"}]},"documentation":{"id":3378,"nodeType":"StructuredDocumentation","src":"3518:85:26","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":3388,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:26","nodeType":"FunctionDefinition","parameters":{"id":3381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3380,"mutability":"mutable","name":"slot","nameLocation":"3638:4:26","nodeType":"VariableDeclaration","scope":3388,"src":"3630:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:26"},"returnParameters":{"id":3385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3384,"mutability":"mutable","name":"r","nameLocation":"3685:1:26","nodeType":"VariableDeclaration","scope":3388,"src":"3667:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3311_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3383,"nodeType":"UserDefinedTypeName","pathNode":{"id":3382,"name":"BytesSlot","nameLocations":["3667:9:26"],"nodeType":"IdentifierPath","referencedDeclaration":3311,"src":"3667:9:26"},"referencedDeclaration":3311,"src":"3667:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3311_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:26"},"scope":3400,"src":"3608:186:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3398,"nodeType":"Block","src":"3991:112:26","statements":[{"AST":{"nativeSrc":"4053:44:26","nodeType":"YulBlock","src":"4053:44:26","statements":[{"nativeSrc":"4067:20:26","nodeType":"YulAssignment","src":"4067:20:26","value":{"name":"store.slot","nativeSrc":"4077:10:26","nodeType":"YulIdentifier","src":"4077:10:26"},"variableNames":[{"name":"r.slot","nativeSrc":"4067:6:26","nodeType":"YulIdentifier","src":"4067:6:26"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3395,"isOffset":false,"isSlot":true,"src":"4067:6:26","suffix":"slot","valueSize":1},{"declaration":3391,"isOffset":false,"isSlot":true,"src":"4077:10:26","suffix":"slot","valueSize":1}],"id":3397,"nodeType":"InlineAssembly","src":"4044:53:26"}]},"documentation":{"id":3389,"nodeType":"StructuredDocumentation","src":"3800:99:26","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":3399,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:26","nodeType":"FunctionDefinition","parameters":{"id":3392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3391,"mutability":"mutable","name":"store","nameLocation":"3940:5:26","nodeType":"VariableDeclaration","scope":3399,"src":"3926:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3390,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:26"},"returnParameters":{"id":3396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3395,"mutability":"mutable","name":"r","nameLocation":"3988:1:26","nodeType":"VariableDeclaration","scope":3399,"src":"3970:19:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3311_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3394,"nodeType":"UserDefinedTypeName","pathNode":{"id":3393,"name":"BytesSlot","nameLocations":["3970:9:26"],"nodeType":"IdentifierPath","referencedDeclaration":3311,"src":"3970:9:26"},"referencedDeclaration":3311,"src":"3970:9:26","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3311_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:26"},"scope":3400,"src":"3904:199:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3401,"src":"1420:2685:26","usedErrors":[],"usedEvents":[]}],"src":"193:3913:26"}},"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol":{"id":27,"ast":{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","exportedSymbols":{"AccessControlledV8":[3554],"AddressUpgradeable":[969],"ContextUpgradeable":[1020],"IAccessControl":[1093],"IAccessControlManagerV8":[3599],"Initializable":[511],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342]},"id":3555,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3402,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:27"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":3403,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3555,"sourceUnit":512,"src":"66:75:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","id":3404,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3555,"sourceUnit":210,"src":"142:80:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol","file":"./IAccessControlManagerV8.sol","id":3405,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3555,"sourceUnit":3600,"src":"224:39:27","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3407,"name":"Initializable","nameLocations":["626:13:27"],"nodeType":"IdentifierPath","referencedDeclaration":511,"src":"626:13:27"},"id":3408,"nodeType":"InheritanceSpecifier","src":"626:13:27"},{"baseName":{"id":3409,"name":"Ownable2StepUpgradeable","nameLocations":["641:23:27"],"nodeType":"IdentifierPath","referencedDeclaration":209,"src":"641:23:27"},"id":3410,"nodeType":"InheritanceSpecifier","src":"641:23:27"}],"canonicalName":"AccessControlledV8","contractDependencies":[],"contractKind":"contract","documentation":{"id":3406,"nodeType":"StructuredDocumentation","src":"265:320:27","text":" @title AccessControlledV8\n @author Venus\n @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)\n to integrate access controlled mechanism. It provides initialise methods and verifying access methods."},"fullyImplemented":true,"id":3554,"linearizedBaseContracts":[3554,209,342,1020,511],"name":"AccessControlledV8","nameLocation":"604:18:27","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3411,"nodeType":"StructuredDocumentation","src":"671:43:27","text":"@notice Access control manager contract"},"id":3414,"mutability":"mutable","name":"_accessControlManager","nameLocation":"752:21:27","nodeType":"VariableDeclaration","scope":3554,"src":"719:54:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"},"typeName":{"id":3413,"nodeType":"UserDefinedTypeName","pathNode":{"id":3412,"name":"IAccessControlManagerV8","nameLocations":["719:23:27"],"nodeType":"IdentifierPath","referencedDeclaration":3599,"src":"719:23:27"},"referencedDeclaration":3599,"src":"719:23:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"visibility":"internal"},{"constant":false,"documentation":{"id":3415,"nodeType":"StructuredDocumentation","src":"780:254:27","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":3419,"mutability":"mutable","name":"__gap","nameLocation":"1059:5:27","nodeType":"VariableDeclaration","scope":3554,"src":"1039:25:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":3416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1039:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3418,"length":{"hexValue":"3439","id":3417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1047:2:27","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"1039:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":3420,"nodeType":"StructuredDocumentation","src":"1071:75:27","text":"@notice Emitted when access control manager contract address is changed"},"eventSelector":"66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0","id":3426,"name":"NewAccessControlManager","nameLocation":"1157:23:27","nodeType":"EventDefinition","parameters":{"id":3425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3422,"indexed":false,"mutability":"mutable","name":"oldAccessControlManager","nameLocation":"1189:23:27","nodeType":"VariableDeclaration","scope":3426,"src":"1181:31:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3421,"name":"address","nodeType":"ElementaryTypeName","src":"1181:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3424,"indexed":false,"mutability":"mutable","name":"newAccessControlManager","nameLocation":"1222:23:27","nodeType":"VariableDeclaration","scope":3426,"src":"1214:31:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3423,"name":"address","nodeType":"ElementaryTypeName","src":"1214:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1180:66:27"},"src":"1151:96:27"},{"documentation":{"id":3427,"nodeType":"StructuredDocumentation","src":"1253:72:27","text":"@notice Thrown when the action is prohibited by AccessControlManager"},"errorSelector":"4a3fa293","id":3435,"name":"Unauthorized","nameLocation":"1336:12:27","nodeType":"ErrorDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3429,"mutability":"mutable","name":"sender","nameLocation":"1357:6:27","nodeType":"VariableDeclaration","scope":3435,"src":"1349:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3428,"name":"address","nodeType":"ElementaryTypeName","src":"1349:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3431,"mutability":"mutable","name":"calledContract","nameLocation":"1373:14:27","nodeType":"VariableDeclaration","scope":3435,"src":"1365:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3430,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3433,"mutability":"mutable","name":"methodSignature","nameLocation":"1396:15:27","nodeType":"VariableDeclaration","scope":3435,"src":"1389:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3432,"name":"string","nodeType":"ElementaryTypeName","src":"1389:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1348:64:27"},"src":"1330:83:27"},{"body":{"id":3449,"nodeType":"Block","src":"1509:104:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3442,"name":"__Ownable2Step_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"1519:19:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:21:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3444,"nodeType":"ExpressionStatement","src":"1519:21:27"},{"expression":{"arguments":[{"id":3446,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"1584:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3445,"name":"__AccessControlled_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"1550:33:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1550:56:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3448,"nodeType":"ExpressionStatement","src":"1550:56:27"}]},"id":3450,"implemented":true,"kind":"function","modifiers":[{"id":3440,"kind":"modifierInvocation","modifierName":{"id":3439,"name":"onlyInitializing","nameLocations":["1492:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1492:16:27"},"nodeType":"ModifierInvocation","src":"1492:16:27"}],"name":"__AccessControlled_init","nameLocation":"1428:23:27","nodeType":"FunctionDefinition","parameters":{"id":3438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3437,"mutability":"mutable","name":"accessControlManager_","nameLocation":"1460:21:27","nodeType":"VariableDeclaration","scope":3450,"src":"1452:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3436,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1451:31:27"},"returnParameters":{"id":3441,"nodeType":"ParameterList","parameters":[],"src":"1509:0:27"},"scope":3554,"src":"1419:194:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3461,"nodeType":"Block","src":"1719:64:27","statements":[{"expression":{"arguments":[{"id":3458,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"1754:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3457,"name":"_setAccessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"1729:24:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1729:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3460,"nodeType":"ExpressionStatement","src":"1729:47:27"}]},"id":3462,"implemented":true,"kind":"function","modifiers":[{"id":3455,"kind":"modifierInvocation","modifierName":{"id":3454,"name":"onlyInitializing","nameLocations":["1702:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":456,"src":"1702:16:27"},"nodeType":"ModifierInvocation","src":"1702:16:27"}],"name":"__AccessControlled_init_unchained","nameLocation":"1628:33:27","nodeType":"FunctionDefinition","parameters":{"id":3453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3452,"mutability":"mutable","name":"accessControlManager_","nameLocation":"1670:21:27","nodeType":"VariableDeclaration","scope":3462,"src":"1662:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3451,"name":"address","nodeType":"ElementaryTypeName","src":"1662:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1661:31:27"},"returnParameters":{"id":3456,"nodeType":"ParameterList","parameters":[],"src":"1719:0:27"},"scope":3554,"src":"1619:164:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3474,"nodeType":"Block","src":"2185:64:27","statements":[{"expression":{"arguments":[{"id":3471,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"2220:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3470,"name":"_setAccessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"2195:24:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2195:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3473,"nodeType":"ExpressionStatement","src":"2195:47:27"}]},"documentation":{"id":3463,"nodeType":"StructuredDocumentation","src":"1789:308:27","text":" @notice Sets the address of AccessControlManager\n @dev Admin function to set address of AccessControlManager\n @param accessControlManager_ The new address of the AccessControlManager\n @custom:event Emits NewAccessControlManager event\n @custom:access Only Governance"},"functionSelector":"0e32cb86","id":3475,"implemented":true,"kind":"function","modifiers":[{"id":3468,"kind":"modifierInvocation","modifierName":{"id":3467,"name":"onlyOwner","nameLocations":["2175:9:27"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"2175:9:27"},"nodeType":"ModifierInvocation","src":"2175:9:27"}],"name":"setAccessControlManager","nameLocation":"2111:23:27","nodeType":"FunctionDefinition","parameters":{"id":3466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3465,"mutability":"mutable","name":"accessControlManager_","nameLocation":"2143:21:27","nodeType":"VariableDeclaration","scope":3475,"src":"2135:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3464,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2134:31:27"},"returnParameters":{"id":3469,"nodeType":"ParameterList","parameters":[],"src":"2185:0:27"},"scope":3554,"src":"2102:147:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3484,"nodeType":"Block","src":"2425:45:27","statements":[{"expression":{"id":3482,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"2442:21:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"functionReturnParameters":3481,"id":3483,"nodeType":"Return","src":"2435:28:27"}]},"documentation":{"id":3476,"nodeType":"StructuredDocumentation","src":"2255:85:27","text":" @notice Returns the address of the access control manager contract"},"functionSelector":"b4a0bdf3","id":3485,"implemented":true,"kind":"function","modifiers":[],"name":"accessControlManager","nameLocation":"2354:20:27","nodeType":"FunctionDefinition","parameters":{"id":3477,"nodeType":"ParameterList","parameters":[],"src":"2374:2:27"},"returnParameters":{"id":3481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3485,"src":"2400:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"},"typeName":{"id":3479,"nodeType":"UserDefinedTypeName","pathNode":{"id":3478,"name":"IAccessControlManagerV8","nameLocations":["2400:23:27"],"nodeType":"IdentifierPath","referencedDeclaration":3599,"src":"2400:23:27"},"referencedDeclaration":3599,"src":"2400:23:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"visibility":"internal"}],"src":"2399:25:27"},"scope":3554,"src":"2345:125:27","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3522,"nodeType":"Block","src":"2715:351:27","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3494,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"2741:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2733:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3492,"name":"address","nodeType":"ElementaryTypeName","src":"2733:7:27","typeDescriptions":{}}},"id":3495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2733:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2775:1:27","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":3497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2767:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3496,"name":"address","nodeType":"ElementaryTypeName","src":"2767:7:27","typeDescriptions":{}}},"id":3499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2767:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2733:44:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420616365737320636f6e74726f6c206d616e616765722061646472657373","id":3501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2779:39:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_4fb90961f89e1ad09bee577e07c3323ef046bc07751bb17057bc82e05747edcb","typeString":"literal_string \"invalid acess control manager address\""},"value":"invalid acess control manager address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4fb90961f89e1ad09bee577e07c3323ef046bc07751bb17057bc82e05747edcb","typeString":"literal_string \"invalid acess control manager address\""}],"id":3491,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2725:7:27","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:94:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3503,"nodeType":"ExpressionStatement","src":"2725:94:27"},{"assignments":[3505],"declarations":[{"constant":false,"id":3505,"mutability":"mutable","name":"oldAccessControlManager","nameLocation":"2837:23:27","nodeType":"VariableDeclaration","scope":3522,"src":"2829:31:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3504,"name":"address","nodeType":"ElementaryTypeName","src":"2829:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3510,"initialValue":{"arguments":[{"id":3508,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"2871:21:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}],"id":3507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2863:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3506,"name":"address","nodeType":"ElementaryTypeName","src":"2863:7:27","typeDescriptions":{}}},"id":3509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2863:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2829:64:27"},{"expression":{"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3511,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"2903:21:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3513,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"2951:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3512,"name":"IAccessControlManagerV8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"2927:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlManagerV8_$3599_$","typeString":"type(contract IAccessControlManagerV8)"}},"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2927:46:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"src":"2903:70:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"id":3516,"nodeType":"ExpressionStatement","src":"2903:70:27"},{"eventCall":{"arguments":[{"id":3518,"name":"oldAccessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3505,"src":"3012:23:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3519,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"3037:21:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3517,"name":"NewAccessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3426,"src":"2988:23:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2988:71:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3521,"nodeType":"EmitStatement","src":"2983:76:27"}]},"documentation":{"id":3486,"nodeType":"StructuredDocumentation","src":"2476:160:27","text":" @dev Internal function to set address of AccessControlManager\n @param accessControlManager_ The new address of the AccessControlManager"},"id":3523,"implemented":true,"kind":"function","modifiers":[],"name":"_setAccessControlManager","nameLocation":"2650:24:27","nodeType":"FunctionDefinition","parameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3488,"mutability":"mutable","name":"accessControlManager_","nameLocation":"2683:21:27","nodeType":"VariableDeclaration","scope":3523,"src":"2675:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3487,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2674:31:27"},"returnParameters":{"id":3490,"nodeType":"ParameterList","parameters":[],"src":"2715:0:27"},"scope":3554,"src":"2641:425:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3552,"nodeType":"Block","src":"3271:214:27","statements":[{"assignments":[3530],"declarations":[{"constant":false,"id":3530,"mutability":"mutable","name":"isAllowedToCall","nameLocation":"3286:15:27","nodeType":"VariableDeclaration","scope":3552,"src":"3281:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3529,"name":"bool","nodeType":"ElementaryTypeName","src":"3281:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3537,"initialValue":{"arguments":[{"expression":{"id":3533,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3342:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3346:6:27","memberName":"sender","nodeType":"MemberAccess","src":"3342:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3535,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"3354:9:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":3531,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"3304:21:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"id":3532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3326:15:27","memberName":"isAllowedToCall","nodeType":"MemberAccess","referencedDeclaration":3587,"src":"3304:37:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view external returns (bool)"}},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3281:83:27"},{"condition":{"id":3539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3379:16:27","subExpression":{"id":3538,"name":"isAllowedToCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"3380:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3551,"nodeType":"IfStatement","src":"3375:104:27","trueBody":{"id":3550,"nodeType":"Block","src":"3397:82:27","statements":[{"errorCall":{"arguments":[{"expression":{"id":3541,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3431:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3435:6:27","memberName":"sender","nodeType":"MemberAccess","src":"3431:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3545,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3451:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_AccessControlledV8_$3554","typeString":"contract AccessControlledV8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessControlledV8_$3554","typeString":"contract AccessControlledV8"}],"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3443:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3543,"name":"address","nodeType":"ElementaryTypeName","src":"3443:7:27","typeDescriptions":{}}},"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3443:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3547,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"3458:9:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3540,"name":"Unauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"3418:12:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,address,string memory) pure"}},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3549,"nodeType":"RevertStatement","src":"3411:57:27"}]}}]},"documentation":{"id":3524,"nodeType":"StructuredDocumentation","src":"3072:126:27","text":" @notice Reverts if the call is not allowed by AccessControlManager\n @param signature Method signature"},"id":3553,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAccessAllowed","nameLocation":"3212:19:27","nodeType":"FunctionDefinition","parameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"signature","nameLocation":"3246:9:27","nodeType":"VariableDeclaration","scope":3553,"src":"3232:23:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3525,"name":"string","nodeType":"ElementaryTypeName","src":"3232:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3231:25:27"},"returnParameters":{"id":3528,"nodeType":"ParameterList","parameters":[],"src":"3271:0:27"},"scope":3554,"src":"3203:282:27","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3555,"src":"586:2901:27","usedErrors":[3435],"usedEvents":[120,227,357,3426]}],"src":"41:3447:27"}},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"id":28,"ast":{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol","exportedSymbols":{"IAccessControl":[1093],"IAccessControlManagerV8":[3599]},"id":3600,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3556,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:28"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":3557,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3600,"sourceUnit":1094,"src":"67:59:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3559,"name":"IAccessControl","nameLocations":["299:14:28"],"nodeType":"IdentifierPath","referencedDeclaration":1093,"src":"299:14:28"},"id":3560,"nodeType":"InheritanceSpecifier","src":"299:14:28"}],"canonicalName":"IAccessControlManagerV8","contractDependencies":[],"contractKind":"interface","documentation":{"id":3558,"nodeType":"StructuredDocumentation","src":"128:133:28","text":" @title IAccessControlManagerV8\n @author Venus\n @notice Interface implemented by the `AccessControlManagerV8` contract."},"fullyImplemented":false,"id":3599,"linearizedBaseContracts":[3599,1093],"name":"IAccessControlManagerV8","nameLocation":"272:23:28","nodeType":"ContractDefinition","nodes":[{"functionSelector":"584f6b60","id":3569,"implemented":false,"kind":"function","modifiers":[],"name":"giveCallPermission","nameLocation":"329:18:28","nodeType":"FunctionDefinition","parameters":{"id":3567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3562,"mutability":"mutable","name":"contractAddress","nameLocation":"356:15:28","nodeType":"VariableDeclaration","scope":3569,"src":"348:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3561,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3564,"mutability":"mutable","name":"functionSig","nameLocation":"389:11:28","nodeType":"VariableDeclaration","scope":3569,"src":"373:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3563,"name":"string","nodeType":"ElementaryTypeName","src":"373:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3566,"mutability":"mutable","name":"accountToPermit","nameLocation":"410:15:28","nodeType":"VariableDeclaration","scope":3569,"src":"402:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3565,"name":"address","nodeType":"ElementaryTypeName","src":"402:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:79:28"},"returnParameters":{"id":3568,"nodeType":"ParameterList","parameters":[],"src":"435:0:28"},"scope":3599,"src":"320:116:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"545f7a32","id":3578,"implemented":false,"kind":"function","modifiers":[],"name":"revokeCallPermission","nameLocation":"451:20:28","nodeType":"FunctionDefinition","parameters":{"id":3576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3571,"mutability":"mutable","name":"contractAddress","nameLocation":"489:15:28","nodeType":"VariableDeclaration","scope":3578,"src":"481:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3570,"name":"address","nodeType":"ElementaryTypeName","src":"481:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3573,"mutability":"mutable","name":"functionSig","nameLocation":"530:11:28","nodeType":"VariableDeclaration","scope":3578,"src":"514:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3572,"name":"string","nodeType":"ElementaryTypeName","src":"514:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3575,"mutability":"mutable","name":"accountToRevoke","nameLocation":"559:15:28","nodeType":"VariableDeclaration","scope":3578,"src":"551:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3574,"name":"address","nodeType":"ElementaryTypeName","src":"551:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:109:28"},"returnParameters":{"id":3577,"nodeType":"ParameterList","parameters":[],"src":"589:0:28"},"scope":3599,"src":"442:148:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"18c5e8ab","id":3587,"implemented":false,"kind":"function","modifiers":[],"name":"isAllowedToCall","nameLocation":"605:15:28","nodeType":"FunctionDefinition","parameters":{"id":3583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3580,"mutability":"mutable","name":"account","nameLocation":"629:7:28","nodeType":"VariableDeclaration","scope":3587,"src":"621:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3579,"name":"address","nodeType":"ElementaryTypeName","src":"621:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3582,"mutability":"mutable","name":"functionSig","nameLocation":"654:11:28","nodeType":"VariableDeclaration","scope":3587,"src":"638:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3581,"name":"string","nodeType":"ElementaryTypeName","src":"638:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"620:46:28"},"returnParameters":{"id":3586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3587,"src":"690:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3584,"name":"bool","nodeType":"ElementaryTypeName","src":"690:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"689:6:28"},"scope":3599,"src":"596:100:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"82bfd0f0","id":3598,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"711:13:28","nodeType":"FunctionDefinition","parameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3589,"mutability":"mutable","name":"account","nameLocation":"742:7:28","nodeType":"VariableDeclaration","scope":3598,"src":"734:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3588,"name":"address","nodeType":"ElementaryTypeName","src":"734:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3591,"mutability":"mutable","name":"contractAddress","nameLocation":"767:15:28","nodeType":"VariableDeclaration","scope":3598,"src":"759:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3590,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3593,"mutability":"mutable","name":"functionSig","nameLocation":"808:11:28","nodeType":"VariableDeclaration","scope":3598,"src":"792:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3592,"name":"string","nodeType":"ElementaryTypeName","src":"792:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"724:101:28"},"returnParameters":{"id":3597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3598,"src":"849:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3595,"name":"bool","nodeType":"ElementaryTypeName","src":"849:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"848:6:28"},"scope":3599,"src":"702:153:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3600,"src":"262:595:28","usedErrors":[],"usedEvents":[1032,1041,1050]}],"src":"41:817:28"}},"@venusprotocol/solidity-utilities/contracts/constants.sol":{"id":29,"ast":{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","exportedSymbols":{"EXP_SCALE":[3605],"MANTISSA_ONE":[3609],"SECONDS_PER_YEAR":[3613]},"id":3614,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3601,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:29"},{"constant":true,"id":3605,"mutability":"constant","name":"EXP_SCALE","nameLocation":"174:9:29","nodeType":"VariableDeclaration","scope":3614,"src":"157:33:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3603,"name":"uint256","nodeType":"ElementaryTypeName","src":"157:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":3604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"186:4:29","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":3609,"mutability":"constant","name":"MANTISSA_ONE","nameLocation":"293:12:29","nodeType":"VariableDeclaration","scope":3614,"src":"276:41:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3607,"name":"uint256","nodeType":"ElementaryTypeName","src":"276:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":3608,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"308:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":3613,"mutability":"constant","name":"SECONDS_PER_YEAR","nameLocation":"389:16:29","nodeType":"VariableDeclaration","scope":3614,"src":"372:46:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3611,"name":"uint256","nodeType":"ElementaryTypeName","src":"372:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33315f3533365f303030","id":3612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:10:29","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"31_536_000"},"visibility":"internal"}],"src":"41:379:29"}},"@venusprotocol/solidity-utilities/contracts/validators.sol":{"id":30,"ast":{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","exportedSymbols":{"ZeroAddressNotAllowed":[3618],"ZeroValueNotAllowed":[3621],"ensureNonzeroAddress":[3639],"ensureNonzeroValue":[3654]},"id":3655,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3615,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:30"},{"documentation":{"id":3616,"nodeType":"StructuredDocumentation","src":"66:85:30","text":"@notice Thrown if the supplied address is a zero address where it is not allowed"},"errorSelector":"8579befe","id":3618,"name":"ZeroAddressNotAllowed","nameLocation":"157:21:30","nodeType":"ErrorDefinition","parameters":{"id":3617,"nodeType":"ParameterList","parameters":[],"src":"178:2:30"},"src":"151:30:30"},{"documentation":{"id":3619,"nodeType":"StructuredDocumentation","src":"183:70:30","text":"@notice Thrown if the supplied value is 0 where it is not allowed"},"errorSelector":"9cf8540c","id":3621,"name":"ZeroValueNotAllowed","nameLocation":"259:19:30","nodeType":"ErrorDefinition","parameters":{"id":3620,"nodeType":"ParameterList","parameters":[],"src":"278:2:30"},"src":"253:28:30"},{"body":{"id":3638,"nodeType":"Block","src":"538:83:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3627,"name":"address_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"548:8:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:30","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":3629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"560:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3628,"name":"address","nodeType":"ElementaryTypeName","src":"560:7:30","typeDescriptions":{}}},"id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"560:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"548:22:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3637,"nodeType":"IfStatement","src":"544:75:30","trueBody":{"id":3636,"nodeType":"Block","src":"572:47:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3633,"name":"ZeroAddressNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"589:21:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"589:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3635,"nodeType":"RevertStatement","src":"582:30:30"}]}}]},"documentation":{"id":3622,"nodeType":"StructuredDocumentation","src":"283:202:30","text":"@notice Checks if the provided address is nonzero, reverts otherwise\n @param address_ Address to check\n @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address"},"id":3639,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"ensureNonzeroAddress","nameLocation":"494:20:30","nodeType":"FunctionDefinition","parameters":{"id":3625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3624,"mutability":"mutable","name":"address_","nameLocation":"523:8:30","nodeType":"VariableDeclaration","scope":3639,"src":"515:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3623,"name":"address","nodeType":"ElementaryTypeName","src":"515:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"514:18:30"},"returnParameters":{"id":3626,"nodeType":"ParameterList","parameters":[],"src":"538:0:30"},"scope":3655,"src":"485:136:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3653,"nodeType":"Block","src":"851:70:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3645,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"861:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"871:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"861:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3652,"nodeType":"IfStatement","src":"857:62:30","trueBody":{"id":3651,"nodeType":"Block","src":"874:45:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3648,"name":"ZeroValueNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"891:19:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"891:21:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3650,"nodeType":"RevertStatement","src":"884:28:30"}]}}]},"documentation":{"id":3640,"nodeType":"StructuredDocumentation","src":"623:179:30","text":"@notice Checks if the provided value is nonzero, reverts otherwise\n @param value_ Value to check\n @custom:error ZeroValueNotAllowed is thrown if the provided value is 0"},"id":3654,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"ensureNonzeroValue","nameLocation":"811:18:30","nodeType":"FunctionDefinition","parameters":{"id":3643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3642,"mutability":"mutable","name":"value_","nameLocation":"838:6:30","nodeType":"VariableDeclaration","scope":3654,"src":"830:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3641,"name":"uint256","nodeType":"ElementaryTypeName","src":"830:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"829:16:30"},"returnParameters":{"id":3644,"nodeType":"ParameterList","parameters":[],"src":"851:0:30"},"scope":3655,"src":"802:119:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"41:881:30"}},"contracts/ReferenceOracle.sol":{"id":31,"ast":{"absolutePath":"contracts/ReferenceOracle.sol","exportedSymbols":{"OracleInterface":[5140],"Ownable2StepUpgradeable":[209],"ReferenceOracle":[3911],"ResilientOracleInterface":[5160],"ensureNonzeroAddress":[3639]},"id":3912,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3656,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"79:23:31"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","id":3658,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3912,"sourceUnit":210,"src":"104:113:31","symbolAliases":[{"foreign":{"id":3657,"name":"Ownable2StepUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"113:23:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":3660,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3912,"sourceUnit":3655,"src":"218:98:31","symbolAliases":[{"foreign":{"id":3659,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"227:20:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"./interfaces/OracleInterface.sol","id":3663,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3912,"sourceUnit":5173,"src":"317:93:31","symbolAliases":[{"foreign":{"id":3661,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"326:24:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3662,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"352:15:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3665,"name":"Ownable2StepUpgradeable","nameLocations":["761:23:31"],"nodeType":"IdentifierPath","referencedDeclaration":209,"src":"761:23:31"},"id":3666,"nodeType":"InheritanceSpecifier","src":"761:23:31"},{"baseName":{"id":3667,"name":"OracleInterface","nameLocations":["786:15:31"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"786:15:31"},"id":3668,"nodeType":"InheritanceSpecifier","src":"786:15:31"}],"canonicalName":"ReferenceOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":3664,"nodeType":"StructuredDocumentation","src":"412:320:31","text":" @title ReferenceOracle\n @author Venus\n @notice Reference oracle is the oracle that is not used for production but required for\n price monitoring. This oracle contains some extra configurations for assets required to\n compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)"},"fullyImplemented":true,"id":3911,"linearizedBaseContracts":[3911,5140,209,342,1020,511],"name":"ReferenceOracle","nameLocation":"742:15:31","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ReferenceOracle.ExternalPrice","id":3675,"members":[{"constant":false,"id":3671,"mutability":"mutable","name":"asset","nameLocation":"881:5:31","nodeType":"VariableDeclaration","scope":3675,"src":"873:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3670,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3674,"mutability":"mutable","name":"price","nameLocation":"967:5:31","nodeType":"VariableDeclaration","scope":3675,"src":"959:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3673,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExternalPrice","nameLocation":"815:13:31","nodeType":"StructDefinition","scope":3911,"src":"808:171:31","visibility":"public"},{"constant":true,"documentation":{"id":3676,"nodeType":"StructuredDocumentation","src":"985:229:31","text":"@notice Slot to temporarily store price information from external sources\n like CMC/Coingecko, useful to compute prices of derivative assets based on\n prices of the base assets with no on chain price information"},"functionSelector":"539b18a1","id":3684,"mutability":"constant","name":"PRICES_SLOT","nameLocation":"1243:11:31","nodeType":"VariableDeclaration","scope":3911,"src":"1219:107:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1219:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"76656e75732d70726f746f636f6c2f6f7261636c652f5265666572656e63654f7261636c652f707269636573","id":3681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1278:46:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_9268977af7369a42042e01e4505cad88daa17fae8c8b05e449a1cbc9b76214b8","typeString":"literal_string \"venus-protocol/oracle/ReferenceOracle/prices\""},"value":"venus-protocol/oracle/ReferenceOracle/prices"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9268977af7369a42042e01e4505cad88daa17fae8c8b05e449a1cbc9b76214b8","typeString":"literal_string \"venus-protocol/oracle/ReferenceOracle/prices\""}],"expression":{"id":3679,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1267:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1271:6:31","memberName":"encode","nodeType":"MemberAccess","src":"1267:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1267:58:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3678,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1257:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1257:69:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"documentation":{"id":3685,"nodeType":"StructuredDocumentation","src":"1333:102:31","text":"@notice Resilient oracle address\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"a4edcd4c","id":3688,"mutability":"immutable","name":"RESILIENT_ORACLE","nameLocation":"1482:16:31","nodeType":"VariableDeclaration","scope":3911,"src":"1440:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"},"typeName":{"id":3687,"nodeType":"UserDefinedTypeName","pathNode":{"id":3686,"name":"ResilientOracleInterface","nameLocations":["1440:24:31"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"1440:24:31"},"referencedDeclaration":5160,"src":"1440:24:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"visibility":"public"},{"constant":false,"documentation":{"id":3689,"nodeType":"StructuredDocumentation","src":"1505:43:31","text":"@notice Oracle configuration for assets"},"functionSelector":"addd5099","id":3694,"mutability":"mutable","name":"oracles","nameLocation":"1596:7:31","nodeType":"VariableDeclaration","scope":3911,"src":"1553:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_OracleInterface_$5140_$","typeString":"mapping(address => contract OracleInterface)"},"typeName":{"id":3693,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3690,"name":"address","nodeType":"ElementaryTypeName","src":"1561:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1553:35:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_OracleInterface_$5140_$","typeString":"mapping(address => contract OracleInterface)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3692,"nodeType":"UserDefinedTypeName","pathNode":{"id":3691,"name":"OracleInterface","nameLocations":["1572:15:31"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"1572:15:31"},"referencedDeclaration":5140,"src":"1572:15:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}}},"visibility":"public"},{"anonymous":false,"documentation":{"id":3695,"nodeType":"StructuredDocumentation","src":"1610:47:31","text":"@notice Event emitted when an oracle is set"},"eventSelector":"e625c7b7d4661988d3a1140f3225faefa7b57c73524adb62fd77dbc945a6db82","id":3701,"name":"OracleConfigured","nameLocation":"1668:16:31","nodeType":"EventDefinition","parameters":{"id":3700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3697,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"1701:5:31","nodeType":"VariableDeclaration","scope":3701,"src":"1685:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3696,"name":"address","nodeType":"ElementaryTypeName","src":"1685:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3699,"indexed":true,"mutability":"mutable","name":"oracle","nameLocation":"1724:6:31","nodeType":"VariableDeclaration","scope":3701,"src":"1708:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3698,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1684:47:31"},"src":"1662:70:31"},{"body":{"id":3722,"nodeType":"Block","src":"2090:139:31","statements":[{"expression":{"arguments":[{"arguments":[{"id":3711,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"2129:15:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}],"id":3710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2121:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3709,"name":"address","nodeType":"ElementaryTypeName","src":"2121:7:31","typeDescriptions":{}}},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2121:24:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3708,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"2100:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2100:46:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3714,"nodeType":"ExpressionStatement","src":"2100:46:31"},{"expression":{"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3715,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"2156:16:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3716,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"2175:15:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"src":"2156:34:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":3718,"nodeType":"ExpressionStatement","src":"2156:34:31"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3719,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"2200:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2200:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3721,"nodeType":"ExpressionStatement","src":"2200:22:31"}]},"documentation":{"id":3702,"nodeType":"StructuredDocumentation","src":"1738:293:31","text":" @notice Constructor for the implementation contract. Sets immutable variables.\n @param resilientOracle Resilient oracle address\n @custom:error ZeroAddressNotAllowed is thrown if resilient oracle address is null\n @custom:oz-upgrades-unsafe-allow constructor"},"id":3723,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3705,"mutability":"mutable","name":"resilientOracle","nameLocation":"2073:15:31","nodeType":"VariableDeclaration","scope":3723,"src":"2048:40:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"},"typeName":{"id":3704,"nodeType":"UserDefinedTypeName","pathNode":{"id":3703,"name":"ResilientOracleInterface","nameLocations":["2048:24:31"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"2048:24:31"},"referencedDeclaration":5160,"src":"2048:24:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"visibility":"internal"}],"src":"2047:42:31"},"returnParameters":{"id":3707,"nodeType":"ParameterList","parameters":[],"src":"2090:0:31"},"scope":3911,"src":"2036:193:31","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":3732,"nodeType":"Block","src":"2340:38:31","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3729,"name":"__Ownable2Step_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"2350:19:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2350:21:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3731,"nodeType":"ExpressionStatement","src":"2350:21:31"}]},"documentation":{"id":3724,"nodeType":"StructuredDocumentation","src":"2235:57:31","text":" @notice Initializes the contract admin"},"functionSelector":"8129fc1c","id":3733,"implemented":true,"kind":"function","modifiers":[{"id":3727,"kind":"modifierInvocation","modifierName":{"id":3726,"name":"initializer","nameLocations":["2328:11:31"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"2328:11:31"},"nodeType":"ModifierInvocation","src":"2328:11:31"}],"name":"initialize","nameLocation":"2306:10:31","nodeType":"FunctionDefinition","parameters":{"id":3725,"nodeType":"ParameterList","parameters":[],"src":"2316:2:31"},"returnParameters":{"id":3728,"nodeType":"ParameterList","parameters":[],"src":"2340:0:31"},"scope":3911,"src":"2297:81:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3764,"nodeType":"Block","src":"2848:149:31","statements":[{"expression":{"arguments":[{"id":3745,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2879:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3744,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"2858:20:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:27:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3747,"nodeType":"ExpressionStatement","src":"2858:27:31"},{"expression":{"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3748,"name":"oracles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"2895:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_OracleInterface_$5140_$","typeString":"mapping(address => contract OracleInterface)"}},"id":3750,"indexExpression":{"id":3749,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2903:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2895:14:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3752,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"2928:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}],"id":3751,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"2912:15:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":3753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2912:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"src":"2895:40:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":3755,"nodeType":"ExpressionStatement","src":"2895:40:31"},{"eventCall":{"arguments":[{"id":3757,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2967:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3760,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"2982:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}],"id":3759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2974:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3758,"name":"address","nodeType":"ElementaryTypeName","src":"2974:7:31","typeDescriptions":{}}},"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3756,"name":"OracleConfigured","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3701,"src":"2950:16:31","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2950:40:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3763,"nodeType":"EmitStatement","src":"2945:45:31"}]},"documentation":{"id":3734,"nodeType":"StructuredDocumentation","src":"2384:382:31","text":" @notice Sets an oracle to use for a specific asset\n @dev The production resilientOracle will be used if zero address is passed\n @param asset Asset address\n @param oracle Oracle address\n @custom:access Only owner\n @custom:error ZeroAddressNotAllowed is thrown if asset address is null\n @custom:event Emits OracleConfigured event"},"functionSelector":"5c38eb3a","id":3765,"implemented":true,"kind":"function","modifiers":[{"id":3742,"kind":"modifierInvocation","modifierName":{"id":3741,"name":"onlyOwner","nameLocations":["2838:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"2838:9:31"},"nodeType":"ModifierInvocation","src":"2838:9:31"}],"name":"setOracle","nameLocation":"2780:9:31","nodeType":"FunctionDefinition","parameters":{"id":3740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3736,"mutability":"mutable","name":"asset","nameLocation":"2798:5:31","nodeType":"VariableDeclaration","scope":3765,"src":"2790:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3735,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3739,"mutability":"mutable","name":"oracle","nameLocation":"2821:6:31","nodeType":"VariableDeclaration","scope":3765,"src":"2805:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"},"typeName":{"id":3738,"nodeType":"UserDefinedTypeName","pathNode":{"id":3737,"name":"OracleInterface","nameLocations":["2805:15:31"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"2805:15:31"},"referencedDeclaration":5140,"src":"2805:15:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"visibility":"internal"}],"src":"2789:39:31"},"returnParameters":{"id":3743,"nodeType":"ParameterList","parameters":[],"src":"2848:0:31"},"scope":3911,"src":"2771:226:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3809,"nodeType":"Block","src":"3359:254:31","statements":[{"assignments":[3778],"declarations":[{"constant":false,"id":3778,"mutability":"mutable","name":"externalPricesCount","nameLocation":"3377:19:31","nodeType":"VariableDeclaration","scope":3809,"src":"3369:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3777,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3781,"initialValue":{"expression":{"id":3779,"name":"externalPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"3399:14:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ExternalPrice_$3675_memory_ptr_$dyn_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice memory[] memory"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3414:6:31","memberName":"length","nodeType":"MemberAccess","src":"3399:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3369:51:31"},{"body":{"id":3803,"nodeType":"Block","src":"3480:94:31","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":3793,"name":"externalPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"3514:14:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ExternalPrice_$3675_memory_ptr_$dyn_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice memory[] memory"}},"id":3795,"indexExpression":{"id":3794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"3529:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3514:17:31","typeDescriptions":{"typeIdentifier":"t_struct$_ExternalPrice_$3675_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice memory"}},"id":3796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3532:5:31","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3671,"src":"3514:23:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3797,"name":"externalPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"3539:14:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ExternalPrice_$3675_memory_ptr_$dyn_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice memory[] memory"}},"id":3799,"indexExpression":{"id":3798,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"3554:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3539:17:31","typeDescriptions":{"typeIdentifier":"t_struct$_ExternalPrice_$3675_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice memory"}},"id":3800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3557:5:31","memberName":"price","nodeType":"MemberAccess","referencedDeclaration":3674,"src":"3539:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3792,"name":"_storeExternalPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3843,"src":"3494:19:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3494:69:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3802,"nodeType":"ExpressionStatement","src":"3494:69:31"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3786,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"3450:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3787,"name":"externalPricesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"3454:19:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3450:23:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3804,"initializationExpression":{"assignments":[3783],"declarations":[{"constant":false,"id":3783,"mutability":"mutable","name":"i","nameLocation":"3443:1:31","nodeType":"VariableDeclaration","scope":3804,"src":"3435:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3782,"name":"uint256","nodeType":"ElementaryTypeName","src":"3435:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3785,"initialValue":{"hexValue":"30","id":3784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3447:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3435:13:31"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3475:3:31","subExpression":{"id":3789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"3477:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3791,"nodeType":"ExpressionStatement","src":"3475:3:31"},"nodeType":"ForStatement","src":"3430:144:31"},{"expression":{"arguments":[{"id":3806,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"3600:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3805,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"3590:9:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:16:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3776,"id":3808,"nodeType":"Return","src":"3583:23:31"}]},"documentation":{"id":3766,"nodeType":"StructuredDocumentation","src":"3003:244:31","text":" @notice Gets price of the asset assuming other assets have the defined price\n @param asset asset address\n @param externalPrices an array of prices for other assets\n @return USD price in scaled decimal places"},"functionSelector":"310770b5","id":3810,"implemented":true,"kind":"function","modifiers":[],"name":"getPriceAssuming","nameLocation":"3261:16:31","nodeType":"FunctionDefinition","parameters":{"id":3773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"asset","nameLocation":"3286:5:31","nodeType":"VariableDeclaration","scope":3810,"src":"3278:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3767,"name":"address","nodeType":"ElementaryTypeName","src":"3278:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3772,"mutability":"mutable","name":"externalPrices","nameLocation":"3316:14:31","nodeType":"VariableDeclaration","scope":3810,"src":"3293:37:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ExternalPrice_$3675_memory_ptr_$dyn_memory_ptr","typeString":"struct ReferenceOracle.ExternalPrice[]"},"typeName":{"baseType":{"id":3770,"nodeType":"UserDefinedTypeName","pathNode":{"id":3769,"name":"ExternalPrice","nameLocations":["3293:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":3675,"src":"3293:13:31"},"referencedDeclaration":3675,"src":"3293:13:31","typeDescriptions":{"typeIdentifier":"t_struct$_ExternalPrice_$3675_storage_ptr","typeString":"struct ReferenceOracle.ExternalPrice"}},"id":3771,"nodeType":"ArrayTypeName","src":"3293:15:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ExternalPrice_$3675_storage_$dyn_storage_ptr","typeString":"struct ReferenceOracle.ExternalPrice[]"}},"visibility":"internal"}],"src":"3277:54:31"},"returnParameters":{"id":3776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3810,"src":"3350:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3774,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3349:9:31"},"scope":3911,"src":"3252:361:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":3823,"nodeType":"Block","src":"3832:40:31","statements":[{"expression":{"arguments":[{"id":3820,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"3859:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3819,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"3849:9:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3849:16:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3818,"id":3822,"nodeType":"Return","src":"3842:23:31"}]},"documentation":{"id":3811,"nodeType":"StructuredDocumentation","src":"3619:134:31","text":" @notice Gets price of the asset\n @param asset asset address\n @return USD price in scaled decimal places"},"functionSelector":"41976e09","id":3824,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"3767:8:31","nodeType":"FunctionDefinition","overrides":{"id":3815,"nodeType":"OverrideSpecifier","overrides":[],"src":"3805:8:31"},"parameters":{"id":3814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3813,"mutability":"mutable","name":"asset","nameLocation":"3784:5:31","nodeType":"VariableDeclaration","scope":3824,"src":"3776:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3812,"name":"address","nodeType":"ElementaryTypeName","src":"3776:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3775:15:31"},"returnParameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3824,"src":"3823:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3816,"name":"uint256","nodeType":"ElementaryTypeName","src":"3823:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3822:9:31"},"scope":3911,"src":"3758:114:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3842,"nodeType":"Block","src":"3946:206:31","statements":[{"assignments":[3832],"declarations":[{"constant":false,"id":3832,"mutability":"mutable","name":"slot","nameLocation":"3964:4:31","nodeType":"VariableDeclaration","scope":3842,"src":"3956:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3956:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3840,"initialValue":{"arguments":[{"arguments":[{"id":3836,"name":"PRICES_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"3992:11:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3837,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"4005:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3834,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3981:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3985:6:31","memberName":"encode","nodeType":"MemberAccess","src":"3981:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3981:30:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3833,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3971:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3971:41:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3956:56:31"},{"AST":{"nativeSrc":"4103:43:31","nodeType":"YulBlock","src":"4103:43:31","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4124:4:31","nodeType":"YulIdentifier","src":"4124:4:31"},{"name":"price","nativeSrc":"4130:5:31","nodeType":"YulIdentifier","src":"4130:5:31"}],"functionName":{"name":"tstore","nativeSrc":"4117:6:31","nodeType":"YulIdentifier","src":"4117:6:31"},"nativeSrc":"4117:19:31","nodeType":"YulFunctionCall","src":"4117:19:31"},"nativeSrc":"4117:19:31","nodeType":"YulExpressionStatement","src":"4117:19:31"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3828,"isOffset":false,"isSlot":false,"src":"4130:5:31","valueSize":1},{"declaration":3832,"isOffset":false,"isSlot":false,"src":"4124:4:31","valueSize":1}],"flags":["memory-safe"],"id":3841,"nodeType":"InlineAssembly","src":"4078:68:31"}]},"id":3843,"implemented":true,"kind":"function","modifiers":[],"name":"_storeExternalPrice","nameLocation":"3887:19:31","nodeType":"FunctionDefinition","parameters":{"id":3829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3826,"mutability":"mutable","name":"asset","nameLocation":"3915:5:31","nodeType":"VariableDeclaration","scope":3843,"src":"3907:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3825,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3828,"mutability":"mutable","name":"price","nameLocation":"3930:5:31","nodeType":"VariableDeclaration","scope":3843,"src":"3922:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3827,"name":"uint256","nodeType":"ElementaryTypeName","src":"3922:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3906:30:31"},"returnParameters":{"id":3830,"nodeType":"ParameterList","parameters":[],"src":"3946:0:31"},"scope":3911,"src":"3878:274:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3890,"nodeType":"Block","src":"4224:348:31","statements":[{"assignments":[3851],"declarations":[{"constant":false,"id":3851,"mutability":"mutable","name":"externalPrice","nameLocation":"4242:13:31","nodeType":"VariableDeclaration","scope":3890,"src":"4234:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3850,"name":"uint256","nodeType":"ElementaryTypeName","src":"4234:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3855,"initialValue":{"arguments":[{"id":3853,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4277:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3852,"name":"_loadExternalPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3910,"src":"4258:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4258:25:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4234:49:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3856,"name":"externalPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"4297:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4314:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4297:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3862,"nodeType":"IfStatement","src":"4293:69:31","trueBody":{"id":3861,"nodeType":"Block","src":"4317:45:31","statements":[{"expression":{"id":3859,"name":"externalPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"4338:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3849,"id":3860,"nodeType":"Return","src":"4331:20:31"}]}},{"assignments":[3865],"declarations":[{"constant":false,"id":3865,"mutability":"mutable","name":"oracle","nameLocation":"4387:6:31","nodeType":"VariableDeclaration","scope":3890,"src":"4371:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"},"typeName":{"id":3864,"nodeType":"UserDefinedTypeName","pathNode":{"id":3863,"name":"OracleInterface","nameLocations":["4371:15:31"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"4371:15:31"},"referencedDeclaration":5140,"src":"4371:15:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"visibility":"internal"}],"id":3869,"initialValue":{"baseExpression":{"id":3866,"name":"oracles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"4396:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_OracleInterface_$5140_$","typeString":"mapping(address => contract OracleInterface)"}},"id":3868,"indexExpression":{"id":3867,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4404:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4396:14:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"nodeType":"VariableDeclarationStatement","src":"4371:39:31"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3870,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"4424:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":3874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4458:1:31","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":3873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4450:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3872,"name":"address","nodeType":"ElementaryTypeName","src":"4450:7:31","typeDescriptions":{}}},"id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4450:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3871,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"4434:15:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":3876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:27:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"src":"4424:37:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3884,"nodeType":"IfStatement","src":"4420:97:31","trueBody":{"id":3883,"nodeType":"Block","src":"4463:54:31","statements":[{"expression":{"arguments":[{"id":3880,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4500:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3878,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"4484:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4491:8:31","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"4484:15:31","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4484:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3849,"id":3882,"nodeType":"Return","src":"4477:29:31"}]}},{"expression":{"arguments":[{"id":3887,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4559:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3885,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"4533:16:31","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4550:8:31","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"4533:25:31","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4533:32:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3849,"id":3889,"nodeType":"Return","src":"4526:39:31"}]},"id":3891,"implemented":true,"kind":"function","modifiers":[],"name":"_getPrice","nameLocation":"4167:9:31","nodeType":"FunctionDefinition","parameters":{"id":3846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3845,"mutability":"mutable","name":"asset","nameLocation":"4185:5:31","nodeType":"VariableDeclaration","scope":3891,"src":"4177:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3844,"name":"address","nodeType":"ElementaryTypeName","src":"4177:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4176:15:31"},"returnParameters":{"id":3849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3891,"src":"4215:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3847,"name":"uint256","nodeType":"ElementaryTypeName","src":"4215:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4214:9:31"},"scope":3911,"src":"4158:414:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3909,"nodeType":"Block","src":"4659:207:31","statements":[{"assignments":[3899],"declarations":[{"constant":false,"id":3899,"mutability":"mutable","name":"slot","nameLocation":"4677:4:31","nodeType":"VariableDeclaration","scope":3909,"src":"4669:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4669:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3907,"initialValue":{"arguments":[{"arguments":[{"id":3903,"name":"PRICES_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"4705:11:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3904,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"4718:5:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3901,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4694:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4698:6:31","memberName":"encode","nodeType":"MemberAccess","src":"4694:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4694:30:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3900,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4684:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4684:41:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4669:56:31"},{"AST":{"nativeSrc":"4816:44:31","nodeType":"YulBlock","src":"4816:44:31","statements":[{"nativeSrc":"4830:20:31","nodeType":"YulAssignment","src":"4830:20:31","value":{"arguments":[{"name":"slot","nativeSrc":"4845:4:31","nodeType":"YulIdentifier","src":"4845:4:31"}],"functionName":{"name":"tload","nativeSrc":"4839:5:31","nodeType":"YulIdentifier","src":"4839:5:31"},"nativeSrc":"4839:11:31","nodeType":"YulFunctionCall","src":"4839:11:31"},"variableNames":[{"name":"value","nativeSrc":"4830:5:31","nodeType":"YulIdentifier","src":"4830:5:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3899,"isOffset":false,"isSlot":false,"src":"4845:4:31","valueSize":1},{"declaration":3896,"isOffset":false,"isSlot":false,"src":"4830:5:31","valueSize":1}],"flags":["memory-safe"],"id":3908,"nodeType":"InlineAssembly","src":"4791:69:31"}]},"id":3910,"implemented":true,"kind":"function","modifiers":[],"name":"_loadExternalPrice","nameLocation":"4587:18:31","nodeType":"FunctionDefinition","parameters":{"id":3894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3893,"mutability":"mutable","name":"asset","nameLocation":"4614:5:31","nodeType":"VariableDeclaration","scope":3910,"src":"4606:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3892,"name":"address","nodeType":"ElementaryTypeName","src":"4606:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4605:15:31"},"returnParameters":{"id":3897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3896,"mutability":"mutable","name":"value","nameLocation":"4652:5:31","nodeType":"VariableDeclaration","scope":3910,"src":"4644:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4644:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4643:15:31"},"scope":3911,"src":"4578:288:31","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3912,"src":"733:4135:31","usedErrors":[3618],"usedEvents":[120,227,357,3701]}],"src":"79:4790:31"}},"contracts/ResilientOracle.sol":{"id":32,"ast":{"absolutePath":"contracts/ResilientOracle.sol","exportedSymbols":{"AccessControlledV8":[3554],"BoundValidatorInterface":[5172],"ICappedOracle":[4968],"OracleInterface":[5140],"PausableUpgradeable":[639],"ResilientOracle":[4878],"ResilientOracleInterface":[5160],"Transient":[5251],"VBep20Interface":[5204]},"id":4879,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":3913,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"79:23:32"},{"absolutePath":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol","id":3915,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":640,"src":"104:107:32","symbolAliases":[{"foreign":{"id":3914,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"113:19:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/VBep20Interface.sol","file":"./interfaces/VBep20Interface.sol","id":3917,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":5205,"src":"212:67:32","symbolAliases":[{"foreign":{"id":3916,"name":"VBep20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5204,"src":"221:15:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"./interfaces/OracleInterface.sol","id":3921,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":5173,"src":"280:118:32","symbolAliases":[{"foreign":{"id":3918,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"289:15:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3919,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"306:24:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3920,"name":"BoundValidatorInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"332:23:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":3923,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":3555,"src":"399:117:32","symbolAliases":[{"foreign":{"id":3922,"name":"AccessControlledV8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"408:18:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/ICappedOracle.sol","file":"./interfaces/ICappedOracle.sol","id":3925,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":4969,"src":"517:63:32","symbolAliases":[{"foreign":{"id":3924,"name":"ICappedOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"526:13:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Transient.sol","file":"./lib/Transient.sol","id":3927,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4879,"sourceUnit":5252,"src":"581:48:32","symbolAliases":[{"foreign":{"id":3926,"name":"Transient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"590:9:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3929,"name":"PausableUpgradeable","nameLocations":["2614:19:32"],"nodeType":"IdentifierPath","referencedDeclaration":639,"src":"2614:19:32"},"id":3930,"nodeType":"InheritanceSpecifier","src":"2614:19:32"},{"baseName":{"id":3931,"name":"AccessControlledV8","nameLocations":["2635:18:32"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"2635:18:32"},"id":3932,"nodeType":"InheritanceSpecifier","src":"2635:18:32"},{"baseName":{"id":3933,"name":"ResilientOracleInterface","nameLocations":["2655:24:32"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"2655:24:32"},"id":3934,"nodeType":"InheritanceSpecifier","src":"2655:24:32"}],"canonicalName":"ResilientOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":3928,"nodeType":"StructuredDocumentation","src":"631:1954:32","text":" @title ResilientOracle\n @author Venus\n @notice The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets.\n DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly\n reported prices. If only one oracle is used, this creates a single point of failure and opens a vector\n for attacking the protocol.\n The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect\n the protocol from oracle attacks.\n For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per\n vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot\n oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source.\n To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every\n market. The upper bound ratio represents the deviation between reported price (the price that’s being\n validated) and the anchor price (the price we are validating against) above which the reported price will\n be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below\n which the reported price will be invalidated. So for oracle price to be considered valid the below statement\n should be true:\n```\nanchorRatio = anchorPrice/reporterPrice\nisValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio\n```\n In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending\n on which supports the given market and Binance oracle is used as the fallback oracle.\n For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the\n oracle to be stagnant and treat it like it's disabled."},"fullyImplemented":true,"id":4878,"linearizedBaseContracts":[4878,5160,5140,3554,209,342,639,1020,511],"name":"ResilientOracle","nameLocation":"2595:15:32","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ResilientOracle.OracleRole","documentation":{"id":3935,"nodeType":"StructuredDocumentation","src":"2686:227:32","text":" @dev Oracle roles:\n **main**: The most trustworthy price source\n **pivot**: Price oracle used as a loose sanity checker\n **fallback**: The backup source when main oracle price is invalidated"},"id":3939,"members":[{"id":3936,"name":"MAIN","nameLocation":"2944:4:32","nodeType":"EnumValue","src":"2944:4:32"},{"id":3937,"name":"PIVOT","nameLocation":"2958:5:32","nodeType":"EnumValue","src":"2958:5:32"},{"id":3938,"name":"FALLBACK","nameLocation":"2973:8:32","nodeType":"EnumValue","src":"2973:8:32"}],"name":"OracleRole","nameLocation":"2923:10:32","nodeType":"EnumDefinition","src":"2918:69:32"},{"canonicalName":"ResilientOracle.TokenConfig","id":3956,"members":[{"constant":false,"id":3942,"mutability":"mutable","name":"asset","nameLocation":"3064:5:32","nodeType":"VariableDeclaration","scope":3956,"src":"3056:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3941,"name":"address","nodeType":"ElementaryTypeName","src":"3056:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3947,"mutability":"mutable","name":"oracles","nameLocation":"3295:7:32","nodeType":"VariableDeclaration","scope":3956,"src":"3284:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_storage_ptr","typeString":"address[3]"},"typeName":{"baseType":{"id":3944,"name":"address","nodeType":"ElementaryTypeName","src":"3284:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3946,"length":{"hexValue":"33","id":3945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3292:1:32","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3284:10:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_storage_ptr","typeString":"address[3]"}},"visibility":"internal"},{"constant":false,"id":3952,"mutability":"mutable","name":"enableFlagsForOracles","nameLocation":"3448:21:32","nodeType":"VariableDeclaration","scope":3956,"src":"3440:29:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$3_storage_ptr","typeString":"bool[3]"},"typeName":{"baseType":{"id":3949,"name":"bool","nodeType":"ElementaryTypeName","src":"3440:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3951,"length":{"hexValue":"33","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3445:1:32","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3440:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$3_storage_ptr","typeString":"bool[3]"}},"visibility":"internal"},{"constant":false,"id":3955,"mutability":"mutable","name":"cachingEnabled","nameLocation":"3587:14:32","nodeType":"VariableDeclaration","scope":3956,"src":"3582:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3954,"name":"bool","nodeType":"ElementaryTypeName","src":"3582:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"TokenConfig","nameLocation":"3000:11:32","nodeType":"StructDefinition","scope":4878,"src":"2993:615:32","visibility":"public"},{"constant":true,"functionSelector":"4bf39cba","id":3959,"mutability":"constant","name":"INVALID_PRICE","nameLocation":"3638:13:32","nodeType":"VariableDeclaration","scope":4878,"src":"3614:41:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3957,"name":"uint256","nodeType":"ElementaryTypeName","src":"3614:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3654:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"constant":false,"documentation":{"id":3960,"nodeType":"StructuredDocumentation","src":"3662:99:32","text":"@notice Native market address\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"8a2f7f6d","id":3962,"mutability":"immutable","name":"nativeMarket","nameLocation":"3791:12:32","nodeType":"VariableDeclaration","scope":4878,"src":"3766:37:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3961,"name":"address","nodeType":"ElementaryTypeName","src":"3766:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":3963,"nodeType":"StructuredDocumentation","src":"3810:89:32","text":"@notice VAI address\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"b62e4c92","id":3965,"mutability":"immutable","name":"vai","nameLocation":"3929:3:32","nodeType":"VariableDeclaration","scope":4878,"src":"3904:28:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3964,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":true,"documentation":{"id":3966,"nodeType":"StructuredDocumentation","src":"3939:195:32","text":"@notice Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc)\n and can serve as any underlying asset of a market that supports native tokens"},"functionSelector":"a9534f8a","id":3969,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"4163:17:32","nodeType":"VariableDeclaration","scope":4878,"src":"4139:86:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3967,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":3968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4183:42:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":true,"documentation":{"id":3970,"nodeType":"StructuredDocumentation","src":"4232:292:32","text":"@notice Slot to cache the asset's price, used for transient storage\n custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache\n keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))\n   & ~bytes32(uint256(0xff))"},"functionSelector":"e9d1284f","id":3973,"mutability":"constant","name":"CACHE_SLOT","nameLocation":"4553:10:32","nodeType":"VariableDeclaration","scope":4878,"src":"4529:103:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4529:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834653939656335353937323333326635653065663963363632333139326330343031623630393136316266666165363464396363646437616436636337383030","id":3972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4566:66:32","typeDescriptions":{"typeIdentifier":"t_rational_35552360910055816473539994211441046997876692168526005926700189501615120349184_by_1","typeString":"int_const 3555...(69 digits omitted)...9184"},"value":"0x4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800"},"visibility":"public"},{"constant":false,"documentation":{"id":3974,"nodeType":"StructuredDocumentation","src":"4639:110:32","text":"@notice Bound validator contract address\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"33d33494","id":3977,"mutability":"immutable","name":"boundValidator","nameLocation":"4795:14:32","nodeType":"VariableDeclaration","scope":4878,"src":"4754:55:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"},"typeName":{"id":3976,"nodeType":"UserDefinedTypeName","pathNode":{"id":3975,"name":"BoundValidatorInterface","nameLocations":["4754:23:32"],"nodeType":"IdentifierPath","referencedDeclaration":5172,"src":"4754:23:32"},"referencedDeclaration":5172,"src":"4754:23:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"visibility":"public"},{"constant":false,"id":3982,"mutability":"mutable","name":"tokenConfigs","nameLocation":"4856:12:32","nodeType":"VariableDeclaration","scope":4878,"src":"4816:52:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig)"},"typeName":{"id":3981,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3978,"name":"address","nodeType":"ElementaryTypeName","src":"4824:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4816:31:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3980,"nodeType":"UserDefinedTypeName","pathNode":{"id":3979,"name":"TokenConfig","nameLocations":["4835:11:32"],"nodeType":"IdentifierPath","referencedDeclaration":3956,"src":"4835:11:32"},"referencedDeclaration":3956,"src":"4835:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage_ptr","typeString":"struct ResilientOracle.TokenConfig"}}},"visibility":"private"},{"anonymous":false,"eventSelector":"a51ad01e2270c314a7b78f0c60fe66c723f2d06c121d63fcdce776e654878fc1","id":3992,"name":"TokenConfigAdded","nameLocation":"4881:16:32","nodeType":"EventDefinition","parameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"4923:5:32","nodeType":"VariableDeclaration","scope":3992,"src":"4907:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3983,"name":"address","nodeType":"ElementaryTypeName","src":"4907:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3986,"indexed":true,"mutability":"mutable","name":"mainOracle","nameLocation":"4954:10:32","nodeType":"VariableDeclaration","scope":3992,"src":"4938:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3985,"name":"address","nodeType":"ElementaryTypeName","src":"4938:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3988,"indexed":true,"mutability":"mutable","name":"pivotOracle","nameLocation":"4990:11:32","nodeType":"VariableDeclaration","scope":3992,"src":"4974:27:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3987,"name":"address","nodeType":"ElementaryTypeName","src":"4974:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3990,"indexed":false,"mutability":"mutable","name":"fallbackOracle","nameLocation":"5019:14:32","nodeType":"VariableDeclaration","scope":3992,"src":"5011:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3989,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4897:142:32"},"src":"4875:165:32"},{"anonymous":false,"documentation":{"id":3993,"nodeType":"StructuredDocumentation","src":"5046:39:32","text":"Event emitted when an oracle is set"},"eventSelector":"ea681d3efb830ef032a9c29a7215b5ceeeb546250d2c463dbf87817aecda1bf1","id":4001,"name":"OracleSet","nameLocation":"5096:9:32","nodeType":"EventDefinition","parameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3995,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"5122:5:32","nodeType":"VariableDeclaration","scope":4001,"src":"5106:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3994,"name":"address","nodeType":"ElementaryTypeName","src":"5106:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3997,"indexed":true,"mutability":"mutable","name":"oracle","nameLocation":"5145:6:32","nodeType":"VariableDeclaration","scope":4001,"src":"5129:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3996,"name":"address","nodeType":"ElementaryTypeName","src":"5129:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3999,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"5169:4:32","nodeType":"VariableDeclaration","scope":4001,"src":"5153:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3998,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:69:32"},"src":"5090:85:32"},{"anonymous":false,"documentation":{"id":4002,"nodeType":"StructuredDocumentation","src":"5181:55:32","text":"Event emitted when an oracle is enabled or disabled"},"eventSelector":"cf3cad1ec87208efbde5d82a0557484a78d4182c3ad16926a5463bc1f7234b3d","id":4010,"name":"OracleEnabled","nameLocation":"5247:13:32","nodeType":"EventDefinition","parameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4004,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"5277:5:32","nodeType":"VariableDeclaration","scope":4010,"src":"5261:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4003,"name":"address","nodeType":"ElementaryTypeName","src":"5261:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4006,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"5300:4:32","nodeType":"VariableDeclaration","scope":4010,"src":"5284:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4005,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4008,"indexed":true,"mutability":"mutable","name":"enable","nameLocation":"5319:6:32","nodeType":"VariableDeclaration","scope":4010,"src":"5306:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4007,"name":"bool","nodeType":"ElementaryTypeName","src":"5306:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5260:66:32"},"src":"5241:86:32"},{"anonymous":false,"documentation":{"id":4011,"nodeType":"StructuredDocumentation","src":"5333:58:32","text":"Event emitted when an asset cachingEnabled flag is set"},"eventSelector":"ca250c5374abedcbf71c0e3eda7ff4cf940fa9e6561d8cd31d2bf480a140a93f","id":4017,"name":"CachedEnabled","nameLocation":"5402:13:32","nodeType":"EventDefinition","parameters":{"id":4016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"5432:5:32","nodeType":"VariableDeclaration","scope":4017,"src":"5416:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4012,"name":"address","nodeType":"ElementaryTypeName","src":"5416:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4015,"indexed":true,"mutability":"mutable","name":"enabled","nameLocation":"5452:7:32","nodeType":"VariableDeclaration","scope":4017,"src":"5439:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4014,"name":"bool","nodeType":"ElementaryTypeName","src":"5439:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5415:45:32"},"src":"5396:65:32"},{"body":{"id":4034,"nodeType":"Block","src":"5580:86:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4022,"name":"someone","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4020,"src":"5594:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5613:1:32","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":4024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5605:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4023,"name":"address","nodeType":"ElementaryTypeName","src":"5605:7:32","typeDescriptions":{}}},"id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5605:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5594:21:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4032,"nodeType":"IfStatement","src":"5590:58:32","trueBody":{"expression":{"arguments":[{"hexValue":"63616e2774206265207a65726f2061646472657373","id":4029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5624:23:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""},"value":"can't be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""}],"id":4028,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5617:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4031,"nodeType":"ExpressionStatement","src":"5617:31:32"}},{"id":4033,"nodeType":"PlaceholderStatement","src":"5658:1:32"}]},"documentation":{"id":4018,"nodeType":"StructuredDocumentation","src":"5467:67:32","text":" @notice Checks whether an address is null or not"},"id":4035,"name":"notNullAddress","nameLocation":"5548:14:32","nodeType":"ModifierDefinition","parameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4020,"mutability":"mutable","name":"someone","nameLocation":"5571:7:32","nodeType":"VariableDeclaration","scope":4035,"src":"5563:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4019,"name":"address","nodeType":"ElementaryTypeName","src":"5563:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5562:17:32"},"src":"5539:127:32","virtual":false,"visibility":"internal"},{"body":{"id":4055,"nodeType":"Block","src":"5963:106:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":4040,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"5977:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4042,"indexExpression":{"id":4041,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"5990:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5977:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5997:5:32","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3942,"src":"5977:25:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6014:1:32","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":4045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6006:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4044,"name":"address","nodeType":"ElementaryTypeName","src":"6006:7:32","typeDescriptions":{}}},"id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6006:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5977:39:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4053,"nodeType":"IfStatement","src":"5973:78:32","trueBody":{"expression":{"arguments":[{"hexValue":"746f6b656e20636f6e666967206d757374206578697374","id":4050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6025:25:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_649a0ba5df30129af38854c5145b90047eb942e20a1b0378189629f4b3edaf67","typeString":"literal_string \"token config must exist\""},"value":"token config must exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_649a0ba5df30129af38854c5145b90047eb942e20a1b0378189629f4b3edaf67","typeString":"literal_string \"token config must exist\""}],"id":4049,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6018:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:33:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4052,"nodeType":"ExpressionStatement","src":"6018:33:32"}},{"id":4054,"nodeType":"PlaceholderStatement","src":"6061:1:32"}]},"documentation":{"id":4036,"nodeType":"StructuredDocumentation","src":"5672:236:32","text":" @notice Checks whether token config exists by checking whether asset is null address\n @dev address can't be null, so it's suitable to be used to check the validity of the config\n @param asset asset address"},"id":4056,"name":"checkTokenConfigExistence","nameLocation":"5922:25:32","nodeType":"ModifierDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"asset","nameLocation":"5956:5:32","nodeType":"VariableDeclaration","scope":4056,"src":"5948:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4037,"name":"address","nodeType":"ElementaryTypeName","src":"5948:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5947:15:32"},"src":"5913:156:32","virtual":false,"visibility":"internal"},{"body":{"id":4088,"nodeType":"Block","src":"6885:152:32","statements":[{"expression":{"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4073,"name":"nativeMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"6895:12:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4074,"name":"nativeMarketAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"6910:19:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6895:34:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4076,"nodeType":"ExpressionStatement","src":"6895:34:32"},{"expression":{"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4077,"name":"vai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3965,"src":"6939:3:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4078,"name":"vaiAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"6945:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6939:16:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4080,"nodeType":"ExpressionStatement","src":"6939:16:32"},{"expression":{"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4081,"name":"boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3977,"src":"6965:14:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4082,"name":"_boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"6982:15:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"src":"6965:32:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"id":4084,"nodeType":"ExpressionStatement","src":"6965:32:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4085,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"7008:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7008:22:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4087,"nodeType":"ExpressionStatement","src":"7008:22:32"}]},"documentation":{"id":4057,"nodeType":"StructuredDocumentation","src":"6075:632:32","text":"@notice Constructor for the implementation contract. Sets immutable variables.\n @dev nativeMarketAddress can be address(0) if on the chain we do not support native market\n      (e.g vETH on ethereum would not be supported, only vWETH)\n @param nativeMarketAddress The address of a native market (for bsc it would be vBNB address)\n @param vaiAddress The address of the VAI token (if there is VAI on the deployed chain).\n          Set to address(0) of VAI is not existent.\n @param _boundValidator Address of the bound validator contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":4089,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"id":4069,"name":"_boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"6867:15:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}],"id":4068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6859:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4067,"name":"address","nodeType":"ElementaryTypeName","src":"6859:7:32","typeDescriptions":{}}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6859:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4071,"kind":"modifierInvocation","modifierName":{"id":4066,"name":"notNullAddress","nameLocations":["6844:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"6844:14:32"},"nodeType":"ModifierInvocation","src":"6844:40:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"nativeMarketAddress","nameLocation":"6741:19:32","nodeType":"VariableDeclaration","scope":4089,"src":"6733:27:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4058,"name":"address","nodeType":"ElementaryTypeName","src":"6733:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4061,"mutability":"mutable","name":"vaiAddress","nameLocation":"6778:10:32","nodeType":"VariableDeclaration","scope":4089,"src":"6770:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4060,"name":"address","nodeType":"ElementaryTypeName","src":"6770:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4064,"mutability":"mutable","name":"_boundValidator","nameLocation":"6822:15:32","nodeType":"VariableDeclaration","scope":4089,"src":"6798:39:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"},"typeName":{"id":4063,"nodeType":"UserDefinedTypeName","pathNode":{"id":4062,"name":"BoundValidatorInterface","nameLocations":["6798:23:32"],"nodeType":"IdentifierPath","referencedDeclaration":5172,"src":"6798:23:32"},"referencedDeclaration":5172,"src":"6798:23:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"visibility":"internal"}],"src":"6723:120:32"},"returnParameters":{"id":4072,"nodeType":"ParameterList","parameters":[],"src":"6885:0:32"},"scope":4878,"src":"6712:325:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4104,"nodeType":"Block","src":"7305:90:32","statements":[{"expression":{"arguments":[{"id":4098,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"7339:21:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4097,"name":"__AccessControlled_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"7315:23:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7315:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4100,"nodeType":"ExpressionStatement","src":"7315:46:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4101,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"7371:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7371:17:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4103,"nodeType":"ExpressionStatement","src":"7371:17:32"}]},"documentation":{"id":4090,"nodeType":"StructuredDocumentation","src":"7043:185:32","text":" @notice Initializes the contract admin and sets the BoundValidator contract address\n @param accessControlManager_ Address of the access control manager contract"},"functionSelector":"c4d66de8","id":4105,"implemented":true,"kind":"function","modifiers":[{"id":4095,"kind":"modifierInvocation","modifierName":{"id":4094,"name":"initializer","nameLocations":["7293:11:32"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"7293:11:32"},"nodeType":"ModifierInvocation","src":"7293:11:32"}],"name":"initialize","nameLocation":"7242:10:32","nodeType":"FunctionDefinition","parameters":{"id":4093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4092,"mutability":"mutable","name":"accessControlManager_","nameLocation":"7261:21:32","nodeType":"VariableDeclaration","scope":4105,"src":"7253:29:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4091,"name":"address","nodeType":"ElementaryTypeName","src":"7253:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7252:31:32"},"returnParameters":{"id":4096,"nodeType":"ParameterList","parameters":[],"src":"7305:0:32"},"scope":4878,"src":"7233:162:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4116,"nodeType":"Block","src":"7510:65:32","statements":[{"expression":{"arguments":[{"hexValue":"70617573652829","id":4110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7540:9:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_8456cb591a934d53f6ccc6332123a165a1f3562907bf11330d847a29ca49eb89","typeString":"literal_string \"pause()\""},"value":"pause()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8456cb591a934d53f6ccc6332123a165a1f3562907bf11330d847a29ca49eb89","typeString":"literal_string \"pause()\""}],"id":4109,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"7520:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7520:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4112,"nodeType":"ExpressionStatement","src":"7520:30:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4113,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"7560:6:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:8:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4115,"nodeType":"ExpressionStatement","src":"7560:8:32"}]},"documentation":{"id":4106,"nodeType":"StructuredDocumentation","src":"7401:78:32","text":" @notice Pauses oracle\n @custom:access Only Governance"},"functionSelector":"8456cb59","id":4117,"implemented":true,"kind":"function","modifiers":[],"name":"pause","nameLocation":"7493:5:32","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[],"src":"7498:2:32"},"returnParameters":{"id":4108,"nodeType":"ParameterList","parameters":[],"src":"7510:0:32"},"scope":4878,"src":"7484:91:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4128,"nodeType":"Block","src":"7694:69:32","statements":[{"expression":{"arguments":[{"hexValue":"756e70617573652829","id":4122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7724:11:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_3f4ba83af89dc9793996d9e56b8abe6dc88cd97c9c2bb23027806e9c1ffd54dc","typeString":"literal_string \"unpause()\""},"value":"unpause()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3f4ba83af89dc9793996d9e56b8abe6dc88cd97c9c2bb23027806e9c1ffd54dc","typeString":"literal_string \"unpause()\""}],"id":4121,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"7704:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4124,"nodeType":"ExpressionStatement","src":"7704:32:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4125,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"7746:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7746:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4127,"nodeType":"ExpressionStatement","src":"7746:10:32"}]},"documentation":{"id":4118,"nodeType":"StructuredDocumentation","src":"7581:80:32","text":" @notice Unpauses oracle\n @custom:access Only Governance"},"functionSelector":"3f4ba83a","id":4129,"implemented":true,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"7675:7:32","nodeType":"FunctionDefinition","parameters":{"id":4119,"nodeType":"ParameterList","parameters":[],"src":"7682:2:32"},"returnParameters":{"id":4120,"nodeType":"ParameterList","parameters":[],"src":"7694:0:32"},"scope":4878,"src":"7666:97:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4168,"nodeType":"Block","src":"8069:239:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4137,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"8083:13:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$3956_memory_ptr_$dyn_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory[] memory"}},"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8097:6:32","memberName":"length","nodeType":"MemberAccess","src":"8083:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8107:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8083:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4145,"nodeType":"IfStatement","src":"8079:58:32","trueBody":{"expression":{"arguments":[{"hexValue":"6c656e6774682063616e27742062652030","id":4142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8117:19:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bcde6d36e25ff80edf1e7b323425b7fef87f9e0a4cccb1475b35b230048c1ed","typeString":"literal_string \"length can't be 0\""},"value":"length can't be 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2bcde6d36e25ff80edf1e7b323425b7fef87f9e0a4cccb1475b35b230048c1ed","typeString":"literal_string \"length can't be 0\""}],"id":4141,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8110:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8110:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4144,"nodeType":"ExpressionStatement","src":"8110:27:32"}},{"assignments":[4147],"declarations":[{"constant":false,"id":4147,"mutability":"mutable","name":"numTokenConfigs","nameLocation":"8155:15:32","nodeType":"VariableDeclaration","scope":4168,"src":"8147:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4146,"name":"uint256","nodeType":"ElementaryTypeName","src":"8147:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4150,"initialValue":{"expression":{"id":4148,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"8173:13:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$3956_memory_ptr_$dyn_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory[] memory"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8187:6:32","memberName":"length","nodeType":"MemberAccess","src":"8173:20:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8147:46:32"},{"body":{"id":4166,"nodeType":"Block","src":"8245:57:32","statements":[{"expression":{"arguments":[{"baseExpression":{"id":4161,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"8274:13:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$3956_memory_ptr_$dyn_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory[] memory"}},"id":4163,"indexExpression":{"id":4162,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"8288:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8274:16:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}],"id":4160,"name":"setTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"8259:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_TokenConfig_$3956_memory_ptr_$returns$__$","typeString":"function (struct ResilientOracle.TokenConfig memory)"}},"id":4164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8259:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4165,"nodeType":"ExpressionStatement","src":"8259:32:32"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4154,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"8219:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4155,"name":"numTokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"8223:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8219:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4167,"initializationExpression":{"assignments":[4152],"declarations":[{"constant":false,"id":4152,"mutability":"mutable","name":"i","nameLocation":"8216:1:32","nodeType":"VariableDeclaration","scope":4167,"src":"8208:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4151,"name":"uint256","nodeType":"ElementaryTypeName","src":"8208:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4153,"nodeType":"VariableDeclarationStatement","src":"8208:9:32"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8240:3:32","subExpression":{"id":4157,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"8242:1:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4159,"nodeType":"ExpressionStatement","src":"8240:3:32"},"nodeType":"ForStatement","src":"8203:99:32"}]},"documentation":{"id":4130,"nodeType":"StructuredDocumentation","src":"7769:225:32","text":" @notice Batch sets token configs\n @param tokenConfigs_ Token config array\n @custom:access Only Governance\n @custom:error Throws a length error if the length of the token configs array is 0"},"functionSelector":"883cfb91","id":4169,"implemented":true,"kind":"function","modifiers":[],"name":"setTokenConfigs","nameLocation":"8008:15:32","nodeType":"FunctionDefinition","parameters":{"id":4135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"tokenConfigs_","nameLocation":"8045:13:32","nodeType":"VariableDeclaration","scope":4169,"src":"8024:34:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$3956_memory_ptr_$dyn_memory_ptr","typeString":"struct ResilientOracle.TokenConfig[]"},"typeName":{"baseType":{"id":4132,"nodeType":"UserDefinedTypeName","pathNode":{"id":4131,"name":"TokenConfig","nameLocations":["8024:11:32"],"nodeType":"IdentifierPath","referencedDeclaration":3956,"src":"8024:11:32"},"referencedDeclaration":3956,"src":"8024:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage_ptr","typeString":"struct ResilientOracle.TokenConfig"}},"id":4133,"nodeType":"ArrayTypeName","src":"8024:13:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$3956_storage_$dyn_storage_ptr","typeString":"struct ResilientOracle.TokenConfig[]"}},"visibility":"internal"}],"src":"8023:36:32"},"returnParameters":{"id":4136,"nodeType":"ParameterList","parameters":[],"src":"8069:0:32"},"scope":4878,"src":"7999:309:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4227,"nodeType":"Block","src":"9112:297:32","statements":[{"expression":{"arguments":[{"hexValue":"7365744f7261636c6528616464726573732c616464726573732c75696e743829","id":4187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9142:34:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_a6b1344a5349a6c5dde4103cdf4e8bd779aee8aea49f0c2bdbbe369854af3648","typeString":"literal_string \"setOracle(address,address,uint8)\""},"value":"setOracle(address,address,uint8)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a6b1344a5349a6c5dde4103cdf4e8bd779aee8aea49f0c2bdbbe369854af3648","typeString":"literal_string \"setOracle(address,address,uint8)\""}],"id":4186,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"9122:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9122:55:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4189,"nodeType":"ExpressionStatement","src":"9122:55:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4190,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"9191:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9209:1:32","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":4192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9201:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4191,"name":"address","nodeType":"ElementaryTypeName","src":"9201:7:32","typeDescriptions":{}}},"id":4194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9201:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9191:20:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"},"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4196,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"9215:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4197,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"9223:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9234:4:32","memberName":"MAIN","nodeType":"MemberAccess","referencedDeclaration":3936,"src":"9223:15:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}},"src":"9215:23:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9191:47:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4205,"nodeType":"IfStatement","src":"9187:100:32","trueBody":{"expression":{"arguments":[{"hexValue":"63616e277420736574207a65726f206164647265737320746f206d61696e206f7261636c65","id":4202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9247:39:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bd7f3e324856b3efda8ceaed8290812766704969ef515d198dcc42765e37ae1","typeString":"literal_string \"can't set zero address to main oracle\""},"value":"can't set zero address to main oracle"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2bd7f3e324856b3efda8ceaed8290812766704969ef515d198dcc42765e37ae1","typeString":"literal_string \"can't set zero address to main oracle\""}],"id":4201,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9240:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9240:47:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4204,"nodeType":"ExpressionStatement","src":"9240:47:32"}},{"expression":{"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4206,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"9297:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4208,"indexExpression":{"id":4207,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9310:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9297:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9317:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"9297:27:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_storage","typeString":"address[3] storage ref"}},"id":4214,"indexExpression":{"arguments":[{"id":4212,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"9333:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9325:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4210,"name":"uint256","nodeType":"ElementaryTypeName","src":"9325:7:32","typeDescriptions":{}}},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9325:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9297:42:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4215,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"9342:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9297:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4217,"nodeType":"ExpressionStatement","src":"9297:51:32"},{"eventCall":{"arguments":[{"id":4219,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9373:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4220,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"9380:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4223,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"9396:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9388:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4221,"name":"uint256","nodeType":"ElementaryTypeName","src":"9388:7:32","typeDescriptions":{}}},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9388:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4218,"name":"OracleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4001,"src":"9363:9:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9363:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4226,"nodeType":"EmitStatement","src":"9358:44:32"}]},"documentation":{"id":4170,"nodeType":"StructuredDocumentation","src":"8314:632:32","text":" @notice Sets oracle for a given asset and role.\n @dev Supplied asset **must** exist and main oracle may not be null\n @param asset Asset address\n @param oracle Oracle address\n @param role Oracle role\n @custom:access Only Governance\n @custom:error Null address error if main-role oracle address is null\n @custom:error NotNullAddress error is thrown if asset address is null\n @custom:error TokenConfigExistance error is thrown if token config is not set\n @custom:event Emits OracleSet event with asset address, oracle address and role of the oracle for the asset"},"functionSelector":"a6b1344a","id":4228,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":4180,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9072:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4181,"kind":"modifierInvocation","modifierName":{"id":4179,"name":"notNullAddress","nameLocations":["9057:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"9057:14:32"},"nodeType":"ModifierInvocation","src":"9057:21:32"},{"arguments":[{"id":4183,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9105:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4184,"kind":"modifierInvocation","modifierName":{"id":4182,"name":"checkTokenConfigExistence","nameLocations":["9079:25:32"],"nodeType":"IdentifierPath","referencedDeclaration":4056,"src":"9079:25:32"},"nodeType":"ModifierInvocation","src":"9079:32:32"}],"name":"setOracle","nameLocation":"8960:9:32","nodeType":"FunctionDefinition","parameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4172,"mutability":"mutable","name":"asset","nameLocation":"8987:5:32","nodeType":"VariableDeclaration","scope":4228,"src":"8979:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4171,"name":"address","nodeType":"ElementaryTypeName","src":"8979:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4174,"mutability":"mutable","name":"oracle","nameLocation":"9010:6:32","nodeType":"VariableDeclaration","scope":4228,"src":"9002:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4173,"name":"address","nodeType":"ElementaryTypeName","src":"9002:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4177,"mutability":"mutable","name":"role","nameLocation":"9037:4:32","nodeType":"VariableDeclaration","scope":4228,"src":"9026:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"},"typeName":{"id":4176,"nodeType":"UserDefinedTypeName","pathNode":{"id":4175,"name":"OracleRole","nameLocations":["9026:10:32"],"nodeType":"IdentifierPath","referencedDeclaration":3939,"src":"9026:10:32"},"referencedDeclaration":3939,"src":"9026:10:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}},"visibility":"internal"}],"src":"8969:78:32"},"returnParameters":{"id":4185,"nodeType":"ParameterList","parameters":[],"src":"9112:0:32"},"scope":4878,"src":"8951:458:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4270,"nodeType":"Block","src":"10217:205:32","statements":[{"expression":{"arguments":[{"hexValue":"656e61626c654f7261636c6528616464726573732c75696e74382c626f6f6c29","id":4246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10247:34:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b932b8f6c9428f30a19bd13e87971dde4a4a5a042670087e94f3517091819b0","typeString":"literal_string \"enableOracle(address,uint8,bool)\""},"value":"enableOracle(address,uint8,bool)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4b932b8f6c9428f30a19bd13e87971dde4a4a5a042670087e94f3517091819b0","typeString":"literal_string \"enableOracle(address,uint8,bool)\""}],"id":4245,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"10227:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10227:55:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4248,"nodeType":"ExpressionStatement","src":"10227:55:32"},{"expression":{"id":4259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4249,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"10292:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4251,"indexExpression":{"id":4250,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"10305:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10292:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10312:21:32","memberName":"enableFlagsForOracles","nodeType":"MemberAccess","referencedDeclaration":3952,"src":"10292:41:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$3_storage","typeString":"bool[3] storage ref"}},"id":4257,"indexExpression":{"arguments":[{"id":4255,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4234,"src":"10342:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10334:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4253,"name":"uint256","nodeType":"ElementaryTypeName","src":"10334:7:32","typeDescriptions":{}}},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10334:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10292:56:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4258,"name":"enable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4236,"src":"10351:6:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10292:65:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4260,"nodeType":"ExpressionStatement","src":"10292:65:32"},{"eventCall":{"arguments":[{"id":4262,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"10386:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4265,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4234,"src":"10401:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10393:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4263,"name":"uint256","nodeType":"ElementaryTypeName","src":"10393:7:32","typeDescriptions":{}}},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10393:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4267,"name":"enable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4236,"src":"10408:6:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4261,"name":"OracleEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"10372:13:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10372:43:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4269,"nodeType":"EmitStatement","src":"10367:48:32"}]},"documentation":{"id":4229,"nodeType":"StructuredDocumentation","src":"9415:636:32","text":" @notice Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\n @dev Configuration for the asset **must** already exist and the asset cannot be 0 address\n @param asset Asset address\n @param role Oracle role\n @param enable Enabled boolean of the oracle\n @custom:access Only Governance\n @custom:error NotNullAddress error is thrown if asset address is null\n @custom:error TokenConfigExistance error is thrown if token config is not set\n @custom:event Emits OracleEnabled event with asset address, role of the oracle and enabled flag"},"functionSelector":"4b932b8f","id":4271,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":4239,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"10177:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4240,"kind":"modifierInvocation","modifierName":{"id":4238,"name":"notNullAddress","nameLocations":["10162:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"10162:14:32"},"nodeType":"ModifierInvocation","src":"10162:21:32"},{"arguments":[{"id":4242,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"10210:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4243,"kind":"modifierInvocation","modifierName":{"id":4241,"name":"checkTokenConfigExistence","nameLocations":["10184:25:32"],"nodeType":"IdentifierPath","referencedDeclaration":4056,"src":"10184:25:32"},"nodeType":"ModifierInvocation","src":"10184:32:32"}],"name":"enableOracle","nameLocation":"10065:12:32","nodeType":"FunctionDefinition","parameters":{"id":4237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"asset","nameLocation":"10095:5:32","nodeType":"VariableDeclaration","scope":4271,"src":"10087:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4230,"name":"address","nodeType":"ElementaryTypeName","src":"10087:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4234,"mutability":"mutable","name":"role","nameLocation":"10121:4:32","nodeType":"VariableDeclaration","scope":4271,"src":"10110:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"},"typeName":{"id":4233,"nodeType":"UserDefinedTypeName","pathNode":{"id":4232,"name":"OracleRole","nameLocations":["10110:10:32"],"nodeType":"IdentifierPath","referencedDeclaration":3939,"src":"10110:10:32"},"referencedDeclaration":3939,"src":"10110:10:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}},"visibility":"internal"},{"constant":false,"id":4236,"mutability":"mutable","name":"enable","nameLocation":"10140:6:32","nodeType":"VariableDeclaration","scope":4271,"src":"10135:11:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4235,"name":"bool","nodeType":"ElementaryTypeName","src":"10135:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10077:75:32"},"returnParameters":{"id":4244,"nodeType":"ParameterList","parameters":[],"src":"10217:0:32"},"scope":4878,"src":"10056:366:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5147],"body":{"id":4288,"nodeType":"Block","src":"10675:94:32","statements":[{"assignments":[4279],"declarations":[{"constant":false,"id":4279,"mutability":"mutable","name":"asset","nameLocation":"10693:5:32","nodeType":"VariableDeclaration","scope":4288,"src":"10685:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4278,"name":"address","nodeType":"ElementaryTypeName","src":"10685:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4283,"initialValue":{"arguments":[{"id":4281,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4274,"src":"10721:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4280,"name":"_getUnderlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4863,"src":"10701:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10701:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10685:43:32"},{"expression":{"arguments":[{"id":4285,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"10756:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4284,"name":"_updateAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"10738:17:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4287,"nodeType":"ExpressionStatement","src":"10738:24:32"}]},"documentation":{"id":4272,"nodeType":"StructuredDocumentation","src":"10428:187:32","text":" @notice Updates the capped main oracle snapshot.\n @dev This function should always be called before calling getUnderlyingPrice\n @param vToken vToken address"},"functionSelector":"96e85ced","id":4289,"implemented":true,"kind":"function","modifiers":[],"name":"updatePrice","nameLocation":"10629:11:32","nodeType":"FunctionDefinition","overrides":{"id":4276,"nodeType":"OverrideSpecifier","overrides":[],"src":"10666:8:32"},"parameters":{"id":4275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4274,"mutability":"mutable","name":"vToken","nameLocation":"10649:6:32","nodeType":"VariableDeclaration","scope":4289,"src":"10641:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4273,"name":"address","nodeType":"ElementaryTypeName","src":"10641:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10640:16:32"},"returnParameters":{"id":4277,"nodeType":"ParameterList","parameters":[],"src":"10675:0:32"},"scope":4878,"src":"10620:149:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5152],"body":{"id":4299,"nodeType":"Block","src":"11005:41:32","statements":[{"expression":{"arguments":[{"id":4296,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"11033:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4295,"name":"_updateAssetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"11015:17:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11015:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4298,"nodeType":"ExpressionStatement","src":"11015:24:32"}]},"documentation":{"id":4290,"nodeType":"StructuredDocumentation","src":"10775:175:32","text":" @notice Updates the capped main oracle snapshot.\n @dev This function should always be called before calling getPrice\n @param asset asset address"},"functionSelector":"b62cad69","id":4300,"implemented":true,"kind":"function","modifiers":[],"name":"updateAssetPrice","nameLocation":"10964:16:32","nodeType":"FunctionDefinition","parameters":{"id":4293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4292,"mutability":"mutable","name":"asset","nameLocation":"10989:5:32","nodeType":"VariableDeclaration","scope":4300,"src":"10981:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4291,"name":"address","nodeType":"ElementaryTypeName","src":"10981:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10980:15:32"},"returnParameters":{"id":4294,"nodeType":"ParameterList","parameters":[],"src":"11005:0:32"},"scope":4878,"src":"10955:91:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4313,"nodeType":"Block","src":"11279:43:32","statements":[{"expression":{"baseExpression":{"id":4309,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"11296:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4311,"indexExpression":{"id":4310,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"11309:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11296:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"functionReturnParameters":4308,"id":4312,"nodeType":"Return","src":"11289:26:32"}]},"documentation":{"id":4301,"nodeType":"StructuredDocumentation","src":"11052:140:32","text":" @dev Gets token config by asset address\n @param asset asset address\n @return tokenConfig Config for the asset"},"functionSelector":"cb67e3b1","id":4314,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenConfig","nameLocation":"11206:14:32","nodeType":"FunctionDefinition","parameters":{"id":4304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4303,"mutability":"mutable","name":"asset","nameLocation":"11229:5:32","nodeType":"VariableDeclaration","scope":4314,"src":"11221:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4302,"name":"address","nodeType":"ElementaryTypeName","src":"11221:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11220:15:32"},"returnParameters":{"id":4308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4314,"src":"11259:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig"},"typeName":{"id":4306,"nodeType":"UserDefinedTypeName","pathNode":{"id":4305,"name":"TokenConfig","nameLocations":["11259:11:32"],"nodeType":"IdentifierPath","referencedDeclaration":3956,"src":"11259:11:32"},"referencedDeclaration":3956,"src":"11259:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage_ptr","typeString":"struct ResilientOracle.TokenConfig"}},"visibility":"internal"}],"src":"11258:20:32"},"scope":4878,"src":"11197:125:32","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5159],"body":{"id":4340,"nodeType":"Block","src":"12251:154:32","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4323,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"12265:6:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12265:8:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4329,"nodeType":"IfStatement","src":"12261:50:32","trueBody":{"expression":{"arguments":[{"hexValue":"726573696c69656e74206f7261636c6520697320706175736564","id":4326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12282:28:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_a96a5ab9a405164cd7206849fabc60771c50663034e032cee61ce87d40e776ee","typeString":"literal_string \"resilient oracle is paused\""},"value":"resilient oracle is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a96a5ab9a405164cd7206849fabc60771c50663034e032cee61ce87d40e776ee","typeString":"literal_string \"resilient oracle is paused\""}],"id":4325,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"12275:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12275:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4328,"nodeType":"ExpressionStatement","src":"12275:36:32"}},{"assignments":[4331],"declarations":[{"constant":false,"id":4331,"mutability":"mutable","name":"asset","nameLocation":"12330:5:32","nodeType":"VariableDeclaration","scope":4340,"src":"12322:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4330,"name":"address","nodeType":"ElementaryTypeName","src":"12322:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4335,"initialValue":{"arguments":[{"id":4333,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4317,"src":"12358:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4332,"name":"_getUnderlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4863,"src":"12338:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12338:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12322:43:32"},{"expression":{"arguments":[{"id":4337,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"12392:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4336,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4668,"src":"12382:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4322,"id":4339,"nodeType":"Return","src":"12375:23:32"}]},"documentation":{"id":4315,"nodeType":"StructuredDocumentation","src":"11328:833:32","text":" @notice Gets price of the underlying asset for a given vToken. Validation flow:\n - Check if the oracle is paused globally\n - Validate price from main oracle against pivot oracle\n - Validate price from fallback oracle against pivot oracle if the first validation failed\n - Validate price from main oracle against fallback oracle if the second validation failed\n In the case that the pivot oracle is not available but main price is available and validation is successful,\n main oracle price is returned.\n @param vToken vToken address\n @return price USD price in scaled decimal places.\n @custom:error Paused error is thrown when resilent oracle is paused\n @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid"},"functionSelector":"fc57d4df","id":4341,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nameLocation":"12175:18:32","nodeType":"FunctionDefinition","overrides":{"id":4319,"nodeType":"OverrideSpecifier","overrides":[],"src":"12224:8:32"},"parameters":{"id":4318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4317,"mutability":"mutable","name":"vToken","nameLocation":"12202:6:32","nodeType":"VariableDeclaration","scope":4341,"src":"12194:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4316,"name":"address","nodeType":"ElementaryTypeName","src":"12194:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12193:16:32"},"returnParameters":{"id":4322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4341,"src":"12242:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4320,"name":"uint256","nodeType":"ElementaryTypeName","src":"12242:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12241:9:32"},"scope":4878,"src":"12166:239:32","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":4361,"nodeType":"Block","src":"12815:100:32","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4350,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"12829:6:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12829:8:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4356,"nodeType":"IfStatement","src":"12825:50:32","trueBody":{"expression":{"arguments":[{"hexValue":"726573696c69656e74206f7261636c6520697320706175736564","id":4353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12846:28:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_a96a5ab9a405164cd7206849fabc60771c50663034e032cee61ce87d40e776ee","typeString":"literal_string \"resilient oracle is paused\""},"value":"resilient oracle is paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a96a5ab9a405164cd7206849fabc60771c50663034e032cee61ce87d40e776ee","typeString":"literal_string \"resilient oracle is paused\""}],"id":4352,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"12839:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12839:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4355,"nodeType":"ExpressionStatement","src":"12839:36:32"}},{"expression":{"arguments":[{"id":4358,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4344,"src":"12902:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4357,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4668,"src":"12892:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12892:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4349,"id":4360,"nodeType":"Return","src":"12885:23:32"}]},"documentation":{"id":4342,"nodeType":"StructuredDocumentation","src":"12411:325:32","text":" @notice Gets price of the asset\n @param asset asset address\n @return price USD price in scaled decimal places.\n @custom:error Paused error is thrown when resilent oracle is paused\n @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid"},"functionSelector":"41976e09","id":4362,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"12750:8:32","nodeType":"FunctionDefinition","overrides":{"id":4346,"nodeType":"OverrideSpecifier","overrides":[],"src":"12788:8:32"},"parameters":{"id":4345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4344,"mutability":"mutable","name":"asset","nameLocation":"12767:5:32","nodeType":"VariableDeclaration","scope":4362,"src":"12759:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4343,"name":"address","nodeType":"ElementaryTypeName","src":"12759:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12758:15:32"},"returnParameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4362,"src":"12806:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4347,"name":"uint256","nodeType":"ElementaryTypeName","src":"12806:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12805:9:32"},"scope":4878,"src":"12741:174:32","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4430,"nodeType":"Block","src":"13681:452:32","statements":[{"expression":{"arguments":[{"hexValue":"736574546f6b656e436f6e66696728546f6b656e436f6e66696729","id":4384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13711:29:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e5712572e46407c94b6201f222eec88396e5ee207af9ac6f4189acef9ab9ae8","typeString":"literal_string \"setTokenConfig(TokenConfig)\""},"value":"setTokenConfig(TokenConfig)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3e5712572e46407c94b6201f222eec88396e5ee207af9ac6f4189acef9ab9ae8","typeString":"literal_string \"setTokenConfig(TokenConfig)\""}],"id":4383,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"13691:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13691:50:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4386,"nodeType":"ExpressionStatement","src":"13691:50:32"},{"expression":{"id":4392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4387,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"13752:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4390,"indexExpression":{"expression":{"id":4388,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13765:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13777:5:32","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3942,"src":"13765:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13752:31:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4391,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13786:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"src":"13752:45:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4393,"nodeType":"ExpressionStatement","src":"13752:45:32"},{"eventCall":{"arguments":[{"expression":{"id":4395,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13842:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13854:5:32","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3942,"src":"13842:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":4397,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13873:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13885:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"13873:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_memory_ptr","typeString":"address[3] memory"}},"id":4404,"indexExpression":{"arguments":[{"expression":{"id":4401,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"13901:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13912:4:32","memberName":"MAIN","nodeType":"MemberAccess","referencedDeclaration":3936,"src":"13901:15:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13893:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4399,"name":"uint256","nodeType":"ElementaryTypeName","src":"13893:7:32","typeDescriptions":{}}},"id":4403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13893:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13873:45:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":4405,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13932:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13944:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"13932:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_memory_ptr","typeString":"address[3] memory"}},"id":4412,"indexExpression":{"arguments":[{"expression":{"id":4409,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"13960:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13971:5:32","memberName":"PIVOT","nodeType":"MemberAccess","referencedDeclaration":3937,"src":"13960:16:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13952:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4407,"name":"uint256","nodeType":"ElementaryTypeName","src":"13952:7:32","typeDescriptions":{}}},"id":4411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13952:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13932:46:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":4413,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13992:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14004:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"13992:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_memory_ptr","typeString":"address[3] memory"}},"id":4420,"indexExpression":{"arguments":[{"expression":{"id":4417,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"14020:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14031:8:32","memberName":"FALLBACK","nodeType":"MemberAccess","referencedDeclaration":3938,"src":"14020:19:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14012:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4415,"name":"uint256","nodeType":"ElementaryTypeName","src":"14012:7:32","typeDescriptions":{}}},"id":4419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14012:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13992:49:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4394,"name":"TokenConfigAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"13812:16:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address,address)"}},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13812:239:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4422,"nodeType":"EmitStatement","src":"13807:244:32"},{"eventCall":{"arguments":[{"expression":{"id":4424,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"14080:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14092:5:32","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3942,"src":"14080:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4426,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"14099:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4427,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14111:14:32","memberName":"cachingEnabled","nodeType":"MemberAccess","referencedDeclaration":3955,"src":"14099:26:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4423,"name":"CachedEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"14066:13:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":4428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14066:60:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4429,"nodeType":"EmitStatement","src":"14061:65:32"}]},"documentation":{"id":4363,"nodeType":"StructuredDocumentation","src":"12921:582:32","text":" @notice Sets/resets single token configs.\n @dev main oracle **must not** be a null address\n @param tokenConfig Token config struct\n @custom:access Only Governance\n @custom:error NotNullAddress is thrown if asset address is null\n @custom:error NotNullAddress is thrown if main-role oracle address for asset is null\n @custom:event Emits TokenConfigAdded event when the asset config is set successfully by the authorized account\n @custom:event Emits CachedEnabled event when the asset cachingEnabled flag is set successfully"},"functionSelector":"a8e68463","id":4431,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":4369,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13600:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13612:5:32","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":3942,"src":"13600:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4371,"kind":"modifierInvocation","modifierName":{"id":4368,"name":"notNullAddress","nameLocations":["13585:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"13585:14:32"},"nodeType":"ModifierInvocation","src":"13585:33:32"},{"arguments":[{"baseExpression":{"expression":{"id":4373,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"13634:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig memory"}},"id":4374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13646:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"13634:19:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_memory_ptr","typeString":"address[3] memory"}},"id":4380,"indexExpression":{"arguments":[{"expression":{"id":4377,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"13662:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13673:4:32","memberName":"MAIN","nodeType":"MemberAccess","referencedDeclaration":3936,"src":"13662:15:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13654:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4375,"name":"uint256","nodeType":"ElementaryTypeName","src":"13654:7:32","typeDescriptions":{}}},"id":4379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13654:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13634:45:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4381,"kind":"modifierInvocation","modifierName":{"id":4372,"name":"notNullAddress","nameLocations":["13619:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"13619:14:32"},"nodeType":"ModifierInvocation","src":"13619:61:32"}],"name":"setTokenConfig","nameLocation":"13517:14:32","nodeType":"FunctionDefinition","parameters":{"id":4367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4366,"mutability":"mutable","name":"tokenConfig","nameLocation":"13560:11:32","nodeType":"VariableDeclaration","scope":4431,"src":"13541:30:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_memory_ptr","typeString":"struct ResilientOracle.TokenConfig"},"typeName":{"id":4365,"nodeType":"UserDefinedTypeName","pathNode":{"id":4364,"name":"TokenConfig","nameLocations":["13541:11:32"],"nodeType":"IdentifierPath","referencedDeclaration":3956,"src":"13541:11:32"},"referencedDeclaration":3956,"src":"13541:11:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage_ptr","typeString":"struct ResilientOracle.TokenConfig"}},"visibility":"internal"}],"src":"13531:46:32"},"returnParameters":{"id":4382,"nodeType":"ParameterList","parameters":[],"src":"13681:0:32"},"scope":4878,"src":"13508:625:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4468,"nodeType":"Block","src":"14508:144:32","statements":[{"expression":{"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4444,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4440,"src":"14518:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4445,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"14527:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4447,"indexExpression":{"id":4446,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"14540:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14527:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14547:7:32","memberName":"oracles","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"14527:27:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$3_storage","typeString":"address[3] storage ref"}},"id":4453,"indexExpression":{"arguments":[{"id":4451,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"14563:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14555:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4449,"name":"uint256","nodeType":"ElementaryTypeName","src":"14555:7:32","typeDescriptions":{}}},"id":4452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14555:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14527:42:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14518:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4455,"nodeType":"ExpressionStatement","src":"14518:51:32"},{"expression":{"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4456,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4442,"src":"14579:7:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4457,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"14589:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4459,"indexExpression":{"id":4458,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"14602:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14589:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14609:21:32","memberName":"enableFlagsForOracles","nodeType":"MemberAccess","referencedDeclaration":3952,"src":"14589:41:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$3_storage","typeString":"bool[3] storage ref"}},"id":4465,"indexExpression":{"arguments":[{"id":4463,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4437,"src":"14639:4:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14631:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4461,"name":"uint256","nodeType":"ElementaryTypeName","src":"14631:7:32","typeDescriptions":{}}},"id":4464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14631:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14589:56:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14579:66:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4467,"nodeType":"ExpressionStatement","src":"14579:66:32"}]},"documentation":{"id":4432,"nodeType":"StructuredDocumentation","src":"14139:262:32","text":" @notice Gets oracle and enabled status by asset address\n @param asset asset address\n @param role Oracle role\n @return oracle Oracle address based on role\n @return enabled Enabled flag of the oracle based on token config"},"functionSelector":"8b855da4","id":4469,"implemented":true,"kind":"function","modifiers":[],"name":"getOracle","nameLocation":"14415:9:32","nodeType":"FunctionDefinition","parameters":{"id":4438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4434,"mutability":"mutable","name":"asset","nameLocation":"14433:5:32","nodeType":"VariableDeclaration","scope":4469,"src":"14425:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4433,"name":"address","nodeType":"ElementaryTypeName","src":"14425:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4437,"mutability":"mutable","name":"role","nameLocation":"14451:4:32","nodeType":"VariableDeclaration","scope":4469,"src":"14440:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"},"typeName":{"id":4436,"nodeType":"UserDefinedTypeName","pathNode":{"id":4435,"name":"OracleRole","nameLocations":["14440:10:32"],"nodeType":"IdentifierPath","referencedDeclaration":3939,"src":"14440:10:32"},"referencedDeclaration":3939,"src":"14440:10:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}},"visibility":"internal"}],"src":"14424:32:32"},"returnParameters":{"id":4443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4440,"mutability":"mutable","name":"oracle","nameLocation":"14486:6:32","nodeType":"VariableDeclaration","scope":4469,"src":"14478:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4439,"name":"address","nodeType":"ElementaryTypeName","src":"14478:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4442,"mutability":"mutable","name":"enabled","nameLocation":"14499:7:32","nodeType":"VariableDeclaration","scope":4469,"src":"14494:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4441,"name":"bool","nodeType":"ElementaryTypeName","src":"14494:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14477:30:32"},"scope":4878,"src":"14406:246:32","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4534,"nodeType":"Block","src":"14873:595:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4477,"name":"CACHE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3973,"src":"14913:10:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4478,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"14925:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4475,"name":"Transient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"14887:9:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Transient_$5251_$","typeString":"type(library Transient)"}},"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14897:15:32","memberName":"readCachedPrice","nodeType":"MemberAccess","referencedDeclaration":5250,"src":"14887:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_uint256_$","typeString":"function (bytes32,address) view returns (uint256)"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14887:44:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14935:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14887:49:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4484,"nodeType":"IfStatement","src":"14883:86:32","trueBody":{"id":4483,"nodeType":"Block","src":"14938:31:32","statements":[{"functionReturnParameters":4474,"id":4482,"nodeType":"Return","src":"14952:7:32"}]}},{"assignments":[4486,4488],"declarations":[{"constant":false,"id":4486,"mutability":"mutable","name":"mainOracle","nameLocation":"14988:10:32","nodeType":"VariableDeclaration","scope":4534,"src":"14980:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4485,"name":"address","nodeType":"ElementaryTypeName","src":"14980:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4488,"mutability":"mutable","name":"mainOracleEnabled","nameLocation":"15005:17:32","nodeType":"VariableDeclaration","scope":4534,"src":"15000:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4487,"name":"bool","nodeType":"ElementaryTypeName","src":"15000:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4494,"initialValue":{"arguments":[{"id":4490,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"15036:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4491,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"15043:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15054:4:32","memberName":"MAIN","nodeType":"MemberAccess","referencedDeclaration":3936,"src":"15043:15:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4489,"name":"getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4469,"src":"15026:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_OracleRole_$3939_$returns$_t_address_$_t_bool_$","typeString":"function (address,enum ResilientOracle.OracleRole) view returns (address,bool)"}},"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15026:33:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$","typeString":"tuple(address,bool)"}},"nodeType":"VariableDeclarationStatement","src":"14979:80:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4495,"name":"mainOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"15073:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15095:1:32","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":4497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15087:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4496,"name":"address","nodeType":"ElementaryTypeName","src":"15087:7:32","typeDescriptions":{}}},"id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15087:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15073:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":4501,"name":"mainOracleEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"15101:17:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15073:45:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4514,"nodeType":"IfStatement","src":"15069:238:32","trueBody":{"id":4513,"nodeType":"Block","src":"15120:187:32","statements":[{"clauses":[{"block":{"id":4508,"nodeType":"Block","src":"15286:2:32","statements":[]},"errorName":"","id":4509,"nodeType":"TryCatchClause","src":"15286:2:32"},{"block":{"id":4510,"nodeType":"Block","src":"15295:2:32","statements":[]},"errorName":"","id":4511,"nodeType":"TryCatchClause","src":"15289:8:32"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4504,"name":"mainOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"15257:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4503,"name":"ICappedOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"15243:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICappedOracle_$4968_$","typeString":"type(contract ICappedOracle)"}},"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15243:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICappedOracle_$4968","typeString":"contract ICappedOracle"}},"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15269:14:32","memberName":"updateSnapshot","nodeType":"MemberAccess","referencedDeclaration":4967,"src":"15243:40:32","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":4507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15243:42:32","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4512,"nodeType":"TryStatement","src":"15239:58:32"}]}},{"condition":{"arguments":[{"id":4516,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"15337:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4515,"name":"_isCacheEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"15321:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15321:22:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4533,"nodeType":"IfStatement","src":"15317:145:32","trueBody":{"id":4532,"nodeType":"Block","src":"15345:117:32","statements":[{"assignments":[4519],"declarations":[{"constant":false,"id":4519,"mutability":"mutable","name":"price","nameLocation":"15367:5:32","nodeType":"VariableDeclaration","scope":4532,"src":"15359:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4518,"name":"uint256","nodeType":"ElementaryTypeName","src":"15359:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4523,"initialValue":{"arguments":[{"id":4521,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"15385:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4520,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4668,"src":"15375:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15375:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15359:32:32"},{"expression":{"arguments":[{"id":4527,"name":"CACHE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3973,"src":"15426:10:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4528,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"15438:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4529,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4519,"src":"15445:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4524,"name":"Transient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"15405:9:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Transient_$5251_$","typeString":"type(library Transient)"}},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15415:10:32","memberName":"cachePrice","nodeType":"MemberAccess","referencedDeclaration":5228,"src":"15405:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256)"}},"id":4530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15405:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4531,"nodeType":"ExpressionStatement","src":"15405:46:32"}]}}]},"documentation":{"id":4470,"nodeType":"StructuredDocumentation","src":"14658:159:32","text":" @notice Updates the capped oracle snapshot.\n @dev Cache the asset price and return if already cached\n @param asset asset address"},"id":4535,"implemented":true,"kind":"function","modifiers":[],"name":"_updateAssetPrice","nameLocation":"14831:17:32","nodeType":"FunctionDefinition","parameters":{"id":4473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4472,"mutability":"mutable","name":"asset","nameLocation":"14857:5:32","nodeType":"VariableDeclaration","scope":4535,"src":"14849:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4471,"name":"address","nodeType":"ElementaryTypeName","src":"14849:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14848:15:32"},"returnParameters":{"id":4474,"nodeType":"ParameterList","parameters":[],"src":"14873:0:32"},"scope":4878,"src":"14822:646:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4667,"nodeType":"Block","src":"15805:1854:32","statements":[{"assignments":[4544],"declarations":[{"constant":false,"id":4544,"mutability":"mutable","name":"pivotPrice","nameLocation":"15823:10:32","nodeType":"VariableDeclaration","scope":4667,"src":"15815:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4543,"name":"uint256","nodeType":"ElementaryTypeName","src":"15815:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4546,"initialValue":{"id":4545,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"15836:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15815:34:32"},{"assignments":[4548],"declarations":[{"constant":false,"id":4548,"mutability":"mutable","name":"price","nameLocation":"15867:5:32","nodeType":"VariableDeclaration","scope":4667,"src":"15859:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4547,"name":"uint256","nodeType":"ElementaryTypeName","src":"15859:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4549,"nodeType":"VariableDeclarationStatement","src":"15859:13:32"},{"expression":{"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4550,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"15883:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4553,"name":"CACHE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3973,"src":"15917:10:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4554,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"15929:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4551,"name":"Transient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"15891:9:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Transient_$5251_$","typeString":"type(library Transient)"}},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15901:15:32","memberName":"readCachedPrice","nodeType":"MemberAccess","referencedDeclaration":5250,"src":"15891:25:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_uint256_$","typeString":"function (bytes32,address) view returns (uint256)"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15891:44:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15883:52:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4557,"nodeType":"ExpressionStatement","src":"15883:52:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4558,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"15949:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15958:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15949:10:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4564,"nodeType":"IfStatement","src":"15945:53:32","trueBody":{"id":4563,"nodeType":"Block","src":"15961:37:32","statements":[{"expression":{"id":4561,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"15982:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4542,"id":4562,"nodeType":"Return","src":"15975:12:32"}]}},{"assignments":[4566,4568],"declarations":[{"constant":false,"id":4566,"mutability":"mutable","name":"pivotOracle","nameLocation":"16092:11:32","nodeType":"VariableDeclaration","scope":4667,"src":"16084:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4565,"name":"address","nodeType":"ElementaryTypeName","src":"16084:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4568,"mutability":"mutable","name":"pivotOracleEnabled","nameLocation":"16110:18:32","nodeType":"VariableDeclaration","scope":4667,"src":"16105:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4567,"name":"bool","nodeType":"ElementaryTypeName","src":"16105:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4574,"initialValue":{"arguments":[{"id":4570,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"16142:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4571,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"16149:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16160:5:32","memberName":"PIVOT","nodeType":"MemberAccess","referencedDeclaration":3937,"src":"16149:16:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4569,"name":"getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4469,"src":"16132:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_OracleRole_$3939_$returns$_t_address_$_t_bool_$","typeString":"function (address,enum ResilientOracle.OracleRole) view returns (address,bool)"}},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16132:34:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$","typeString":"tuple(address,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16083:83:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4575,"name":"pivotOracleEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"16180:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4576,"name":"pivotOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"16202:11:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16225:1:32","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":4578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16217:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4577,"name":"address","nodeType":"ElementaryTypeName","src":"16217:7:32","typeDescriptions":{}}},"id":4580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16217:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16202:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16180:47:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4602,"nodeType":"IfStatement","src":"16176:220:32","trueBody":{"id":4601,"nodeType":"Block","src":"16229:167:32","statements":[{"clauses":[{"block":{"id":4596,"nodeType":"Block","src":"16321:56:32","statements":[{"expression":{"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4592,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"16339:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4593,"name":"pricePivot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"16352:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16339:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4595,"nodeType":"ExpressionStatement","src":"16339:23:32"}]},"errorName":"","id":4597,"nodeType":"TryCatchClause","parameters":{"id":4591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4590,"mutability":"mutable","name":"pricePivot","nameLocation":"16309:10:32","nodeType":"VariableDeclaration","scope":4597,"src":"16301:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4589,"name":"uint256","nodeType":"ElementaryTypeName","src":"16301:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16300:20:32"},"src":"16292:85:32"},{"block":{"id":4598,"nodeType":"Block","src":"16384:2:32","statements":[]},"errorName":"","id":4599,"nodeType":"TryCatchClause","src":"16378:8:32"}],"externalCall":{"arguments":[{"id":4587,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"16285:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4584,"name":"pivotOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"16263:11:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4583,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"16247:15:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":4585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16247:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16276:8:32","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"16247:37:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16247:44:32","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4600,"nodeType":"TryStatement","src":"16243:143:32"}]}},{"assignments":[4604,4606],"declarations":[{"constant":false,"id":4604,"mutability":"mutable","name":"mainPrice","nameLocation":"16672:9:32","nodeType":"VariableDeclaration","scope":4667,"src":"16664:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4603,"name":"uint256","nodeType":"ElementaryTypeName","src":"16664:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4606,"mutability":"mutable","name":"validatedPivotMain","nameLocation":"16688:18:32","nodeType":"VariableDeclaration","scope":4667,"src":"16683:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4605,"name":"bool","nodeType":"ElementaryTypeName","src":"16683:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4619,"initialValue":{"arguments":[{"id":4608,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"16743:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4609,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"16762:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4610,"name":"pivotOracleEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"16786:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4611,"name":"pivotOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"16808:11:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16831:1:32","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":4613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16823:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4612,"name":"address","nodeType":"ElementaryTypeName","src":"16823:7:32","typeDescriptions":{}}},"id":4615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16823:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16808:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16786:47:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4607,"name":"_getMainOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"16710:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_bool_$","typeString":"function (address,uint256,bool) view returns (uint256,bool)"}},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16710:133:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16663:180:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4620,"name":"mainPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"16857:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4621,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"16870:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16857:26:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":4623,"name":"validatedPivotMain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"16887:18:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16857:48:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4627,"nodeType":"IfStatement","src":"16853:70:32","trueBody":{"expression":{"id":4625,"name":"mainPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"16914:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4542,"id":4626,"nodeType":"Return","src":"16907:16:32"}},{"assignments":[4629,4631],"declarations":[{"constant":false,"id":4629,"mutability":"mutable","name":"fallbackPrice","nameLocation":"17122:13:32","nodeType":"VariableDeclaration","scope":4667,"src":"17114:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4628,"name":"uint256","nodeType":"ElementaryTypeName","src":"17114:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4631,"mutability":"mutable","name":"validatedPivotFallback","nameLocation":"17142:22:32","nodeType":"VariableDeclaration","scope":4667,"src":"17137:27:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4630,"name":"bool","nodeType":"ElementaryTypeName","src":"17137:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4636,"initialValue":{"arguments":[{"id":4633,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"17192:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4634,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"17199:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4632,"name":"_getFallbackOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"17168:23:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$_t_bool_$","typeString":"function (address,uint256) view returns (uint256,bool)"}},"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17168:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"17113:97:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4637,"name":"fallbackPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"17224:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4638,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"17241:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17224:30:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":4640,"name":"validatedPivotFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"17258:22:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17224:56:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4644,"nodeType":"IfStatement","src":"17220:82:32","trueBody":{"expression":{"id":4642,"name":"fallbackPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"17289:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4542,"id":4643,"nodeType":"Return","src":"17282:20:32"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4645,"name":"mainPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"17386:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4646,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"17399:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17386:26:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4648,"name":"fallbackPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"17428:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4649,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"17445:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17428:30:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17386:72:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":4654,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"17518:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4655,"name":"mainPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"17525:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4656,"name":"fallbackPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"17536:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4652,"name":"boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3977,"src":"17474:14:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17489:28:32","memberName":"validatePriceWithAnchorPrice","nodeType":"MemberAccess","referencedDeclaration":5171,"src":"17474:43:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view external returns (bool)"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17474:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17386:164:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4662,"nodeType":"IfStatement","src":"17369:233:32","trueBody":{"id":4661,"nodeType":"Block","src":"17561:41:32","statements":[{"expression":{"id":4659,"name":"mainPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"17582:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4542,"id":4660,"nodeType":"Return","src":"17575:16:32"}]}},{"expression":{"arguments":[{"hexValue":"696e76616c696420726573696c69656e74206f7261636c65207072696365","id":4664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17619:32:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_599276927d57b3c895a99d3d2c96f953e4db80fc017144bddcab2e3187f5e277","typeString":"literal_string \"invalid resilient oracle price\""},"value":"invalid resilient oracle price"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_599276927d57b3c895a99d3d2c96f953e4db80fc017144bddcab2e3187f5e277","typeString":"literal_string \"invalid resilient oracle price\""}],"id":4663,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"17612:6:32","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17612:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4666,"nodeType":"ExpressionStatement","src":"17612:40:32"}]},"documentation":{"id":4536,"nodeType":"StructuredDocumentation","src":"15474:260:32","text":" @notice Gets price for the provided asset\n @param asset asset address\n @return price USD price in scaled decimal places.\n @custom:error Invalid resilient oracle price error is thrown if fetched prices from oracle is invalid"},"id":4668,"implemented":true,"kind":"function","modifiers":[],"name":"_getPrice","nameLocation":"15748:9:32","nodeType":"FunctionDefinition","parameters":{"id":4539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4538,"mutability":"mutable","name":"asset","nameLocation":"15766:5:32","nodeType":"VariableDeclaration","scope":4668,"src":"15758:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4537,"name":"address","nodeType":"ElementaryTypeName","src":"15758:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15757:15:32"},"returnParameters":{"id":4542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4668,"src":"15796:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4540,"name":"uint256","nodeType":"ElementaryTypeName","src":"15796:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15795:9:32"},"scope":4878,"src":"15739:1920:32","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4750,"nodeType":"Block","src":"18664:797:32","statements":[{"assignments":[4683,4685],"declarations":[{"constant":false,"id":4683,"mutability":"mutable","name":"mainOracle","nameLocation":"18683:10:32","nodeType":"VariableDeclaration","scope":4750,"src":"18675:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4682,"name":"address","nodeType":"ElementaryTypeName","src":"18675:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4685,"mutability":"mutable","name":"mainOracleEnabled","nameLocation":"18700:17:32","nodeType":"VariableDeclaration","scope":4750,"src":"18695:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4684,"name":"bool","nodeType":"ElementaryTypeName","src":"18695:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4691,"initialValue":{"arguments":[{"id":4687,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"18731:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4688,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"18738:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18749:4:32","memberName":"MAIN","nodeType":"MemberAccess","referencedDeclaration":3936,"src":"18738:15:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4686,"name":"getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4469,"src":"18721:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_OracleRole_$3939_$returns$_t_address_$_t_bool_$","typeString":"function (address,enum ResilientOracle.OracleRole) view returns (address,bool)"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18721:33:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$","typeString":"tuple(address,bool)"}},"nodeType":"VariableDeclarationStatement","src":"18674:80:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4692,"name":"mainOracleEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"18768:17:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4693,"name":"mainOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4683,"src":"18789:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18811:1:32","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":4695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18803:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4694,"name":"address","nodeType":"ElementaryTypeName","src":"18803:7:32","typeDescriptions":{}}},"id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18803:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18789:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18768:45:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4745,"nodeType":"IfStatement","src":"18764:651:32","trueBody":{"id":4744,"nodeType":"Block","src":"18815:600:32","statements":[{"clauses":[{"block":{"id":4735,"nodeType":"Block","src":"18911:425:32","statements":[{"condition":{"id":4710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18933:13:32","subExpression":{"id":4709,"name":"pivotEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"18934:12:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4716,"nodeType":"IfStatement","src":"18929:90:32","trueBody":{"id":4715,"nodeType":"Block","src":"18948:71:32","statements":[{"expression":{"components":[{"id":4711,"name":"mainOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"18978:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":4712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18995:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"id":4713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18977:23:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4681,"id":4714,"nodeType":"Return","src":"18970:30:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4717,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4673,"src":"19040:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4718,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"19054:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19040:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4725,"nodeType":"IfStatement","src":"19036:105:32","trueBody":{"id":4724,"nodeType":"Block","src":"19069:72:32","statements":[{"expression":{"components":[{"id":4720,"name":"mainOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"19099:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19116:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19098:24:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4681,"id":4723,"nodeType":"Return","src":"19091:31:32"}]}},{"expression":{"components":[{"id":4726,"name":"mainOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"19187:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4729,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"19268:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4730,"name":"mainOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"19275:15:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4731,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4673,"src":"19292:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4727,"name":"boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3977,"src":"19224:14:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19239:28:32","memberName":"validatePriceWithAnchorPrice","nodeType":"MemberAccess","referencedDeclaration":5171,"src":"19224:43:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view external returns (bool)"}},"id":4732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19224:79:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19165:156:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4681,"id":4734,"nodeType":"Return","src":"19158:163:32"}]},"errorName":"","id":4736,"nodeType":"TryCatchClause","parameters":{"id":4708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4707,"mutability":"mutable","name":"mainOraclePrice","nameLocation":"18894:15:32","nodeType":"VariableDeclaration","scope":4736,"src":"18886:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4706,"name":"uint256","nodeType":"ElementaryTypeName","src":"18886:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18885:25:32"},"src":"18877:459:32"},{"block":{"id":4741,"nodeType":"Block","src":"19343:62:32","statements":[{"expression":{"components":[{"id":4737,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"19369:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19384:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4739,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19368:22:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4681,"id":4740,"nodeType":"Return","src":"19361:29:32"}]},"errorName":"","id":4742,"nodeType":"TryCatchClause","src":"19337:68:32"}],"externalCall":{"arguments":[{"id":4704,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"18870:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4701,"name":"mainOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4683,"src":"18849:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4700,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"18833:15:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18861:8:32","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"18833:36:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:43:32","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4743,"nodeType":"TryStatement","src":"18829:576:32"}]}},{"expression":{"components":[{"id":4746,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"19433:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19448:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19432:22:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4681,"id":4749,"nodeType":"Return","src":"19425:29:32"}]},"documentation":{"id":4669,"nodeType":"StructuredDocumentation","src":"17665:843:32","text":" @notice Gets a price for the provided asset\n @dev This function won't revert when price is 0, because the fallback oracle may still be\n able to fetch a correct price\n @param asset asset address\n @param pivotPrice Pivot oracle price\n @param pivotEnabled If pivot oracle is not empty and enabled\n @return price USD price in scaled decimals\n e.g. asset decimals is 8 then price is returned as 10**18 * 10**(18-8) = 10**28 decimals\n @return pivotValidated Boolean representing if the validation of main oracle price\n and pivot oracle price were successful\n @custom:error Invalid price error is thrown if main oracle fails to fetch price of the asset\n @custom:error Invalid price error is thrown if main oracle is not enabled or main oracle\n address is null"},"id":4751,"implemented":true,"kind":"function","modifiers":[],"name":"_getMainOraclePrice","nameLocation":"18522:19:32","nodeType":"FunctionDefinition","parameters":{"id":4676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4671,"mutability":"mutable","name":"asset","nameLocation":"18559:5:32","nodeType":"VariableDeclaration","scope":4751,"src":"18551:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4670,"name":"address","nodeType":"ElementaryTypeName","src":"18551:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4673,"mutability":"mutable","name":"pivotPrice","nameLocation":"18582:10:32","nodeType":"VariableDeclaration","scope":4751,"src":"18574:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4672,"name":"uint256","nodeType":"ElementaryTypeName","src":"18574:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4675,"mutability":"mutable","name":"pivotEnabled","nameLocation":"18607:12:32","nodeType":"VariableDeclaration","scope":4751,"src":"18602:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4674,"name":"bool","nodeType":"ElementaryTypeName","src":"18602:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18541:84:32"},"returnParameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4751,"src":"18649:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4677,"name":"uint256","nodeType":"ElementaryTypeName","src":"18649:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4751,"src":"18658:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4679,"name":"bool","nodeType":"ElementaryTypeName","src":"18658:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18648:15:32"},"scope":4878,"src":"18513:948:32","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4823,"nodeType":"Block","src":"20140:718:32","statements":[{"assignments":[4764,4766],"declarations":[{"constant":false,"id":4764,"mutability":"mutable","name":"fallbackOracle","nameLocation":"20159:14:32","nodeType":"VariableDeclaration","scope":4823,"src":"20151:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4763,"name":"address","nodeType":"ElementaryTypeName","src":"20151:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4766,"mutability":"mutable","name":"fallbackEnabled","nameLocation":"20180:15:32","nodeType":"VariableDeclaration","scope":4823,"src":"20175:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4765,"name":"bool","nodeType":"ElementaryTypeName","src":"20175:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4772,"initialValue":{"arguments":[{"id":4768,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"20209:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4769,"name":"OracleRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3939,"src":"20216:10:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OracleRole_$3939_$","typeString":"type(enum ResilientOracle.OracleRole)"}},"id":4770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20227:8:32","memberName":"FALLBACK","nodeType":"MemberAccess","referencedDeclaration":3938,"src":"20216:19:32","typeDescriptions":{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_OracleRole_$3939","typeString":"enum ResilientOracle.OracleRole"}],"id":4767,"name":"getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4469,"src":"20199:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_OracleRole_$3939_$returns$_t_address_$_t_bool_$","typeString":"function (address,enum ResilientOracle.OracleRole) view returns (address,bool)"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20199:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_bool_$","typeString":"tuple(address,bool)"}},"nodeType":"VariableDeclarationStatement","src":"20150:86:32"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4773,"name":"fallbackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"20250:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4774,"name":"fallbackOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"20269:14:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20295:1:32","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":4776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20287:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4775,"name":"address","nodeType":"ElementaryTypeName","src":"20287:7:32","typeDescriptions":{}}},"id":4778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20287:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20269:28:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20250:47:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4818,"nodeType":"IfStatement","src":"20246:566:32","trueBody":{"id":4817,"nodeType":"Block","src":"20299:513:32","statements":[{"clauses":[{"block":{"id":4808,"nodeType":"Block","src":"20403:330:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4790,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"20425:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4791,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"20439:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20425:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4798,"nodeType":"IfStatement","src":"20421:109:32","trueBody":{"id":4797,"nodeType":"Block","src":"20454:76:32","statements":[{"expression":{"components":[{"id":4793,"name":"fallbackOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"20484:19:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20505:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20483:28:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4762,"id":4796,"nodeType":"Return","src":"20476:35:32"}]}},{"expression":{"components":[{"id":4799,"name":"fallbackOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"20576:19:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4802,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"20661:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4803,"name":"fallbackOraclePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"20668:19:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4804,"name":"pivotPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"20689:10:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4800,"name":"boundValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3977,"src":"20617:14:32","typeDescriptions":{"typeIdentifier":"t_contract$_BoundValidatorInterface_$5172","typeString":"contract BoundValidatorInterface"}},"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20632:28:32","memberName":"validatePriceWithAnchorPrice","nodeType":"MemberAccess","referencedDeclaration":5171,"src":"20617:43:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view external returns (bool)"}},"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20617:83:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4806,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20554:164:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4762,"id":4807,"nodeType":"Return","src":"20547:171:32"}]},"errorName":"","id":4809,"nodeType":"TryCatchClause","parameters":{"id":4789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4788,"mutability":"mutable","name":"fallbackOraclePrice","nameLocation":"20382:19:32","nodeType":"VariableDeclaration","scope":4809,"src":"20374:27:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4787,"name":"uint256","nodeType":"ElementaryTypeName","src":"20374:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20373:29:32"},"src":"20365:368:32"},{"block":{"id":4814,"nodeType":"Block","src":"20740:62:32","statements":[{"expression":{"components":[{"id":4810,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"20766:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20781:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"20765:22:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4762,"id":4813,"nodeType":"Return","src":"20758:29:32"}]},"errorName":"","id":4815,"nodeType":"TryCatchClause","src":"20734:68:32"}],"externalCall":{"arguments":[{"id":4785,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"20358:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4782,"name":"fallbackOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"20333:14:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4781,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"20317:15:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20317:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":4784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20349:8:32","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"20317:40:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20317:47:32","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4816,"nodeType":"TryStatement","src":"20313:489:32"}]}},{"expression":{"components":[{"id":4819,"name":"INVALID_PRICE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"20830:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20845:5:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":4821,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"20829:22:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,bool)"}},"functionReturnParameters":4762,"id":4822,"nodeType":"Return","src":"20822:29:32"}]},"documentation":{"id":4752,"nodeType":"StructuredDocumentation","src":"19467:563:32","text":" @dev This function won't revert when the price is 0 because getPrice checks if price is > 0\n @param asset asset address\n @return price USD price in 18 decimals\n @return pivotValidated Boolean representing if the validation of fallback oracle price\n and pivot oracle price were successfully\n @custom:error Invalid price error is thrown if fallback oracle fails to fetch price of the asset\n @custom:error Invalid price error is thrown if fallback oracle is not enabled or fallback oracle\n address is null"},"id":4824,"implemented":true,"kind":"function","modifiers":[],"name":"_getFallbackOraclePrice","nameLocation":"20044:23:32","nodeType":"FunctionDefinition","parameters":{"id":4757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4754,"mutability":"mutable","name":"asset","nameLocation":"20076:5:32","nodeType":"VariableDeclaration","scope":4824,"src":"20068:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4753,"name":"address","nodeType":"ElementaryTypeName","src":"20068:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4756,"mutability":"mutable","name":"pivotPrice","nameLocation":"20091:10:32","nodeType":"VariableDeclaration","scope":4824,"src":"20083:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4755,"name":"uint256","nodeType":"ElementaryTypeName","src":"20083:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20067:35:32"},"returnParameters":{"id":4762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4824,"src":"20125:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4758,"name":"uint256","nodeType":"ElementaryTypeName","src":"20125:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4824,"src":"20134:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4760,"name":"bool","nodeType":"ElementaryTypeName","src":"20134:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20124:15:32"},"scope":4878,"src":"20035:823:32","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4862,"nodeType":"Block","src":"21134:230:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4835,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"21148:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4836,"name":"nativeMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"21158:12:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21148:22:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4843,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"21232:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4844,"name":"vai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3965,"src":"21242:3:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21232:13:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4859,"nodeType":"Block","src":"21289:69:32","statements":[{"expression":{"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4851,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"21303:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4853,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"21327:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4852,"name":"VBep20Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5204,"src":"21311:15:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VBep20Interface_$5204_$","typeString":"type(contract VBep20Interface)"}},"id":4854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21311:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_VBep20Interface_$5204","typeString":"contract VBep20Interface"}},"id":4855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21335:10:32","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5203,"src":"21311:34:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21311:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21303:44:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4858,"nodeType":"ExpressionStatement","src":"21303:44:32"}]},"id":4860,"nodeType":"IfStatement","src":"21228:130:32","trueBody":{"id":4850,"nodeType":"Block","src":"21247:36:32","statements":[{"expression":{"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4846,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"21261:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4847,"name":"vai","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3965,"src":"21269:3:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21261:11:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4849,"nodeType":"ExpressionStatement","src":"21261:11:32"}]}},"id":4861,"nodeType":"IfStatement","src":"21144:214:32","trueBody":{"id":4842,"nodeType":"Block","src":"21172:50:32","statements":[{"expression":{"id":4840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4838,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"21186:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4839,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"21194:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21186:25:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4841,"nodeType":"ExpressionStatement","src":"21186:25:32"}]}}]},"documentation":{"id":4825,"nodeType":"StructuredDocumentation","src":"20864:160:32","text":" @dev This function returns the underlying asset of a vToken\n @param vToken vToken address\n @return asset underlying asset address"},"id":4863,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":4830,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"21102:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4831,"kind":"modifierInvocation","modifierName":{"id":4829,"name":"notNullAddress","nameLocations":["21087:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":4035,"src":"21087:14:32"},"nodeType":"ModifierInvocation","src":"21087:22:32"}],"name":"_getUnderlyingAsset","nameLocation":"21038:19:32","nodeType":"FunctionDefinition","parameters":{"id":4828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4827,"mutability":"mutable","name":"vToken","nameLocation":"21066:6:32","nodeType":"VariableDeclaration","scope":4863,"src":"21058:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4826,"name":"address","nodeType":"ElementaryTypeName","src":"21058:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21057:16:32"},"returnParameters":{"id":4834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4833,"mutability":"mutable","name":"asset","nameLocation":"21127:5:32","nodeType":"VariableDeclaration","scope":4863,"src":"21119:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4832,"name":"address","nodeType":"ElementaryTypeName","src":"21119:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21118:15:32"},"scope":4878,"src":"21029:335:32","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4876,"nodeType":"Block","src":"21621:58:32","statements":[{"expression":{"expression":{"baseExpression":{"id":4871,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3982,"src":"21638:12:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$3956_storage_$","typeString":"mapping(address => struct ResilientOracle.TokenConfig storage ref)"}},"id":4873,"indexExpression":{"id":4872,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"21651:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21638:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$3956_storage","typeString":"struct ResilientOracle.TokenConfig storage ref"}},"id":4874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21658:14:32","memberName":"cachingEnabled","nodeType":"MemberAccess","referencedDeclaration":3955,"src":"21638:34:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4870,"id":4875,"nodeType":"Return","src":"21631:41:32"}]},"documentation":{"id":4864,"nodeType":"StructuredDocumentation","src":"21370:178:32","text":" @dev This function checks if the asset price should be cached\n @param asset asset address\n @return bool true if caching is enabled, false otherwise"},"id":4877,"implemented":true,"kind":"function","modifiers":[],"name":"_isCacheEnabled","nameLocation":"21562:15:32","nodeType":"FunctionDefinition","parameters":{"id":4867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4866,"mutability":"mutable","name":"asset","nameLocation":"21586:5:32","nodeType":"VariableDeclaration","scope":4877,"src":"21578:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4865,"name":"address","nodeType":"ElementaryTypeName","src":"21578:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21577:15:32"},"returnParameters":{"id":4870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4877,"src":"21615:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4868,"name":"bool","nodeType":"ElementaryTypeName","src":"21615:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21614:6:32"},"scope":4878,"src":"21553:126:32","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":4879,"src":"2586:19095:32","usedErrors":[3435],"usedEvents":[120,227,357,526,531,3426,3992,4001,4010,4017]}],"src":"79:21603:32"}},"contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol":{"id":33,"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","exportedSymbols":{"AccessControlledV8":[3554],"AddressUpgradeable":[969],"ContextUpgradeable":[1020],"IAccessControl":[1093],"IAccessControlManagerV8":[3599],"Initializable":[511],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342]},"id":4882,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4880,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:33"},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":4881,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4882,"sourceUnit":3555,"src":"63:89:33","symbolAliases":[],"unitAlias":""}],"src":"39:114:33"}},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"id":34,"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"Address":[11499],"Context":[11521],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"Ownable":[10452],"Proxy":[10885],"ProxyAdmin":[11040],"StorageSlot":[11581],"TransparentUpgradeableProxy":[11204]},"id":4885,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4883,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:34"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","file":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","id":4884,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4885,"sourceUnit":11041,"src":"63:79:34","symbolAliases":[],"unitAlias":""}],"src":"39:104:34"}},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"id":35,"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[11499],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"OptimizedTransparentUpgradeableProxy":[11756],"Proxy":[10885],"StorageSlot":[11581]},"id":4888,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4886,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:35"},{"absolutePath":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","file":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","id":4887,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4888,"sourceUnit":11757,"src":"63:80:35","symbolAliases":[],"unitAlias":""}],"src":"39:105:35"}},"contracts/interfaces/FeedRegistryInterface.sol":{"id":36,"ast":{"absolutePath":"contracts/interfaces/FeedRegistryInterface.sol","exportedSymbols":{"FeedRegistryInterface":[4916]},"id":4917,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4889,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:36"},{"abstract":false,"baseContracts":[],"canonicalName":"FeedRegistryInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4916,"linearizedBaseContracts":[4916],"name":"FeedRegistryInterface","nameLocation":"77:21:36","nodeType":"ContractDefinition","nodes":[{"functionSelector":"bfda5e71","id":4906,"implemented":false,"kind":"function","modifiers":[],"name":"latestRoundDataByName","nameLocation":"114:21:36","nodeType":"FunctionDefinition","parameters":{"id":4894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4891,"mutability":"mutable","name":"base","nameLocation":"159:4:36","nodeType":"VariableDeclaration","scope":4906,"src":"145:18:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4890,"name":"string","nodeType":"ElementaryTypeName","src":"145:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4893,"mutability":"mutable","name":"quote","nameLocation":"187:5:36","nodeType":"VariableDeclaration","scope":4906,"src":"173:19:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4892,"name":"string","nodeType":"ElementaryTypeName","src":"173:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"135:63:36"},"returnParameters":{"id":4905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"roundId","nameLocation":"253:7:36","nodeType":"VariableDeclaration","scope":4906,"src":"246:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4895,"name":"uint80","nodeType":"ElementaryTypeName","src":"246:6:36","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":4898,"mutability":"mutable","name":"answer","nameLocation":"269:6:36","nodeType":"VariableDeclaration","scope":4906,"src":"262:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4897,"name":"int256","nodeType":"ElementaryTypeName","src":"262:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4900,"mutability":"mutable","name":"startedAt","nameLocation":"285:9:36","nodeType":"VariableDeclaration","scope":4906,"src":"277:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4899,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4902,"mutability":"mutable","name":"updatedAt","nameLocation":"304:9:36","nodeType":"VariableDeclaration","scope":4906,"src":"296:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4901,"name":"uint256","nodeType":"ElementaryTypeName","src":"296:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4904,"mutability":"mutable","name":"answeredInRound","nameLocation":"322:15:36","nodeType":"VariableDeclaration","scope":4906,"src":"315:22:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4903,"name":"uint80","nodeType":"ElementaryTypeName","src":"315:6:36","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"245:93:36"},"scope":4916,"src":"105:234:36","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e91995a","id":4915,"implemented":false,"kind":"function","modifiers":[],"name":"decimalsByName","nameLocation":"354:14:36","nodeType":"FunctionDefinition","parameters":{"id":4911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4908,"mutability":"mutable","name":"base","nameLocation":"383:4:36","nodeType":"VariableDeclaration","scope":4915,"src":"369:18:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4907,"name":"string","nodeType":"ElementaryTypeName","src":"369:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4910,"mutability":"mutable","name":"quote","nameLocation":"403:5:36","nodeType":"VariableDeclaration","scope":4915,"src":"389:19:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4909,"name":"string","nodeType":"ElementaryTypeName","src":"389:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"368:41:36"},"returnParameters":{"id":4914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4915,"src":"433:5:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4912,"name":"uint8","nodeType":"ElementaryTypeName","src":"433:5:36","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"432:7:36"},"scope":4916,"src":"345:95:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4917,"src":"67:375:36","usedErrors":[],"usedEvents":[]}],"src":"41:402:36"}},"contracts/interfaces/IAccountant.sol":{"id":37,"ast":{"absolutePath":"contracts/interfaces/IAccountant.sol","exportedSymbols":{"IAccountant":[4924]},"id":4925,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4918,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccountant","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4924,"linearizedBaseContracts":[4924],"name":"IAccountant","nameLocation":"76:11:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"282a8700","id":4923,"implemented":false,"kind":"function","modifiers":[],"name":"getRateSafe","nameLocation":"103:11:37","nodeType":"FunctionDefinition","parameters":{"id":4919,"nodeType":"ParameterList","parameters":[],"src":"114:2:37"},"returnParameters":{"id":4922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4923,"src":"140:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4920,"name":"uint256","nodeType":"ElementaryTypeName","src":"140:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"139:9:37"},"scope":4924,"src":"94:55:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4925,"src":"66:85:37","usedErrors":[],"usedEvents":[]}],"src":"41:111:37"}},"contracts/interfaces/IAnkrBNB.sol":{"id":38,"ast":{"absolutePath":"contracts/interfaces/IAnkrBNB.sol","exportedSymbols":{"IAnkrBNB":[4939]},"id":4940,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4926,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:38"},{"abstract":false,"baseContracts":[],"canonicalName":"IAnkrBNB","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4939,"linearizedBaseContracts":[4939],"name":"IAnkrBNB","nameLocation":"76:8:38","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6c58d43d","id":4933,"implemented":false,"kind":"function","modifiers":[],"name":"sharesToBonds","nameLocation":"100:13:38","nodeType":"FunctionDefinition","parameters":{"id":4929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4928,"mutability":"mutable","name":"amount","nameLocation":"122:6:38","nodeType":"VariableDeclaration","scope":4933,"src":"114:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4927,"name":"uint256","nodeType":"ElementaryTypeName","src":"114:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"113:16:38"},"returnParameters":{"id":4932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4933,"src":"153:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4930,"name":"uint256","nodeType":"ElementaryTypeName","src":"153:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"152:9:38"},"scope":4939,"src":"91:71:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":4938,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"176:8:38","nodeType":"FunctionDefinition","parameters":{"id":4934,"nodeType":"ParameterList","parameters":[],"src":"184:2:38"},"returnParameters":{"id":4937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4938,"src":"210:5:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4935,"name":"uint8","nodeType":"ElementaryTypeName","src":"210:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"209:7:38"},"scope":4939,"src":"167:50:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4940,"src":"66:153:38","usedErrors":[],"usedEvents":[]}],"src":"41:179:38"}},"contracts/interfaces/IAsBNB.sol":{"id":39,"ast":{"absolutePath":"contracts/interfaces/IAsBNB.sol","exportedSymbols":{"IAsBNB":[4952]},"id":4953,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4941,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IAsBNB","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4952,"linearizedBaseContracts":[4952],"name":"IAsBNB","nameLocation":"76:6:39","nodeType":"ContractDefinition","nodes":[{"functionSelector":"07546172","id":4946,"implemented":false,"kind":"function","modifiers":[],"name":"minter","nameLocation":"98:6:39","nodeType":"FunctionDefinition","parameters":{"id":4942,"nodeType":"ParameterList","parameters":[],"src":"104:2:39"},"returnParameters":{"id":4945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4946,"src":"130:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4943,"name":"address","nodeType":"ElementaryTypeName","src":"130:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"129:9:39"},"scope":4952,"src":"89:50:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":4951,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"153:8:39","nodeType":"FunctionDefinition","parameters":{"id":4947,"nodeType":"ParameterList","parameters":[],"src":"161:2:39"},"returnParameters":{"id":4950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4951,"src":"187:5:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4948,"name":"uint8","nodeType":"ElementaryTypeName","src":"187:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"186:7:39"},"scope":4952,"src":"144:50:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4953,"src":"66:130:39","usedErrors":[],"usedEvents":[]}],"src":"41:156:39"}},"contracts/interfaces/IAsBNBMinter.sol":{"id":40,"ast":{"absolutePath":"contracts/interfaces/IAsBNBMinter.sol","exportedSymbols":{"IAsBNBMinter":[4962]},"id":4963,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4954,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"IAsBNBMinter","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4962,"linearizedBaseContracts":[4962],"name":"IAsBNBMinter","nameLocation":"76:12:40","nodeType":"ContractDefinition","nodes":[{"functionSelector":"85906256","id":4961,"implemented":false,"kind":"function","modifiers":[],"name":"convertToTokens","nameLocation":"104:15:40","nodeType":"FunctionDefinition","parameters":{"id":4957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4956,"mutability":"mutable","name":"amount","nameLocation":"128:6:40","nodeType":"VariableDeclaration","scope":4961,"src":"120:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4955,"name":"uint256","nodeType":"ElementaryTypeName","src":"120:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"119:16:40"},"returnParameters":{"id":4960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4961,"src":"159:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4958,"name":"uint256","nodeType":"ElementaryTypeName","src":"159:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"158:9:40"},"scope":4962,"src":"95:73:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4963,"src":"66:104:40","usedErrors":[],"usedEvents":[]}],"src":"41:130:40"}},"contracts/interfaces/ICappedOracle.sol":{"id":41,"ast":{"absolutePath":"contracts/interfaces/ICappedOracle.sol","exportedSymbols":{"ICappedOracle":[4968]},"id":4969,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4964,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"ICappedOracle","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4968,"linearizedBaseContracts":[4968],"name":"ICappedOracle","nameLocation":"76:13:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"69240426","id":4967,"implemented":false,"kind":"function","modifiers":[],"name":"updateSnapshot","nameLocation":"105:14:41","nodeType":"FunctionDefinition","parameters":{"id":4965,"nodeType":"ParameterList","parameters":[],"src":"119:2:41"},"returnParameters":{"id":4966,"nodeType":"ParameterList","parameters":[],"src":"130:0:41"},"scope":4968,"src":"96:35:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4969,"src":"66:67:41","usedErrors":[],"usedEvents":[]}],"src":"41:93:41"}},"contracts/interfaces/IERC4626.sol":{"id":42,"ast":{"absolutePath":"contracts/interfaces/IERC4626.sol","exportedSymbols":{"IERC4626":[4983]},"id":4984,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4970,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:42"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC4626","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4983,"linearizedBaseContracts":[4983],"name":"IERC4626","nameLocation":"76:8:42","nodeType":"ContractDefinition","nodes":[{"functionSelector":"07a2d13a","id":4977,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"100:15:42","nodeType":"FunctionDefinition","parameters":{"id":4973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4972,"mutability":"mutable","name":"shares","nameLocation":"124:6:42","nodeType":"VariableDeclaration","scope":4977,"src":"116:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4971,"name":"uint256","nodeType":"ElementaryTypeName","src":"116:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"115:16:42"},"returnParameters":{"id":4976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4977,"src":"155:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4974,"name":"uint256","nodeType":"ElementaryTypeName","src":"155:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"154:9:42"},"scope":4983,"src":"91:73:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":4982,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"178:8:42","nodeType":"FunctionDefinition","parameters":{"id":4978,"nodeType":"ParameterList","parameters":[],"src":"186:2:42"},"returnParameters":{"id":4981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4982,"src":"212:5:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4979,"name":"uint8","nodeType":"ElementaryTypeName","src":"212:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"211:7:42"},"scope":4983,"src":"169:50:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4984,"src":"66:155:42","usedErrors":[],"usedEvents":[]}],"src":"41:181:42"}},"contracts/interfaces/IEtherFiLiquidityPool.sol":{"id":43,"ast":{"absolutePath":"contracts/interfaces/IEtherFiLiquidityPool.sol","exportedSymbols":{"IEtherFiLiquidityPool":[4993]},"id":4994,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4985,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:43"},{"abstract":false,"baseContracts":[],"canonicalName":"IEtherFiLiquidityPool","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4993,"linearizedBaseContracts":[4993],"name":"IEtherFiLiquidityPool","nameLocation":"76:21:43","nodeType":"ContractDefinition","nodes":[{"functionSelector":"561bddf8","id":4992,"implemented":false,"kind":"function","modifiers":[],"name":"amountForShare","nameLocation":"113:14:43","nodeType":"FunctionDefinition","parameters":{"id":4988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"_share","nameLocation":"136:6:43","nodeType":"VariableDeclaration","scope":4992,"src":"128:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4986,"name":"uint256","nodeType":"ElementaryTypeName","src":"128:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"127:16:43"},"returnParameters":{"id":4991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4992,"src":"167:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4989,"name":"uint256","nodeType":"ElementaryTypeName","src":"167:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"166:9:43"},"scope":4993,"src":"104:72:43","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4994,"src":"66:112:43","usedErrors":[],"usedEvents":[]}],"src":"41:138:43"}},"contracts/interfaces/IPStakePool.sol":{"id":44,"ast":{"absolutePath":"contracts/interfaces/IPStakePool.sol","exportedSymbols":{"IPStakePool":[5008]},"id":5009,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4995,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:44"},{"abstract":false,"baseContracts":[],"canonicalName":"IPStakePool","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5008,"linearizedBaseContracts":[5008],"name":"IPStakePool","nameLocation":"76:11:44","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPStakePool.Data","id":5000,"members":[{"constant":false,"id":4997,"mutability":"mutable","name":"totalWei","nameLocation":"124:8:44","nodeType":"VariableDeclaration","scope":5000,"src":"116:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4996,"name":"uint256","nodeType":"ElementaryTypeName","src":"116:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4999,"mutability":"mutable","name":"poolTokenSupply","nameLocation":"150:15:44","nodeType":"VariableDeclaration","scope":5000,"src":"142:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4998,"name":"uint256","nodeType":"ElementaryTypeName","src":"142:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Data","nameLocation":"101:4:44","nodeType":"StructDefinition","scope":5008,"src":"94:78:44","visibility":"public"},{"documentation":{"id":5001,"nodeType":"StructuredDocumentation","src":"178:79:44","text":" @dev The current exchange rate for converting stkBNB to BNB."},"functionSelector":"3ba0b9a9","id":5007,"implemented":false,"kind":"function","modifiers":[],"name":"exchangeRate","nameLocation":"271:12:44","nodeType":"FunctionDefinition","parameters":{"id":5002,"nodeType":"ParameterList","parameters":[],"src":"283:2:44"},"returnParameters":{"id":5006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5007,"src":"309:11:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data"},"typeName":{"id":5004,"nodeType":"UserDefinedTypeName","pathNode":{"id":5003,"name":"Data","nameLocations":["309:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":5000,"src":"309:4:44"},"referencedDeclaration":5000,"src":"309:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_storage_ptr","typeString":"struct IPStakePool.Data"}},"visibility":"internal"}],"src":"308:13:44"},"scope":5008,"src":"262:60:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5009,"src":"66:258:44","usedErrors":[],"usedEvents":[]}],"src":"41:284:44"}},"contracts/interfaces/IPendlePtOracle.sol":{"id":45,"ast":{"absolutePath":"contracts/interfaces/IPendlePtOracle.sol","exportedSymbols":{"IPendlePtOracle":[5042]},"id":5043,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5010,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:45"},{"abstract":false,"baseContracts":[],"canonicalName":"IPendlePtOracle","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5042,"linearizedBaseContracts":[5042],"name":"IPendlePtOracle","nameLocation":"76:15:45","nodeType":"ContractDefinition","nodes":[{"functionSelector":"abca0eab","id":5019,"implemented":false,"kind":"function","modifiers":[],"name":"getPtToAssetRate","nameLocation":"107:16:45","nodeType":"FunctionDefinition","parameters":{"id":5015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5012,"mutability":"mutable","name":"market","nameLocation":"132:6:45","nodeType":"VariableDeclaration","scope":5019,"src":"124:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5011,"name":"address","nodeType":"ElementaryTypeName","src":"124:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5014,"mutability":"mutable","name":"duration","nameLocation":"147:8:45","nodeType":"VariableDeclaration","scope":5019,"src":"140:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5013,"name":"uint32","nodeType":"ElementaryTypeName","src":"140:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"123:33:45"},"returnParameters":{"id":5018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5019,"src":"180:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5016,"name":"uint256","nodeType":"ElementaryTypeName","src":"180:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"179:9:45"},"scope":5042,"src":"98:91:45","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a31426d1","id":5028,"implemented":false,"kind":"function","modifiers":[],"name":"getPtToSyRate","nameLocation":"204:13:45","nodeType":"FunctionDefinition","parameters":{"id":5024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5021,"mutability":"mutable","name":"market","nameLocation":"226:6:45","nodeType":"VariableDeclaration","scope":5028,"src":"218:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5020,"name":"address","nodeType":"ElementaryTypeName","src":"218:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5023,"mutability":"mutable","name":"duration","nameLocation":"241:8:45","nodeType":"VariableDeclaration","scope":5028,"src":"234:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5022,"name":"uint32","nodeType":"ElementaryTypeName","src":"234:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"217:33:45"},"returnParameters":{"id":5027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5026,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5028,"src":"274:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5025,"name":"uint256","nodeType":"ElementaryTypeName","src":"274:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"273:9:45"},"scope":5042,"src":"195:88:45","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"873e9600","id":5041,"implemented":false,"kind":"function","modifiers":[],"name":"getOracleState","nameLocation":"298:14:45","nodeType":"FunctionDefinition","parameters":{"id":5033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5030,"mutability":"mutable","name":"market","nameLocation":"330:6:45","nodeType":"VariableDeclaration","scope":5041,"src":"322:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5029,"name":"address","nodeType":"ElementaryTypeName","src":"322:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5032,"mutability":"mutable","name":"duration","nameLocation":"353:8:45","nodeType":"VariableDeclaration","scope":5041,"src":"346:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5031,"name":"uint32","nodeType":"ElementaryTypeName","src":"346:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"312:55:45"},"returnParameters":{"id":5040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5035,"mutability":"mutable","name":"increaseCardinalityRequired","nameLocation":"420:27:45","nodeType":"VariableDeclaration","scope":5041,"src":"415:32:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5034,"name":"bool","nodeType":"ElementaryTypeName","src":"415:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5037,"mutability":"mutable","name":"cardinalityRequired","nameLocation":"456:19:45","nodeType":"VariableDeclaration","scope":5041,"src":"449:26:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5036,"name":"uint16","nodeType":"ElementaryTypeName","src":"449:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5039,"mutability":"mutable","name":"oldestObservationSatisfied","nameLocation":"482:26:45","nodeType":"VariableDeclaration","scope":5041,"src":"477:31:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5038,"name":"bool","nodeType":"ElementaryTypeName","src":"477:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"414:95:45"},"scope":5042,"src":"289:221:45","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5043,"src":"66:446:45","usedErrors":[],"usedEvents":[]}],"src":"41:472:45"}},"contracts/interfaces/ISFrax.sol":{"id":46,"ast":{"absolutePath":"contracts/interfaces/ISFrax.sol","exportedSymbols":{"ISFrax":[5057]},"id":5058,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5044,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:46"},{"abstract":false,"baseContracts":[],"canonicalName":"ISFrax","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5057,"linearizedBaseContracts":[5057],"name":"ISFrax","nameLocation":"76:6:46","nodeType":"ContractDefinition","nodes":[{"functionSelector":"07a2d13a","id":5051,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"98:15:46","nodeType":"FunctionDefinition","parameters":{"id":5047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5046,"mutability":"mutable","name":"shares","nameLocation":"122:6:46","nodeType":"VariableDeclaration","scope":5051,"src":"114:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5045,"name":"uint256","nodeType":"ElementaryTypeName","src":"114:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"113:16:46"},"returnParameters":{"id":5050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5051,"src":"153:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5048,"name":"uint256","nodeType":"ElementaryTypeName","src":"153:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"152:9:46"},"scope":5057,"src":"89:73:46","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":5056,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"176:8:46","nodeType":"FunctionDefinition","parameters":{"id":5052,"nodeType":"ParameterList","parameters":[],"src":"184:2:46"},"returnParameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5056,"src":"210:5:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5053,"name":"uint8","nodeType":"ElementaryTypeName","src":"210:5:46","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"209:7:46"},"scope":5057,"src":"167:50:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5058,"src":"66:153:46","usedErrors":[],"usedEvents":[]}],"src":"41:179:46"}},"contracts/interfaces/ISfrxEthFraxOracle.sol":{"id":47,"ast":{"absolutePath":"contracts/interfaces/ISfrxEthFraxOracle.sol","exportedSymbols":{"ISfrxEthFraxOracle":[5069]},"id":5070,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5059,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:47"},{"abstract":false,"baseContracts":[],"canonicalName":"ISfrxEthFraxOracle","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5069,"linearizedBaseContracts":[5069],"name":"ISfrxEthFraxOracle","nameLocation":"76:18:47","nodeType":"ContractDefinition","nodes":[{"functionSelector":"bd9a548b","id":5068,"implemented":false,"kind":"function","modifiers":[],"name":"getPrices","nameLocation":"110:9:47","nodeType":"FunctionDefinition","parameters":{"id":5060,"nodeType":"ParameterList","parameters":[],"src":"119:2:47"},"returnParameters":{"id":5067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5062,"mutability":"mutable","name":"_isbadData","nameLocation":"150:10:47","nodeType":"VariableDeclaration","scope":5068,"src":"145:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5061,"name":"bool","nodeType":"ElementaryTypeName","src":"145:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5064,"mutability":"mutable","name":"_priceLow","nameLocation":"170:9:47","nodeType":"VariableDeclaration","scope":5068,"src":"162:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5063,"name":"uint256","nodeType":"ElementaryTypeName","src":"162:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5066,"mutability":"mutable","name":"_priceHigh","nameLocation":"189:10:47","nodeType":"VariableDeclaration","scope":5068,"src":"181:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5065,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"144:56:47"},"scope":5069,"src":"101:100:47","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5070,"src":"66:137:47","usedErrors":[],"usedEvents":[]}],"src":"41:163:47"}},"contracts/interfaces/IStETH.sol":{"id":48,"ast":{"absolutePath":"contracts/interfaces/IStETH.sol","exportedSymbols":{"IStETH":[5084]},"id":5085,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5071,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:48"},{"abstract":false,"baseContracts":[],"canonicalName":"IStETH","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5084,"linearizedBaseContracts":[5084],"name":"IStETH","nameLocation":"77:6:48","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7a28fb88","id":5078,"implemented":false,"kind":"function","modifiers":[],"name":"getPooledEthByShares","nameLocation":"99:20:48","nodeType":"FunctionDefinition","parameters":{"id":5074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5073,"mutability":"mutable","name":"_sharesAmount","nameLocation":"128:13:48","nodeType":"VariableDeclaration","scope":5078,"src":"120:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5072,"name":"uint256","nodeType":"ElementaryTypeName","src":"120:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"119:23:48"},"returnParameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5078,"src":"166:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5075,"name":"uint256","nodeType":"ElementaryTypeName","src":"166:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"165:9:48"},"scope":5084,"src":"90:85:48","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":5083,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"189:8:48","nodeType":"FunctionDefinition","parameters":{"id":5079,"nodeType":"ParameterList","parameters":[],"src":"197:2:48"},"returnParameters":{"id":5082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5083,"src":"223:5:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5080,"name":"uint8","nodeType":"ElementaryTypeName","src":"223:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"222:7:48"},"scope":5084,"src":"180:50:48","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5085,"src":"67:165:48","usedErrors":[],"usedEvents":[]}],"src":"41:192:48"}},"contracts/interfaces/IStaderStakeManager.sol":{"id":49,"ast":{"absolutePath":"contracts/interfaces/IStaderStakeManager.sol","exportedSymbols":{"IStaderStakeManager":[5094]},"id":5095,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5086,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:49"},{"abstract":false,"baseContracts":[],"canonicalName":"IStaderStakeManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5094,"linearizedBaseContracts":[5094],"name":"IStaderStakeManager","nameLocation":"76:19:49","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ca0506e8","id":5093,"implemented":false,"kind":"function","modifiers":[],"name":"convertBnbXToBnb","nameLocation":"111:16:49","nodeType":"FunctionDefinition","parameters":{"id":5089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5088,"mutability":"mutable","name":"_amount","nameLocation":"136:7:49","nodeType":"VariableDeclaration","scope":5093,"src":"128:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5087,"name":"uint256","nodeType":"ElementaryTypeName","src":"128:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"127:17:49"},"returnParameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5093,"src":"168:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5090,"name":"uint256","nodeType":"ElementaryTypeName","src":"168:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"167:9:49"},"scope":5094,"src":"102:75:49","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5095,"src":"66:113:49","usedErrors":[],"usedEvents":[]}],"src":"41:139:49"}},"contracts/interfaces/ISynclubStakeManager.sol":{"id":50,"ast":{"absolutePath":"contracts/interfaces/ISynclubStakeManager.sol","exportedSymbols":{"ISynclubStakeManager":[5104]},"id":5105,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5096,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:50"},{"abstract":false,"baseContracts":[],"canonicalName":"ISynclubStakeManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5104,"linearizedBaseContracts":[5104],"name":"ISynclubStakeManager","nameLocation":"76:20:50","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ce6298e1","id":5103,"implemented":false,"kind":"function","modifiers":[],"name":"convertSnBnbToBnb","nameLocation":"112:17:50","nodeType":"FunctionDefinition","parameters":{"id":5099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5098,"mutability":"mutable","name":"_amount","nameLocation":"138:7:50","nodeType":"VariableDeclaration","scope":5103,"src":"130:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5097,"name":"uint256","nodeType":"ElementaryTypeName","src":"130:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"129:17:50"},"returnParameters":{"id":5102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5103,"src":"170:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5100,"name":"uint256","nodeType":"ElementaryTypeName","src":"170:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"169:9:50"},"scope":5104,"src":"103:76:50","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5105,"src":"66:115:50","usedErrors":[],"usedEvents":[]}],"src":"41:141:50"}},"contracts/interfaces/IWBETH.sol":{"id":51,"ast":{"absolutePath":"contracts/interfaces/IWBETH.sol","exportedSymbols":{"IWBETH":[5117]},"id":5118,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5106,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:51"},{"abstract":false,"baseContracts":[],"canonicalName":"IWBETH","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5117,"linearizedBaseContracts":[5117],"name":"IWBETH","nameLocation":"76:6:51","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3ba0b9a9","id":5111,"implemented":false,"kind":"function","modifiers":[],"name":"exchangeRate","nameLocation":"98:12:51","nodeType":"FunctionDefinition","parameters":{"id":5107,"nodeType":"ParameterList","parameters":[],"src":"110:2:51"},"returnParameters":{"id":5110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5111,"src":"136:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5108,"name":"uint256","nodeType":"ElementaryTypeName","src":"136:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"135:9:51"},"scope":5117,"src":"89:56:51","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":5116,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"159:8:51","nodeType":"FunctionDefinition","parameters":{"id":5112,"nodeType":"ParameterList","parameters":[],"src":"167:2:51"},"returnParameters":{"id":5115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5116,"src":"193:5:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5113,"name":"uint8","nodeType":"ElementaryTypeName","src":"193:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"192:7:51"},"scope":5117,"src":"150:50:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5118,"src":"66:136:51","usedErrors":[],"usedEvents":[]}],"src":"41:162:51"}},"contracts/interfaces/IZkETH.sol":{"id":52,"ast":{"absolutePath":"contracts/interfaces/IZkETH.sol","exportedSymbols":{"IZkETH":[5130]},"id":5131,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5119,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:52"},{"abstract":false,"baseContracts":[],"canonicalName":"IZkETH","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5130,"linearizedBaseContracts":[5130],"name":"IZkETH","nameLocation":"77:6:52","nodeType":"ContractDefinition","nodes":[{"functionSelector":"39648e00","id":5124,"implemented":false,"kind":"function","modifiers":[],"name":"LSTPerToken","nameLocation":"99:11:52","nodeType":"FunctionDefinition","parameters":{"id":5120,"nodeType":"ParameterList","parameters":[],"src":"110:2:52"},"returnParameters":{"id":5123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5124,"src":"136:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5121,"name":"uint256","nodeType":"ElementaryTypeName","src":"136:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"135:9:52"},"scope":5130,"src":"90:55:52","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":5129,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"159:8:52","nodeType":"FunctionDefinition","parameters":{"id":5125,"nodeType":"ParameterList","parameters":[],"src":"167:2:52"},"returnParameters":{"id":5128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5129,"src":"193:5:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5126,"name":"uint8","nodeType":"ElementaryTypeName","src":"193:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"192:7:52"},"scope":5130,"src":"150:50:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5131,"src":"67:135:52","usedErrors":[],"usedEvents":[]}],"src":"41:162:52"}},"contracts/interfaces/OracleInterface.sol":{"id":53,"ast":{"absolutePath":"contracts/interfaces/OracleInterface.sol","exportedSymbols":{"BoundValidatorInterface":[5172],"OracleInterface":[5140],"ResilientOracleInterface":[5160]},"id":5173,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5132,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:53"},{"abstract":false,"baseContracts":[],"canonicalName":"OracleInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5140,"linearizedBaseContracts":[5140],"name":"OracleInterface","nameLocation":"77:15:53","nodeType":"ContractDefinition","nodes":[{"functionSelector":"41976e09","id":5139,"implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"108:8:53","nodeType":"FunctionDefinition","parameters":{"id":5135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5134,"mutability":"mutable","name":"asset","nameLocation":"125:5:53","nodeType":"VariableDeclaration","scope":5139,"src":"117:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5133,"name":"address","nodeType":"ElementaryTypeName","src":"117:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"116:15:53"},"returnParameters":{"id":5138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5139,"src":"155:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5136,"name":"uint256","nodeType":"ElementaryTypeName","src":"155:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"154:9:53"},"scope":5140,"src":"99:65:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5173,"src":"67:99:53","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":5141,"name":"OracleInterface","nameLocations":["206:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"206:15:53"},"id":5142,"nodeType":"InheritanceSpecifier","src":"206:15:53"}],"canonicalName":"ResilientOracleInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5160,"linearizedBaseContracts":[5160,5140],"name":"ResilientOracleInterface","nameLocation":"178:24:53","nodeType":"ContractDefinition","nodes":[{"functionSelector":"96e85ced","id":5147,"implemented":false,"kind":"function","modifiers":[],"name":"updatePrice","nameLocation":"237:11:53","nodeType":"FunctionDefinition","parameters":{"id":5145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5144,"mutability":"mutable","name":"vToken","nameLocation":"257:6:53","nodeType":"VariableDeclaration","scope":5147,"src":"249:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5143,"name":"address","nodeType":"ElementaryTypeName","src":"249:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"248:16:53"},"returnParameters":{"id":5146,"nodeType":"ParameterList","parameters":[],"src":"273:0:53"},"scope":5160,"src":"228:46:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b62cad69","id":5152,"implemented":false,"kind":"function","modifiers":[],"name":"updateAssetPrice","nameLocation":"289:16:53","nodeType":"FunctionDefinition","parameters":{"id":5150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5149,"mutability":"mutable","name":"asset","nameLocation":"314:5:53","nodeType":"VariableDeclaration","scope":5152,"src":"306:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5148,"name":"address","nodeType":"ElementaryTypeName","src":"306:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"305:15:53"},"returnParameters":{"id":5151,"nodeType":"ParameterList","parameters":[],"src":"329:0:53"},"scope":5160,"src":"280:50:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fc57d4df","id":5159,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nameLocation":"345:18:53","nodeType":"FunctionDefinition","parameters":{"id":5155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5154,"mutability":"mutable","name":"vToken","nameLocation":"372:6:53","nodeType":"VariableDeclaration","scope":5159,"src":"364:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5153,"name":"address","nodeType":"ElementaryTypeName","src":"364:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"363:16:53"},"returnParameters":{"id":5158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5159,"src":"403:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5156,"name":"uint256","nodeType":"ElementaryTypeName","src":"403:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:9:53"},"scope":5160,"src":"336:76:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5173,"src":"168:246:53","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"BoundValidatorInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5172,"linearizedBaseContracts":[5172],"name":"BoundValidatorInterface","nameLocation":"426:23:53","nodeType":"ContractDefinition","nodes":[{"functionSelector":"97c7033e","id":5171,"implemented":false,"kind":"function","modifiers":[],"name":"validatePriceWithAnchorPrice","nameLocation":"465:28:53","nodeType":"FunctionDefinition","parameters":{"id":5167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5162,"mutability":"mutable","name":"asset","nameLocation":"511:5:53","nodeType":"VariableDeclaration","scope":5171,"src":"503:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5161,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5164,"mutability":"mutable","name":"reporterPrice","nameLocation":"534:13:53","nodeType":"VariableDeclaration","scope":5171,"src":"526:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5163,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5166,"mutability":"mutable","name":"anchorPrice","nameLocation":"565:11:53","nodeType":"VariableDeclaration","scope":5171,"src":"557:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5165,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"493:89:53"},"returnParameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5171,"src":"606:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5168,"name":"bool","nodeType":"ElementaryTypeName","src":"606:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"605:6:53"},"scope":5172,"src":"456:156:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5173,"src":"416:198:53","usedErrors":[],"usedEvents":[]}],"src":"41:574:53"}},"contracts/interfaces/PublicResolverInterface.sol":{"id":54,"ast":{"absolutePath":"contracts/interfaces/PublicResolverInterface.sol","exportedSymbols":{"PublicResolverInterface":[5182]},"id":5183,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5174,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"79:24:54"},{"abstract":false,"baseContracts":[],"canonicalName":"PublicResolverInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5182,"linearizedBaseContracts":[5182],"name":"PublicResolverInterface","nameLocation":"115:23:54","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3b3b57de","id":5181,"implemented":false,"kind":"function","modifiers":[],"name":"addr","nameLocation":"154:4:54","nodeType":"FunctionDefinition","parameters":{"id":5177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5176,"mutability":"mutable","name":"node","nameLocation":"167:4:54","nodeType":"VariableDeclaration","scope":5181,"src":"159:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"159:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"158:14:54"},"returnParameters":{"id":5180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5181,"src":"196:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5178,"name":"address","nodeType":"ElementaryTypeName","src":"196:15:54","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"195:17:54"},"scope":5182,"src":"145:68:54","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5183,"src":"105:110:54","usedErrors":[],"usedEvents":[]}],"src":"79:137:54"}},"contracts/interfaces/SIDRegistryInterface.sol":{"id":55,"ast":{"absolutePath":"contracts/interfaces/SIDRegistryInterface.sol","exportedSymbols":{"SIDRegistryInterface":[5192]},"id":5193,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5184,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"79:24:55"},{"abstract":false,"baseContracts":[],"canonicalName":"SIDRegistryInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5192,"linearizedBaseContracts":[5192],"name":"SIDRegistryInterface","nameLocation":"115:20:55","nodeType":"ContractDefinition","nodes":[{"functionSelector":"0178b8bf","id":5191,"implemented":false,"kind":"function","modifiers":[],"name":"resolver","nameLocation":"151:8:55","nodeType":"FunctionDefinition","parameters":{"id":5187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5186,"mutability":"mutable","name":"node","nameLocation":"168:4:55","nodeType":"VariableDeclaration","scope":5191,"src":"160:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"160:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"159:14:55"},"returnParameters":{"id":5190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5191,"src":"197:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5188,"name":"address","nodeType":"ElementaryTypeName","src":"197:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"196:9:55"},"scope":5192,"src":"142:64:55","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5193,"src":"105:103:55","usedErrors":[],"usedEvents":[]}],"src":"79:130:55"}},"contracts/interfaces/VBep20Interface.sol":{"id":56,"ast":{"absolutePath":"contracts/interfaces/VBep20Interface.sol","exportedSymbols":{"IERC20":[2905],"IERC20Metadata":[2930],"VBep20Interface":[5204]},"id":5205,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5194,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:56"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":5195,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5205,"sourceUnit":2931,"src":"67:75:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5196,"name":"IERC20Metadata","nameLocations":["173:14:56"],"nodeType":"IdentifierPath","referencedDeclaration":2930,"src":"173:14:56"},"id":5197,"nodeType":"InheritanceSpecifier","src":"173:14:56"}],"canonicalName":"VBep20Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5204,"linearizedBaseContracts":[5204,2930,2905],"name":"VBep20Interface","nameLocation":"154:15:56","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5198,"nodeType":"StructuredDocumentation","src":"194:59:56","text":" @notice Underlying asset for this VToken"},"functionSelector":"6f307dc3","id":5203,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nameLocation":"267:10:56","nodeType":"FunctionDefinition","parameters":{"id":5199,"nodeType":"ParameterList","parameters":[],"src":"277:2:56"},"returnParameters":{"id":5202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5203,"src":"303:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5200,"name":"address","nodeType":"ElementaryTypeName","src":"303:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"302:9:56"},"scope":5204,"src":"258:54:56","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5205,"src":"144:170:56","usedErrors":[],"usedEvents":[2839,2848]}],"src":"41:274:56"}},"contracts/lib/Transient.sol":{"id":57,"ast":{"absolutePath":"contracts/lib/Transient.sol","exportedSymbols":{"Transient":[5251]},"id":5252,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5206,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:57"},{"abstract":false,"baseContracts":[],"canonicalName":"Transient","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5251,"linearizedBaseContracts":[5251],"name":"Transient","nameLocation":"75:9:57","nodeType":"ContractDefinition","nodes":[{"body":{"id":5227,"nodeType":"Block","src":"314:146:57","statements":[{"assignments":[5217],"declarations":[{"constant":false,"id":5217,"mutability":"mutable","name":"slot","nameLocation":"332:4:57","nodeType":"VariableDeclaration","scope":5227,"src":"324:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"324:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5225,"initialValue":{"arguments":[{"arguments":[{"id":5221,"name":"cacheSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"360:9:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5222,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"371:3:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5219,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"349:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"353:6:57","memberName":"encode","nodeType":"MemberAccess","src":"349:10:57","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"349:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5218,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"339:9:57","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"339:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"324:52:57"},{"AST":{"nativeSrc":"411:43:57","nodeType":"YulBlock","src":"411:43:57","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"432:4:57","nodeType":"YulIdentifier","src":"432:4:57"},{"name":"value","nativeSrc":"438:5:57","nodeType":"YulIdentifier","src":"438:5:57"}],"functionName":{"name":"tstore","nativeSrc":"425:6:57","nodeType":"YulIdentifier","src":"425:6:57"},"nativeSrc":"425:19:57","nodeType":"YulFunctionCall","src":"425:19:57"},"nativeSrc":"425:19:57","nodeType":"YulExpressionStatement","src":"425:19:57"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5217,"isOffset":false,"isSlot":false,"src":"432:4:57","valueSize":1},{"declaration":5213,"isOffset":false,"isSlot":false,"src":"438:5:57","valueSize":1}],"flags":["memory-safe"],"id":5226,"nodeType":"InlineAssembly","src":"386:68:57"}]},"documentation":{"id":5207,"nodeType":"StructuredDocumentation","src":"91:142:57","text":" @notice Cache the asset price into transient storage\n @param key address of the asset\n @param value asset price"},"id":5228,"implemented":true,"kind":"function","modifiers":[],"name":"cachePrice","nameLocation":"247:10:57","nodeType":"FunctionDefinition","parameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5209,"mutability":"mutable","name":"cacheSlot","nameLocation":"266:9:57","nodeType":"VariableDeclaration","scope":5228,"src":"258:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"258:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5211,"mutability":"mutable","name":"key","nameLocation":"285:3:57","nodeType":"VariableDeclaration","scope":5228,"src":"277:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5210,"name":"address","nodeType":"ElementaryTypeName","src":"277:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5213,"mutability":"mutable","name":"value","nameLocation":"298:5:57","nodeType":"VariableDeclaration","scope":5228,"src":"290:13:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5212,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"257:47:57"},"returnParameters":{"id":5215,"nodeType":"ParameterList","parameters":[],"src":"314:0:57"},"scope":5251,"src":"238:222:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5249,"nodeType":"Block","src":"712:147:57","statements":[{"assignments":[5239],"declarations":[{"constant":false,"id":5239,"mutability":"mutable","name":"slot","nameLocation":"730:4:57","nodeType":"VariableDeclaration","scope":5249,"src":"722:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"722:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5247,"initialValue":{"arguments":[{"arguments":[{"id":5243,"name":"cacheSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5231,"src":"758:9:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5244,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5233,"src":"769:3:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5241,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"747:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"751:6:57","memberName":"encode","nodeType":"MemberAccess","src":"747:10:57","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"747:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5240,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"737:9:57","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"737:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"722:52:57"},{"AST":{"nativeSrc":"809:44:57","nodeType":"YulBlock","src":"809:44:57","statements":[{"nativeSrc":"823:20:57","nodeType":"YulAssignment","src":"823:20:57","value":{"arguments":[{"name":"slot","nativeSrc":"838:4:57","nodeType":"YulIdentifier","src":"838:4:57"}],"functionName":{"name":"tload","nativeSrc":"832:5:57","nodeType":"YulIdentifier","src":"832:5:57"},"nativeSrc":"832:11:57","nodeType":"YulFunctionCall","src":"832:11:57"},"variableNames":[{"name":"value","nativeSrc":"823:5:57","nodeType":"YulIdentifier","src":"823:5:57"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5239,"isOffset":false,"isSlot":false,"src":"838:4:57","valueSize":1},{"declaration":5236,"isOffset":false,"isSlot":false,"src":"823:5:57","valueSize":1}],"flags":["memory-safe"],"id":5248,"nodeType":"InlineAssembly","src":"784:69:57"}]},"documentation":{"id":5229,"nodeType":"StructuredDocumentation","src":"466:146:57","text":" @notice Read cached price from transient storage\n @param key address of the asset\n @return value cached asset price"},"id":5250,"implemented":true,"kind":"function","modifiers":[],"name":"readCachedPrice","nameLocation":"626:15:57","nodeType":"FunctionDefinition","parameters":{"id":5234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5231,"mutability":"mutable","name":"cacheSlot","nameLocation":"650:9:57","nodeType":"VariableDeclaration","scope":5250,"src":"642:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5230,"name":"bytes32","nodeType":"ElementaryTypeName","src":"642:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5233,"mutability":"mutable","name":"key","nameLocation":"669:3:57","nodeType":"VariableDeclaration","scope":5250,"src":"661:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5232,"name":"address","nodeType":"ElementaryTypeName","src":"661:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"641:32:57"},"returnParameters":{"id":5237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5236,"mutability":"mutable","name":"value","nameLocation":"705:5:57","nodeType":"VariableDeclaration","scope":5250,"src":"697:13:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5235,"name":"uint256","nodeType":"ElementaryTypeName","src":"697:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"696:15:57"},"scope":5251,"src":"617:242:57","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5252,"src":"67:794:57","usedErrors":[],"usedEvents":[]}],"src":"41:821:57"}},"contracts/oracles/AnkrBNBOracle.sol":{"id":58,"ast":{"absolutePath":"contracts/oracles/AnkrBNBOracle.sol","exportedSymbols":{"AnkrBNBOracle":[5314],"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IAnkrBNB":[4939]},"id":5315,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5253,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:58"},{"absolutePath":"contracts/interfaces/IAnkrBNB.sol","file":"../interfaces/IAnkrBNB.sol","id":5255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5315,"sourceUnit":4940,"src":"66:54:58","symbolAliases":[{"foreign":{"id":5254,"name":"IAnkrBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"75:8:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":5257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5315,"sourceUnit":8612,"src":"121:75:58","symbolAliases":[{"foreign":{"id":5256,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"130:21:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":5259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5315,"sourceUnit":3614,"src":"197:86:58","symbolAliases":[{"foreign":{"id":5258,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"206:9:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5261,"name":"CorrelatedTokenOracle","nameLocations":["418:21:58"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"418:21:58"},"id":5262,"nodeType":"InheritanceSpecifier","src":"418:21:58"}],"canonicalName":"AnkrBNBOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":5260,"nodeType":"StructuredDocumentation","src":"285:106:58","text":" @title AnkrBNBOracle\n @author Venus\n @notice This oracle fetches the price of ankrBNB asset"},"fullyImplemented":true,"id":5314,"linearizedBaseContracts":[5314,8611,4968,5140],"name":"AnkrBNBOracle","nameLocation":"401:13:58","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":5263,"nodeType":"StructuredDocumentation","src":"446:55:58","text":"@notice This is used as token address of BNB on BSC"},"functionSelector":"a9534f8a","id":5266,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"530:17:58","nodeType":"VariableDeclaration","scope":5314,"src":"506:86:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5264,"name":"address","nodeType":"ElementaryTypeName","src":"506:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":5265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"550:42:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"body":{"id":5297,"nodeType":"Block","src":"1291:2:58","statements":[]},"documentation":{"id":5267,"nodeType":"StructuredDocumentation","src":"599:56:58","text":"@notice Constructor for the implementation contract."},"id":5298,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5286,"name":"ankrBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5269,"src":"1006:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5287,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1027:17:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5288,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"1058:15:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5289,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5273,"src":"1087:16:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5290,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"1117:17:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5291,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5277,"src":"1148:30:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5292,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"1192:24:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5293,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"1230:20:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5294,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5283,"src":"1264:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5295,"kind":"baseConstructorSpecifier","modifierName":{"id":5285,"name":"CorrelatedTokenOracle","nameLocations":["971:21:58"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"971:21:58"},"nodeType":"ModifierInvocation","src":"971:315:58"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5269,"mutability":"mutable","name":"ankrBNB","nameLocation":"689:7:58","nodeType":"VariableDeclaration","scope":5298,"src":"681:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5268,"name":"address","nodeType":"ElementaryTypeName","src":"681:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5271,"mutability":"mutable","name":"resilientOracle","nameLocation":"714:15:58","nodeType":"VariableDeclaration","scope":5298,"src":"706:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5270,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5273,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"747:16:58","nodeType":"VariableDeclaration","scope":5298,"src":"739:24:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5272,"name":"uint256","nodeType":"ElementaryTypeName","src":"739:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5275,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"781:17:58","nodeType":"VariableDeclaration","scope":5298,"src":"773:25:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5274,"name":"uint256","nodeType":"ElementaryTypeName","src":"773:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5277,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"816:30:58","nodeType":"VariableDeclaration","scope":5298,"src":"808:38:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5276,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5279,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"864:24:58","nodeType":"VariableDeclaration","scope":5298,"src":"856:32:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5278,"name":"uint256","nodeType":"ElementaryTypeName","src":"856:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5281,"mutability":"mutable","name":"accessControlManager","nameLocation":"906:20:58","nodeType":"VariableDeclaration","scope":5298,"src":"898:28:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5280,"name":"address","nodeType":"ElementaryTypeName","src":"898:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5283,"mutability":"mutable","name":"_snapshotGap","nameLocation":"944:12:58","nodeType":"VariableDeclaration","scope":5298,"src":"936:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5282,"name":"uint256","nodeType":"ElementaryTypeName","src":"936:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"671:291:58"},"returnParameters":{"id":5296,"nodeType":"ParameterList","parameters":[],"src":"1291:0:58"},"scope":5314,"src":"660:633:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":5312,"nodeType":"Block","src":"1492:75:58","statements":[{"expression":{"arguments":[{"id":5309,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1550:9:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":5306,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1518:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5305,"name":"IAnkrBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"1509:8:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAnkrBNB_$4939_$","typeString":"type(contract IAnkrBNB)"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:26:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAnkrBNB_$4939","typeString":"contract IAnkrBNB"}},"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1536:13:58","memberName":"sharesToBonds","nodeType":"MemberAccess","referencedDeclaration":4933,"src":"1509:40:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":5310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:51:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5304,"id":5311,"nodeType":"Return","src":"1502:58:58"}]},"documentation":{"id":5299,"nodeType":"StructuredDocumentation","src":"1299:118:58","text":" @notice Fetches the amount of BNB for 1 ankrBNB\n @return amount The amount of BNB for ankrBNB"},"functionSelector":"abb85613","id":5313,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1431:19:58","nodeType":"FunctionDefinition","overrides":{"id":5301,"nodeType":"OverrideSpecifier","overrides":[],"src":"1465:8:58"},"parameters":{"id":5300,"nodeType":"ParameterList","parameters":[],"src":"1450:2:58"},"returnParameters":{"id":5304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5313,"src":"1483:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5302,"name":"uint256","nodeType":"ElementaryTypeName","src":"1483:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1482:9:58"},"scope":5314,"src":"1422:145:58","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5315,"src":"392:1177:58","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1529:58"}},"contracts/oracles/AsBNBOracle.sol":{"id":59,"ast":{"absolutePath":"contracts/oracles/AsBNBOracle.sol","exportedSymbols":{"AsBNBOracle":[5386],"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IAsBNB":[4952],"IAsBNBMinter":[4962]},"id":5387,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5316,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:59"},{"absolutePath":"contracts/interfaces/IAsBNB.sol","file":"../interfaces/IAsBNB.sol","id":5318,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5387,"sourceUnit":4953,"src":"66:50:59","symbolAliases":[{"foreign":{"id":5317,"name":"IAsBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4952,"src":"75:6:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IAsBNBMinter.sol","file":"../interfaces/IAsBNBMinter.sol","id":5320,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5387,"sourceUnit":4963,"src":"117:62:59","symbolAliases":[{"foreign":{"id":5319,"name":"IAsBNBMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"126:12:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":5322,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5387,"sourceUnit":3614,"src":"180:86:59","symbolAliases":[{"foreign":{"id":5321,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"189:9:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":5324,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5387,"sourceUnit":8612,"src":"267:75:59","symbolAliases":[{"foreign":{"id":5323,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"276:21:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5326,"name":"CorrelatedTokenOracle","nameLocations":["471:21:59"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"471:21:59"},"id":5327,"nodeType":"InheritanceSpecifier","src":"471:21:59"}],"canonicalName":"AsBNBOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":5325,"nodeType":"StructuredDocumentation","src":"344:102:59","text":" @title asBNBOracle\n @author Venus\n @notice This oracle fetches the price of asBNB asset"},"fullyImplemented":true,"id":5386,"linearizedBaseContracts":[5386,8611,4968,5140],"name":"AsBNBOracle","nameLocation":"456:11:59","nodeType":"ContractDefinition","nodes":[{"body":{"id":5360,"nodeType":"Block","src":"1202:2:59","statements":[]},"documentation":{"id":5328,"nodeType":"StructuredDocumentation","src":"499:56:59","text":"@notice Constructor for the implementation contract."},"id":5361,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5349,"name":"asBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5330,"src":"929:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5350,"name":"slisBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"948:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5351,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5334,"src":"969:15:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5352,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"998:16:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5353,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5338,"src":"1028:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5354,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5340,"src":"1059:30:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5355,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5342,"src":"1103:24:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5356,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"1141:20:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5357,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5346,"src":"1175:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5358,"kind":"baseConstructorSpecifier","modifierName":{"id":5348,"name":"CorrelatedTokenOracle","nameLocations":["894:21:59"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"894:21:59"},"nodeType":"ModifierInvocation","src":"894:303:59"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5330,"mutability":"mutable","name":"asBNB","nameLocation":"589:5:59","nodeType":"VariableDeclaration","scope":5361,"src":"581:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5329,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5332,"mutability":"mutable","name":"slisBNB","nameLocation":"612:7:59","nodeType":"VariableDeclaration","scope":5361,"src":"604:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5331,"name":"address","nodeType":"ElementaryTypeName","src":"604:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5334,"mutability":"mutable","name":"resilientOracle","nameLocation":"637:15:59","nodeType":"VariableDeclaration","scope":5361,"src":"629:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5333,"name":"address","nodeType":"ElementaryTypeName","src":"629:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5336,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"670:16:59","nodeType":"VariableDeclaration","scope":5361,"src":"662:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5335,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5338,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"704:17:59","nodeType":"VariableDeclaration","scope":5361,"src":"696:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5337,"name":"uint256","nodeType":"ElementaryTypeName","src":"696:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5340,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"739:30:59","nodeType":"VariableDeclaration","scope":5361,"src":"731:38:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5339,"name":"uint256","nodeType":"ElementaryTypeName","src":"731:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5342,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"787:24:59","nodeType":"VariableDeclaration","scope":5361,"src":"779:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5341,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5344,"mutability":"mutable","name":"accessControlManager","nameLocation":"829:20:59","nodeType":"VariableDeclaration","scope":5361,"src":"821:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5343,"name":"address","nodeType":"ElementaryTypeName","src":"821:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5346,"mutability":"mutable","name":"_snapshotGap","nameLocation":"867:12:59","nodeType":"VariableDeclaration","scope":5361,"src":"859:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5345,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"571:314:59"},"returnParameters":{"id":5359,"nodeType":"ParameterList","parameters":[],"src":"1202:0:59"},"scope":5386,"src":"560:644:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":5384,"nodeType":"Block","src":"1406:136:59","statements":[{"assignments":[5370],"declarations":[{"constant":false,"id":5370,"mutability":"mutable","name":"minter","nameLocation":"1429:6:59","nodeType":"VariableDeclaration","scope":5384,"src":"1416:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsBNBMinter_$4962","typeString":"contract IAsBNBMinter"},"typeName":{"id":5369,"nodeType":"UserDefinedTypeName","pathNode":{"id":5368,"name":"IAsBNBMinter","nameLocations":["1416:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":4962,"src":"1416:12:59"},"referencedDeclaration":4962,"src":"1416:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IAsBNBMinter_$4962","typeString":"contract IAsBNBMinter"}},"visibility":"internal"}],"id":5378,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5373,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1458:16:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5372,"name":"IAsBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4952,"src":"1451:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsBNB_$4952_$","typeString":"type(contract IAsBNB)"}},"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsBNB_$4952","typeString":"contract IAsBNB"}},"id":5375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1476:6:59","memberName":"minter","nodeType":"MemberAccess","referencedDeclaration":4946,"src":"1451:31:59","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:33:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5371,"name":"IAsBNBMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"1438:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsBNBMinter_$4962_$","typeString":"type(contract IAsBNBMinter)"}},"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1438:47:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsBNBMinter_$4962","typeString":"contract IAsBNBMinter"}},"nodeType":"VariableDeclarationStatement","src":"1416:69:59"},{"expression":{"arguments":[{"id":5381,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1525:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5379,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5370,"src":"1502:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IAsBNBMinter_$4962","typeString":"contract IAsBNBMinter"}},"id":5380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1509:15:59","memberName":"convertToTokens","nodeType":"MemberAccess","referencedDeclaration":4961,"src":"1502:22:59","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1502:33:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5367,"id":5383,"nodeType":"Return","src":"1495:40:59"}]},"documentation":{"id":5362,"nodeType":"StructuredDocumentation","src":"1210:121:59","text":" @notice Fetches the amount of slisBNB for 1 asBNB\n @return price The amount of slisBNB for asBNB"},"functionSelector":"abb85613","id":5385,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1345:19:59","nodeType":"FunctionDefinition","overrides":{"id":5364,"nodeType":"OverrideSpecifier","overrides":[],"src":"1379:8:59"},"parameters":{"id":5363,"nodeType":"ParameterList","parameters":[],"src":"1364:2:59"},"returnParameters":{"id":5367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5366,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5385,"src":"1397:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1397:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1396:9:59"},"scope":5386,"src":"1336:206:59","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5387,"src":"447:1097:59","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1504:59"}},"contracts/oracles/BNBxOracle.sol":{"id":60,"ast":{"absolutePath":"contracts/oracles/BNBxOracle.sol","exportedSymbols":{"BNBxOracle":[5465],"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IStaderStakeManager":[5094],"ensureNonzeroAddress":[3639]},"id":5466,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5388,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:60"},{"absolutePath":"contracts/interfaces/IStaderStakeManager.sol","file":"../interfaces/IStaderStakeManager.sol","id":5390,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5466,"sourceUnit":5095,"src":"66:76:60","symbolAliases":[{"foreign":{"id":5389,"name":"IStaderStakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"75:19:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":5392,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5466,"sourceUnit":3655,"src":"143:98:60","symbolAliases":[{"foreign":{"id":5391,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"152:20:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":5394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5466,"sourceUnit":3614,"src":"242:86:60","symbolAliases":[{"foreign":{"id":5393,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"251:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":5396,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5466,"sourceUnit":8612,"src":"329:75:60","symbolAliases":[{"foreign":{"id":5395,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"338:21:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5398,"name":"CorrelatedTokenOracle","nameLocations":["530:21:60"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"530:21:60"},"id":5399,"nodeType":"InheritanceSpecifier","src":"530:21:60"}],"canonicalName":"BNBxOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"406:100:60","text":" @title BNBxOracle\n @author Venus\n @notice This oracle fetches the price of BNBx asset"},"fullyImplemented":true,"id":5465,"linearizedBaseContracts":[5465,8611,4968,5140],"name":"BNBxOracle","nameLocation":"516:10:60","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":5400,"nodeType":"StructuredDocumentation","src":"558:55:60","text":"@notice This is used as token address of BNB on BSC"},"functionSelector":"a9534f8a","id":5403,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"642:17:60","nodeType":"VariableDeclaration","scope":5465,"src":"618:86:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5401,"name":"address","nodeType":"ElementaryTypeName","src":"618:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":5402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"662:42:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":false,"documentation":{"id":5404,"nodeType":"StructuredDocumentation","src":"711:35:60","text":"@notice Address of StakeManager"},"functionSelector":"7353847a","id":5407,"mutability":"immutable","name":"STAKE_MANAGER","nameLocation":"788:13:60","nodeType":"VariableDeclaration","scope":5465,"src":"751:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"},"typeName":{"id":5406,"nodeType":"UserDefinedTypeName","pathNode":{"id":5405,"name":"IStaderStakeManager","nameLocations":["751:19:60"],"nodeType":"IdentifierPath","referencedDeclaration":5094,"src":"751:19:60"},"referencedDeclaration":5094,"src":"751:19:60","typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"}},"visibility":"public"},{"body":{"id":5450,"nodeType":"Block","src":"1524:110:60","statements":[{"expression":{"arguments":[{"id":5441,"name":"stakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"1555:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5440,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1534:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":5442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1534:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5443,"nodeType":"ExpressionStatement","src":"1534:34:60"},{"expression":{"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5444,"name":"STAKE_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5407,"src":"1578:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5446,"name":"stakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"1614:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5445,"name":"IStaderStakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"1594:19:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStaderStakeManager_$5094_$","typeString":"type(contract IStaderStakeManager)"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"}},"src":"1578:49:60","typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"}},"id":5449,"nodeType":"ExpressionStatement","src":"1578:49:60"}]},"documentation":{"id":5408,"nodeType":"StructuredDocumentation","src":"808:56:60","text":"@notice Constructor for the implementation contract."},"id":5451,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5429,"name":"bnbx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"1242:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5430,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5403,"src":"1260:17:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5431,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5414,"src":"1291:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5432,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5416,"src":"1320:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5433,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5418,"src":"1350:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5434,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"1381:30:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5435,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"1425:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5436,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"1463:20:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5437,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5426,"src":"1497:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5438,"kind":"baseConstructorSpecifier","modifierName":{"id":5428,"name":"CorrelatedTokenOracle","nameLocations":["1207:21:60"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1207:21:60"},"nodeType":"ModifierInvocation","src":"1207:312:60"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5410,"mutability":"mutable","name":"stakeManager","nameLocation":"898:12:60","nodeType":"VariableDeclaration","scope":5451,"src":"890:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5409,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5412,"mutability":"mutable","name":"bnbx","nameLocation":"928:4:60","nodeType":"VariableDeclaration","scope":5451,"src":"920:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5411,"name":"address","nodeType":"ElementaryTypeName","src":"920:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5414,"mutability":"mutable","name":"resilientOracle","nameLocation":"950:15:60","nodeType":"VariableDeclaration","scope":5451,"src":"942:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5413,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"983:16:60","nodeType":"VariableDeclaration","scope":5451,"src":"975:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5415,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5418,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"1017:17:60","nodeType":"VariableDeclaration","scope":5451,"src":"1009:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1009:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5420,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"1052:30:60","nodeType":"VariableDeclaration","scope":5451,"src":"1044:38:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5422,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"1100:24:60","nodeType":"VariableDeclaration","scope":5451,"src":"1092:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5421,"name":"uint256","nodeType":"ElementaryTypeName","src":"1092:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5424,"mutability":"mutable","name":"accessControlManager","nameLocation":"1142:20:60","nodeType":"VariableDeclaration","scope":5451,"src":"1134:28:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5423,"name":"address","nodeType":"ElementaryTypeName","src":"1134:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5426,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1180:12:60","nodeType":"VariableDeclaration","scope":5451,"src":"1172:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5425,"name":"uint256","nodeType":"ElementaryTypeName","src":"1172:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"880:318:60"},"returnParameters":{"id":5439,"nodeType":"ParameterList","parameters":[],"src":"1524:0:60"},"scope":5465,"src":"869:765:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":5463,"nodeType":"Block","src":"1826:65:60","statements":[{"expression":{"arguments":[{"id":5460,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1874:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5458,"name":"STAKE_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5407,"src":"1843:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IStaderStakeManager_$5094","typeString":"contract IStaderStakeManager"}},"id":5459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1857:16:60","memberName":"convertBnbXToBnb","nodeType":"MemberAccess","referencedDeclaration":5093,"src":"1843:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":5461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1843:41:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5457,"id":5462,"nodeType":"Return","src":"1836:48:60"}]},"documentation":{"id":5452,"nodeType":"StructuredDocumentation","src":"1640:111:60","text":" @notice Fetches the amount of BNB for 1 BNBx\n @return price The amount of BNB for BNBx"},"functionSelector":"abb85613","id":5464,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1765:19:60","nodeType":"FunctionDefinition","overrides":{"id":5454,"nodeType":"OverrideSpecifier","overrides":[],"src":"1799:8:60"},"parameters":{"id":5453,"nodeType":"ParameterList","parameters":[],"src":"1784:2:60"},"returnParameters":{"id":5457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5464,"src":"1817:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5455,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1816:9:60"},"scope":5465,"src":"1756:135:60","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5466,"src":"507:1386:60","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1853:60"}},"contracts/oracles/BinanceOracle.sol":{"id":61,"ast":{"absolutePath":"contracts/oracles/BinanceOracle.sol","exportedSymbols":{"AccessControlledV8":[3554],"AddressUpgradeable":[969],"BinanceOracle":[5902],"BoundValidatorInterface":[5172],"ContextUpgradeable":[1020],"FeedRegistryInterface":[4916],"IAccessControl":[1093],"IAccessControlManagerV8":[3599],"IERC20":[2905],"IERC20Metadata":[2930],"Initializable":[511],"OracleInterface":[5140],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342],"PublicResolverInterface":[5182],"ResilientOracleInterface":[5160],"SIDRegistryInterface":[5192],"VBep20Interface":[5204]},"id":5903,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5467,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:61"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":5468,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":2931,"src":"66:75:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/VBep20Interface.sol","file":"../interfaces/VBep20Interface.sol","id":5469,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":5205,"src":"142:43:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/SIDRegistryInterface.sol","file":"../interfaces/SIDRegistryInterface.sol","id":5470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":5193,"src":"186:48:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/FeedRegistryInterface.sol","file":"../interfaces/FeedRegistryInterface.sol","id":5471,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":4917,"src":"235:49:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/PublicResolverInterface.sol","file":"../interfaces/PublicResolverInterface.sol","id":5472,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":5183,"src":"285:51:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":5473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":5173,"src":"337:43:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":5474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":3555,"src":"381:89:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":5475,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5903,"sourceUnit":5173,"src":"471:43:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5477,"name":"AccessControlledV8","nameLocations":["652:18:61"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"652:18:61"},"id":5478,"nodeType":"InheritanceSpecifier","src":"652:18:61"},{"baseName":{"id":5479,"name":"OracleInterface","nameLocations":["672:15:61"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"672:15:61"},"id":5480,"nodeType":"InheritanceSpecifier","src":"672:15:61"}],"canonicalName":"BinanceOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":5476,"nodeType":"StructuredDocumentation","src":"516:109:61","text":" @title BinanceOracle\n @author Venus\n @notice This oracle fetches price of assets from Binance."},"fullyImplemented":true,"id":5902,"linearizedBaseContracts":[5902,5140,3554,209,342,1020,511],"name":"BinanceOracle","nameLocation":"635:13:61","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":5481,"nodeType":"StructuredDocumentation","src":"694:48:61","text":"@notice Used to fetch feed registry address."},"functionSelector":"475e7de5","id":5483,"mutability":"mutable","name":"sidRegistryAddress","nameLocation":"762:18:61","nodeType":"VariableDeclaration","scope":5902,"src":"747:33:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5482,"name":"address","nodeType":"ElementaryTypeName","src":"747:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":true,"documentation":{"id":5484,"nodeType":"StructuredDocumentation","src":"787:86:61","text":"@notice Set this as asset address for BNB. This is the underlying address for vBNB"},"functionSelector":"3e83b6b8","id":5487,"mutability":"constant","name":"BNB_ADDR","nameLocation":"902:8:61","nodeType":"VariableDeclaration","scope":5902,"src":"878:77:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5485,"name":"address","nodeType":"ElementaryTypeName","src":"878:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":5486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"913:42:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":false,"documentation":{"id":5488,"nodeType":"StructuredDocumentation","src":"962:53:61","text":"@notice Max stale period configuration for assets"},"functionSelector":"fdfbc277","id":5492,"mutability":"mutable","name":"maxStalePeriod","nameLocation":"1054:14:61","nodeType":"VariableDeclaration","scope":5902,"src":"1020:48:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"typeName":{"id":5491,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":5489,"name":"string","nodeType":"ElementaryTypeName","src":"1028:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1020:26:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"documentation":{"id":5493,"nodeType":"StructuredDocumentation","src":"1075:72:61","text":"@notice Override symbols to be compatible with Binance feed registry"},"functionSelector":"047a74b2","id":5497,"mutability":"mutable","name":"symbols","nameLocation":"1185:7:61","nodeType":"VariableDeclaration","scope":5902,"src":"1152:40:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_string_storage_$","typeString":"mapping(string => string)"},"typeName":{"id":5496,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":5494,"name":"string","nodeType":"ElementaryTypeName","src":"1160:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1152:25:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_string_storage_$","typeString":"mapping(string => string)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5495,"name":"string","nodeType":"ElementaryTypeName","src":"1170:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"public"},{"constant":false,"documentation":{"id":5498,"nodeType":"StructuredDocumentation","src":"1199:104:61","text":"@notice Used to fetch price of assets used directly when space ID is not supported by current chain."},"functionSelector":"011d3962","id":5500,"mutability":"mutable","name":"feedRegistryAddress","nameLocation":"1323:19:61","nodeType":"VariableDeclaration","scope":5902,"src":"1308:34:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5499,"name":"address","nodeType":"ElementaryTypeName","src":"1308:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":5501,"nodeType":"StructuredDocumentation","src":"1349:53:61","text":"@notice Emits when asset stale period is updated."},"eventSelector":"37839d4a80c5e3f2578f59515c911ee8cce42383d7ebaa1c92afcde9871c4b58","id":5507,"name":"MaxStalePeriodAdded","nameLocation":"1413:19:61","nodeType":"EventDefinition","parameters":{"id":5506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5503,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"1448:5:61","nodeType":"VariableDeclaration","scope":5507,"src":"1433:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5502,"name":"string","nodeType":"ElementaryTypeName","src":"1433:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5505,"indexed":false,"mutability":"mutable","name":"maxStalePeriod","nameLocation":"1463:14:61","nodeType":"VariableDeclaration","scope":5507,"src":"1455:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1432:46:61"},"src":"1407:72:61"},{"anonymous":false,"documentation":{"id":5508,"nodeType":"StructuredDocumentation","src":"1485:54:61","text":"@notice Emits when symbol of the asset is updated."},"eventSelector":"ceb1f47aa91b96f02ea70e1deed25fe154ad1885aea509bd7222f9eec0a0bda5","id":5514,"name":"SymbolOverridden","nameLocation":"1550:16:61","nodeType":"EventDefinition","parameters":{"id":5513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5510,"indexed":true,"mutability":"mutable","name":"symbol","nameLocation":"1582:6:61","nodeType":"VariableDeclaration","scope":5514,"src":"1567:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5509,"name":"string","nodeType":"ElementaryTypeName","src":"1567:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5512,"indexed":false,"mutability":"mutable","name":"overriddenSymbol","nameLocation":"1597:16:61","nodeType":"VariableDeclaration","scope":5514,"src":"1590:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5511,"name":"string","nodeType":"ElementaryTypeName","src":"1590:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1566:48:61"},"src":"1544:71:61"},{"anonymous":false,"documentation":{"id":5515,"nodeType":"StructuredDocumentation","src":"1621:59:61","text":"@notice Emits when address of feed registry is updated."},"eventSelector":"6d1006252b3dd171af76c28c184327bfddc39f439a50e0ac7f418c660b8894b5","id":5521,"name":"FeedRegistryUpdated","nameLocation":"1691:19:61","nodeType":"EventDefinition","parameters":{"id":5520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5517,"indexed":true,"mutability":"mutable","name":"oldFeedRegistry","nameLocation":"1727:15:61","nodeType":"VariableDeclaration","scope":5521,"src":"1711:31:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5516,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5519,"indexed":true,"mutability":"mutable","name":"newFeedRegistry","nameLocation":"1760:15:61","nodeType":"VariableDeclaration","scope":5521,"src":"1744:31:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5518,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1710:66:61"},"src":"1685:92:61"},{"body":{"id":5538,"nodeType":"Block","src":"1896:86:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5526,"name":"someone","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1910:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1929:1:61","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":5528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1921:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5527,"name":"address","nodeType":"ElementaryTypeName","src":"1921:7:61","typeDescriptions":{}}},"id":5530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1921:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1910:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5536,"nodeType":"IfStatement","src":"1906:58:61","trueBody":{"expression":{"arguments":[{"hexValue":"63616e2774206265207a65726f2061646472657373","id":5533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1940:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""},"value":"can't be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""}],"id":5532,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1933:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1933:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5535,"nodeType":"ExpressionStatement","src":"1933:31:61"}},{"id":5537,"nodeType":"PlaceholderStatement","src":"1974:1:61"}]},"documentation":{"id":5522,"nodeType":"StructuredDocumentation","src":"1783:67:61","text":" @notice Checks whether an address is null or not"},"id":5539,"name":"notNullAddress","nameLocation":"1864:14:61","nodeType":"ModifierDefinition","parameters":{"id":5525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5524,"mutability":"mutable","name":"someone","nameLocation":"1887:7:61","nodeType":"VariableDeclaration","scope":5539,"src":"1879:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5523,"name":"address","nodeType":"ElementaryTypeName","src":"1879:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1878:17:61"},"src":"1855:127:61","virtual":false,"visibility":"internal"},{"body":{"id":5546,"nodeType":"Block","src":"2116:39:61","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5543,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"2126:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2126:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5545,"nodeType":"ExpressionStatement","src":"2126:22:61"}]},"documentation":{"id":5540,"nodeType":"StructuredDocumentation","src":"1988:109:61","text":"@notice Constructor for the implementation contract.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":5547,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5541,"nodeType":"ParameterList","parameters":[],"src":"2113:2:61"},"returnParameters":{"id":5542,"nodeType":"ParameterList","parameters":[],"src":"2116:0:61"},"scope":5902,"src":"2102:53:61","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5565,"nodeType":"Block","src":"2444:96:61","statements":[{"expression":{"id":5559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5557,"name":"sidRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"2454:18:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5558,"name":"_sidRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5550,"src":"2475:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2454:40:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5560,"nodeType":"ExpressionStatement","src":"2454:40:61"},{"expression":{"arguments":[{"id":5562,"name":"_acm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"2528:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5561,"name":"__AccessControlled_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"2504:23:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:29:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5564,"nodeType":"ExpressionStatement","src":"2504:29:61"}]},"documentation":{"id":5548,"nodeType":"StructuredDocumentation","src":"2161:194:61","text":" @notice Sets the contracts required to fetch prices\n @param _sidRegistryAddress Address of SID registry\n @param _acm Address of the access control manager contract"},"functionSelector":"485cc955","id":5566,"implemented":true,"kind":"function","modifiers":[{"id":5555,"kind":"modifierInvocation","modifierName":{"id":5554,"name":"initializer","nameLocations":["2432:11:61"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"2432:11:61"},"nodeType":"ModifierInvocation","src":"2432:11:61"}],"name":"initialize","nameLocation":"2369:10:61","nodeType":"FunctionDefinition","parameters":{"id":5553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5550,"mutability":"mutable","name":"_sidRegistryAddress","nameLocation":"2388:19:61","nodeType":"VariableDeclaration","scope":5566,"src":"2380:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5549,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5552,"mutability":"mutable","name":"_acm","nameLocation":"2417:4:61","nodeType":"VariableDeclaration","scope":5566,"src":"2409:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5551,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2379:43:61"},"returnParameters":{"id":5556,"nodeType":"ParameterList","parameters":[],"src":"2444:0:61"},"scope":5902,"src":"2360:180:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5609,"nodeType":"Block","src":"2801:328:61","statements":[{"expression":{"arguments":[{"hexValue":"7365744d61785374616c65506572696f6428737472696e672c75696e7432353629","id":5575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2831:35:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_636b999aa368c0912a25086b6677c3ed41f3204c3a8de257c7c28e282cb6d8c0","typeString":"literal_string \"setMaxStalePeriod(string,uint256)\""},"value":"setMaxStalePeriod(string,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_636b999aa368c0912a25086b6677c3ed41f3204c3a8de257c7c28e282cb6d8c0","typeString":"literal_string \"setMaxStalePeriod(string,uint256)\""}],"id":5574,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"2811:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:56:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5577,"nodeType":"ExpressionStatement","src":"2811:56:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5578,"name":"_maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"2881:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2900:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2881:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5585,"nodeType":"IfStatement","src":"2877:62:61","trueBody":{"expression":{"arguments":[{"hexValue":"7374616c6520706572696f642063616e2774206265207a65726f","id":5582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2910:28:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac79e17bea0e9553ff8067e0a192973f4cb0a54c912cae04cb23b5415268134","typeString":"literal_string \"stale period can't be zero\""},"value":"stale period can't be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cac79e17bea0e9553ff8067e0a192973f4cb0a54c912cae04cb23b5415268134","typeString":"literal_string \"stale period can't be zero\""}],"id":5581,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2903:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2903:36:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5584,"nodeType":"ExpressionStatement","src":"2903:36:61"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5588,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"2959:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2953:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5586,"name":"bytes","nodeType":"ElementaryTypeName","src":"2953:5:61","typeDescriptions":{}}},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2953:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2967:6:61","memberName":"length","nodeType":"MemberAccess","src":"2953:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2977:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2953:25:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5597,"nodeType":"IfStatement","src":"2949:63:61","trueBody":{"expression":{"arguments":[{"hexValue":"73796d626f6c2063616e6e6f7420626520656d707479","id":5594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2987:24:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_27ec75ff32eb0038314efd0ac80d470aefa17fc252cc46525e8e45a1c645a80a","typeString":"literal_string \"symbol cannot be empty\""},"value":"symbol cannot be empty"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_27ec75ff32eb0038314efd0ac80d470aefa17fc252cc46525e8e45a1c645a80a","typeString":"literal_string \"symbol cannot be empty\""}],"id":5593,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2980:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2980:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5596,"nodeType":"ExpressionStatement","src":"2980:32:61"}},{"expression":{"id":5602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5598,"name":"maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5492,"src":"3023:14:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":5600,"indexExpression":{"id":5599,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"3038:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3023:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5601,"name":"_maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"3048:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3023:40:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5603,"nodeType":"ExpressionStatement","src":"3023:40:61"},{"eventCall":{"arguments":[{"id":5605,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"3098:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5606,"name":"_maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"3106:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5604,"name":"MaxStalePeriodAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"3078:19:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:44:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5608,"nodeType":"EmitStatement","src":"3073:49:61"}]},"documentation":{"id":5567,"nodeType":"StructuredDocumentation","src":"2546:167:61","text":" @notice Used to set the max stale period of an asset\n @param symbol The symbol of the asset\n @param _maxStalePeriod The max stake period"},"functionSelector":"636b999a","id":5610,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxStalePeriod","nameLocation":"2727:17:61","nodeType":"FunctionDefinition","parameters":{"id":5572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5569,"mutability":"mutable","name":"symbol","nameLocation":"2759:6:61","nodeType":"VariableDeclaration","scope":5610,"src":"2745:20:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5568,"name":"string","nodeType":"ElementaryTypeName","src":"2745:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5571,"mutability":"mutable","name":"_maxStalePeriod","nameLocation":"2775:15:61","nodeType":"VariableDeclaration","scope":5610,"src":"2767:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2767:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2744:47:61"},"returnParameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"2801:0:61"},"scope":5902,"src":"2718:411:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5645,"nodeType":"Block","src":"3403:243:61","statements":[{"expression":{"arguments":[{"hexValue":"73657453796d626f6c4f7665727269646528737472696e672c737472696e6729","id":5619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3433:34:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_9eab1ad6a07448c939fc1d2bec3ab8bedf21c796ce31ab5da1ec7c12fafd9f46","typeString":"literal_string \"setSymbolOverride(string,string)\""},"value":"setSymbolOverride(string,string)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9eab1ad6a07448c939fc1d2bec3ab8bedf21c796ce31ab5da1ec7c12fafd9f46","typeString":"literal_string \"setSymbolOverride(string,string)\""}],"id":5618,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"3413:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":5620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3413:55:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5621,"nodeType":"ExpressionStatement","src":"3413:55:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5624,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"3488:6:61","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":5623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3482:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5622,"name":"bytes","nodeType":"ElementaryTypeName","src":"3482:5:61","typeDescriptions":{}}},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3482:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3496:6:61","memberName":"length","nodeType":"MemberAccess","src":"3482:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3506:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3482:25:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5633,"nodeType":"IfStatement","src":"3478:63:61","trueBody":{"expression":{"arguments":[{"hexValue":"73796d626f6c2063616e6e6f7420626520656d707479","id":5630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3516:24:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_27ec75ff32eb0038314efd0ac80d470aefa17fc252cc46525e8e45a1c645a80a","typeString":"literal_string \"symbol cannot be empty\""},"value":"symbol cannot be empty"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_27ec75ff32eb0038314efd0ac80d470aefa17fc252cc46525e8e45a1c645a80a","typeString":"literal_string \"symbol cannot be empty\""}],"id":5629,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3509:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3509:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5632,"nodeType":"ExpressionStatement","src":"3509:32:61"}},{"expression":{"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5634,"name":"symbols","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"3552:7:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_string_storage_$","typeString":"mapping(string memory => string storage ref)"}},"id":5636,"indexExpression":{"id":5635,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"3560:6:61","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3552:15:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5637,"name":"overrideSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"3570:14:61","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"3552:32:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5639,"nodeType":"ExpressionStatement","src":"3552:32:61"},{"eventCall":{"arguments":[{"id":5641,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"3616:6:61","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":5642,"name":"overrideSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"3624:14:61","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":5640,"name":"SymbolOverridden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5514,"src":"3599:16:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3599:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5644,"nodeType":"EmitStatement","src":"3594:45:61"}]},"documentation":{"id":5611,"nodeType":"StructuredDocumentation","src":"3135:171:61","text":" @notice Used to override a symbol when fetching price\n @param symbol The symbol to override\n @param overrideSymbol The symbol after override"},"functionSelector":"9eab1ad6","id":5646,"implemented":true,"kind":"function","modifiers":[],"name":"setSymbolOverride","nameLocation":"3320:17:61","nodeType":"FunctionDefinition","parameters":{"id":5616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5613,"mutability":"mutable","name":"symbol","nameLocation":"3354:6:61","nodeType":"VariableDeclaration","scope":5646,"src":"3338:22:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":5612,"name":"string","nodeType":"ElementaryTypeName","src":"3338:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5615,"mutability":"mutable","name":"overrideSymbol","nameLocation":"3378:14:61","nodeType":"VariableDeclaration","scope":5646,"src":"3362:30:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":5614,"name":"string","nodeType":"ElementaryTypeName","src":"3362:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3337:56:61"},"returnParameters":{"id":5617,"nodeType":"ParameterList","parameters":[],"src":"3403:0:61"},"scope":5902,"src":"3311:335:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5677,"nodeType":"Block","src":"3966:229:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5657,"name":"sidRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"3980:18:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4010:1:61","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":5659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4002:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5658,"name":"address","nodeType":"ElementaryTypeName","src":"4002:7:61","typeDescriptions":{}}},"id":5661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4002:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3980:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5667,"nodeType":"IfStatement","src":"3976:79:61","trueBody":{"expression":{"arguments":[{"hexValue":"736964526567697374727941646472657373206d757374206265207a65726f","id":5664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4021:33:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_85211e0caaaee74ba2c86707916473900ecf1dcaa8ad399c23a30317418d4a5a","typeString":"literal_string \"sidRegistryAddress must be zero\""},"value":"sidRegistryAddress must be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_85211e0caaaee74ba2c86707916473900ecf1dcaa8ad399c23a30317418d4a5a","typeString":"literal_string \"sidRegistryAddress must be zero\""}],"id":5663,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4014:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4014:41:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5666,"nodeType":"ExpressionStatement","src":"4014:41:61"}},{"eventCall":{"arguments":[{"id":5669,"name":"feedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"4090:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5670,"name":"newfeedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"4111:22:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5668,"name":"FeedRegistryUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5521,"src":"4070:19:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4070:64:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5672,"nodeType":"EmitStatement","src":"4065:69:61"},{"expression":{"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5673,"name":"feedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"4144:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5674,"name":"newfeedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"4166:22:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4144:44:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5676,"nodeType":"ExpressionStatement","src":"4144:44:61"}]},"documentation":{"id":5647,"nodeType":"StructuredDocumentation","src":"3652:173:61","text":" @notice Used to set feed registry address when current chain does not support space ID.\n @param newfeedRegistryAddress Address of new feed registry."},"functionSelector":"255ce37a","id":5678,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":5652,"name":"newfeedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"3932:22:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5653,"kind":"modifierInvocation","modifierName":{"id":5651,"name":"notNullAddress","nameLocations":["3917:14:61"],"nodeType":"IdentifierPath","referencedDeclaration":5539,"src":"3917:14:61"},"nodeType":"ModifierInvocation","src":"3917:38:61"},{"id":5655,"kind":"modifierInvocation","modifierName":{"id":5654,"name":"onlyOwner","nameLocations":["3956:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":256,"src":"3956:9:61"},"nodeType":"ModifierInvocation","src":"3956:9:61"}],"name":"setFeedRegistryAddress","nameLocation":"3839:22:61","nodeType":"FunctionDefinition","parameters":{"id":5650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5649,"mutability":"mutable","name":"newfeedRegistryAddress","nameLocation":"3879:22:61","nodeType":"VariableDeclaration","scope":5678,"src":"3871:30:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5648,"name":"address","nodeType":"ElementaryTypeName","src":"3871:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3861:46:61"},"returnParameters":{"id":5656,"nodeType":"ParameterList","parameters":[],"src":"3966:0:61"},"scope":5902,"src":"3830:365:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5714,"nodeType":"Block","src":"4421:404:61","statements":[{"assignments":[5685],"declarations":[{"constant":false,"id":5685,"mutability":"mutable","name":"nodeHash","nameLocation":"4439:8:61","nodeType":"VariableDeclaration","scope":5714,"src":"4431:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4431:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5687,"initialValue":{"hexValue":"307839346665333832316530373638656233353031323438346462346466363138393066396136636135626661393834656638666637313765373331333966616666","id":5686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4450:66:61","typeDescriptions":{"typeIdentifier":"t_rational_67391468155889520415473969054846594015821251862030124361684481397244703668991_by_1","typeString":"int_const 6739...(69 digits omitted)...8991"},"value":"0x94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff"},"nodeType":"VariableDeclarationStatement","src":"4431:85:61"},{"assignments":[5690],"declarations":[{"constant":false,"id":5690,"mutability":"mutable","name":"sidRegistry","nameLocation":"4548:11:61","nodeType":"VariableDeclaration","scope":5714,"src":"4527:32:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SIDRegistryInterface_$5192","typeString":"contract SIDRegistryInterface"},"typeName":{"id":5689,"nodeType":"UserDefinedTypeName","pathNode":{"id":5688,"name":"SIDRegistryInterface","nameLocations":["4527:20:61"],"nodeType":"IdentifierPath","referencedDeclaration":5192,"src":"4527:20:61"},"referencedDeclaration":5192,"src":"4527:20:61","typeDescriptions":{"typeIdentifier":"t_contract$_SIDRegistryInterface_$5192","typeString":"contract SIDRegistryInterface"}},"visibility":"internal"}],"id":5694,"initialValue":{"arguments":[{"id":5692,"name":"sidRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"4583:18:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5691,"name":"SIDRegistryInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"4562:20:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SIDRegistryInterface_$5192_$","typeString":"type(contract SIDRegistryInterface)"}},"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SIDRegistryInterface_$5192","typeString":"contract SIDRegistryInterface"}},"nodeType":"VariableDeclarationStatement","src":"4527:75:61"},{"assignments":[5696],"declarations":[{"constant":false,"id":5696,"mutability":"mutable","name":"publicResolverAddress","nameLocation":"4620:21:61","nodeType":"VariableDeclaration","scope":5714,"src":"4612:29:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5695,"name":"address","nodeType":"ElementaryTypeName","src":"4612:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5701,"initialValue":{"arguments":[{"id":5699,"name":"nodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5685,"src":"4665:8:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5697,"name":"sidRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"4644:11:61","typeDescriptions":{"typeIdentifier":"t_contract$_SIDRegistryInterface_$5192","typeString":"contract SIDRegistryInterface"}},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4656:8:61","memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":5191,"src":"4644:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":5700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4644:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4612:62:61"},{"assignments":[5704],"declarations":[{"constant":false,"id":5704,"mutability":"mutable","name":"publicResolver","nameLocation":"4708:14:61","nodeType":"VariableDeclaration","scope":5714,"src":"4684:38:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolverInterface_$5182","typeString":"contract PublicResolverInterface"},"typeName":{"id":5703,"nodeType":"UserDefinedTypeName","pathNode":{"id":5702,"name":"PublicResolverInterface","nameLocations":["4684:23:61"],"nodeType":"IdentifierPath","referencedDeclaration":5182,"src":"4684:23:61"},"referencedDeclaration":5182,"src":"4684:23:61","typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolverInterface_$5182","typeString":"contract PublicResolverInterface"}},"visibility":"internal"}],"id":5708,"initialValue":{"arguments":[{"id":5706,"name":"publicResolverAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"4749:21:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5705,"name":"PublicResolverInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"4725:23:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PublicResolverInterface_$5182_$","typeString":"type(contract PublicResolverInterface)"}},"id":5707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4725:46:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolverInterface_$5182","typeString":"contract PublicResolverInterface"}},"nodeType":"VariableDeclarationStatement","src":"4684:87:61"},{"expression":{"arguments":[{"id":5711,"name":"nodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5685,"src":"4809:8:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5709,"name":"publicResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5704,"src":"4789:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolverInterface_$5182","typeString":"contract PublicResolverInterface"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4804:4:61","memberName":"addr","nodeType":"MemberAccess","referencedDeclaration":5181,"src":"4789:19:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_payable_$","typeString":"function (bytes32) view external returns (address payable)"}},"id":5712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4789:29:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":5683,"id":5713,"nodeType":"Return","src":"4782:36:61"}]},"documentation":{"id":5679,"nodeType":"StructuredDocumentation","src":"4201:151:61","text":" @notice Uses Space ID to fetch the feed registry address\n @return feedRegistryAddress Address of binance oracle feed registry."},"functionSelector":"99fe040e","id":5715,"implemented":true,"kind":"function","modifiers":[],"name":"getFeedRegistryAddress","nameLocation":"4366:22:61","nodeType":"FunctionDefinition","parameters":{"id":5680,"nodeType":"ParameterList","parameters":[],"src":"4388:2:61"},"returnParameters":{"id":5683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5715,"src":"4412:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5681,"name":"address","nodeType":"ElementaryTypeName","src":"4412:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4411:9:61"},"scope":5902,"src":"4357:468:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5139],"body":{"id":5786,"nodeType":"Block","src":"5044:514:61","statements":[{"assignments":[5724],"declarations":[{"constant":false,"id":5724,"mutability":"mutable","name":"symbol","nameLocation":"5068:6:61","nodeType":"VariableDeclaration","scope":5786,"src":"5054:20:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5723,"name":"string","nodeType":"ElementaryTypeName","src":"5054:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":5725,"nodeType":"VariableDeclarationStatement","src":"5054:20:61"},{"assignments":[5727],"declarations":[{"constant":false,"id":5727,"mutability":"mutable","name":"decimals","nameLocation":"5092:8:61","nodeType":"VariableDeclaration","scope":5786,"src":"5084:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5726,"name":"uint256","nodeType":"ElementaryTypeName","src":"5084:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5728,"nodeType":"VariableDeclarationStatement","src":"5084:16:61"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5729,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"5115:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5730,"name":"BNB_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"5124:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5115:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5760,"nodeType":"Block","src":"5206:147:61","statements":[{"assignments":[5743],"declarations":[{"constant":false,"id":5743,"mutability":"mutable","name":"token","nameLocation":"5235:5:61","nodeType":"VariableDeclaration","scope":5760,"src":"5220:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"},"typeName":{"id":5742,"nodeType":"UserDefinedTypeName","pathNode":{"id":5741,"name":"IERC20Metadata","nameLocations":["5220:14:61"],"nodeType":"IdentifierPath","referencedDeclaration":2930,"src":"5220:14:61"},"referencedDeclaration":2930,"src":"5220:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"id":5747,"initialValue":{"arguments":[{"id":5745,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"5258:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5744,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"5243:14:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5243:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"nodeType":"VariableDeclarationStatement","src":"5220:44:61"},{"expression":{"id":5752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5748,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5278:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5749,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5743,"src":"5287:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5293:6:61","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"5287:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5287:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5278:23:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":5753,"nodeType":"ExpressionStatement","src":"5278:23:61"},{"expression":{"id":5758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5754,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5727,"src":"5315:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5755,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5743,"src":"5326:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":5756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5332:8:61","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"5326:14:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5326:16:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5315:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5759,"nodeType":"ExpressionStatement","src":"5315:27:61"}]},"id":5761,"nodeType":"IfStatement","src":"5111:242:61","trueBody":{"id":5740,"nodeType":"Block","src":"5134:66:61","statements":[{"expression":{"id":5734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5732,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5148:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"424e42","id":5733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5157:5:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_3ed03c38e59dc60c7b69c2a4bf68f9214acd953252b5a90e8f5f59583e9bc3ae","typeString":"literal_string \"BNB\""},"value":"BNB"},"src":"5148:14:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":5735,"nodeType":"ExpressionStatement","src":"5148:14:61"},{"expression":{"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5736,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5727,"src":"5176:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":5737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5187:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5176:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5739,"nodeType":"ExpressionStatement","src":"5176:13:61"}]}},{"assignments":[5763],"declarations":[{"constant":false,"id":5763,"mutability":"mutable","name":"overrideSymbol","nameLocation":"5377:14:61","nodeType":"VariableDeclaration","scope":5786,"src":"5363:28:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5762,"name":"string","nodeType":"ElementaryTypeName","src":"5363:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":5767,"initialValue":{"baseExpression":{"id":5764,"name":"symbols","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"5394:7:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_string_storage_$","typeString":"mapping(string memory => string storage ref)"}},"id":5766,"indexExpression":{"id":5765,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5402:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5394:15:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5363:46:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5770,"name":"overrideSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5763,"src":"5430:14:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5424:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5768,"name":"bytes","nodeType":"ElementaryTypeName","src":"5424:5:61","typeDescriptions":{}}},"id":5771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5424:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5446:6:61","memberName":"length","nodeType":"MemberAccess","src":"5424:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5456:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:33:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5780,"nodeType":"IfStatement","src":"5420:87:61","trueBody":{"id":5779,"nodeType":"Block","src":"5459:48:61","statements":[{"expression":{"id":5777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5775,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5473:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5776,"name":"overrideSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5763,"src":"5482:14:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5473:23:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":5778,"nodeType":"ExpressionStatement","src":"5473:23:61"}]}},{"expression":{"arguments":[{"id":5782,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"5534:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5783,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5727,"src":"5542:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5781,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5901,"src":"5524:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256) view returns (uint256)"}},"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5524:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5722,"id":5785,"nodeType":"Return","src":"5517:34:61"}]},"documentation":{"id":5716,"nodeType":"StructuredDocumentation","src":"4831:145:61","text":" @notice Gets the price of a asset from the binance oracle\n @param asset Address of the asset\n @return Price in USD"},"functionSelector":"41976e09","id":5787,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"4990:8:61","nodeType":"FunctionDefinition","parameters":{"id":5719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5718,"mutability":"mutable","name":"asset","nameLocation":"5007:5:61","nodeType":"VariableDeclaration","scope":5787,"src":"4999:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5717,"name":"address","nodeType":"ElementaryTypeName","src":"4999:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4998:15:61"},"returnParameters":{"id":5722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5787,"src":"5035:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5720,"name":"uint256","nodeType":"ElementaryTypeName","src":"5035:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5034:9:61"},"scope":5902,"src":"4981:577:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":5900,"nodeType":"Block","src":"5655:1062:61","statements":[{"assignments":[5798],"declarations":[{"constant":false,"id":5798,"mutability":"mutable","name":"feedRegistry","nameLocation":"5687:12:61","nodeType":"VariableDeclaration","scope":5900,"src":"5665:34:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"},"typeName":{"id":5797,"nodeType":"UserDefinedTypeName","pathNode":{"id":5796,"name":"FeedRegistryInterface","nameLocations":["5665:21:61"],"nodeType":"IdentifierPath","referencedDeclaration":4916,"src":"5665:21:61"},"referencedDeclaration":4916,"src":"5665:21:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"visibility":"internal"}],"id":5799,"nodeType":"VariableDeclarationStatement","src":"5665:34:61"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5800,"name":"sidRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"5714:18:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5744:1:61","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":5802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5736:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5801,"name":"address","nodeType":"ElementaryTypeName","src":"5736:7:61","typeDescriptions":{}}},"id":5804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5736:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5714:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5820,"nodeType":"Block","src":"5935:162:61","statements":[{"expression":{"id":5818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5814,"name":"feedRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"6029:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5816,"name":"feedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"6066:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5815,"name":"FeedRegistryInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"6044:21:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FeedRegistryInterface_$4916_$","typeString":"type(contract FeedRegistryInterface)"}},"id":5817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6044:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"src":"6029:57:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"id":5819,"nodeType":"ExpressionStatement","src":"6029:57:61"}]},"id":5821,"nodeType":"IfStatement","src":"5710:387:61","trueBody":{"id":5813,"nodeType":"Block","src":"5748:181:61","statements":[{"expression":{"id":5811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5806,"name":"feedRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"5856:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5808,"name":"getFeedRegistryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"5893:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5807,"name":"FeedRegistryInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"5871:21:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FeedRegistryInterface_$4916_$","typeString":"type(contract FeedRegistryInterface)"}},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5871:47:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"src":"5856:62:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"id":5812,"nodeType":"ExpressionStatement","src":"5856:62:61"}]}},{"assignments":[null,5823,null,5825,null],"declarations":[null,{"constant":false,"id":5823,"mutability":"mutable","name":"answer","nameLocation":"6117:6:61","nodeType":"VariableDeclaration","scope":5900,"src":"6110:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5822,"name":"int256","nodeType":"ElementaryTypeName","src":"6110:6:61","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},null,{"constant":false,"id":5825,"mutability":"mutable","name":"updatedAt","nameLocation":"6135:9:61","nodeType":"VariableDeclaration","scope":5900,"src":"6127:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5824,"name":"uint256","nodeType":"ElementaryTypeName","src":"6127:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":5831,"initialValue":{"arguments":[{"id":5828,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"6185:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"555344","id":5829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6193:5:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""},"value":"USD"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""}],"expression":{"id":5826,"name":"feedRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"6150:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"id":5827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6163:21:61","memberName":"latestRoundDataByName","nodeType":"MemberAccess","referencedDeclaration":4906,"src":"6150:34:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function (string memory,string memory) view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6150:49:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"6107:92:61"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5832,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5823,"src":"6213:6:61","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":5833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6223:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6213:11:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5839,"nodeType":"IfStatement","src":"6209:55:61","trueBody":{"expression":{"arguments":[{"hexValue":"696e76616c69642062696e616e6365206f7261636c65207072696365","id":5836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6233:30:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ac98dfac2fb4e9eb227df693ff1e80e79e615b6ddb871245285aee2dad7923e","typeString":"literal_string \"invalid binance oracle price\""},"value":"invalid binance oracle price"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5ac98dfac2fb4e9eb227df693ff1e80e79e615b6ddb871245285aee2dad7923e","typeString":"literal_string \"invalid binance oracle price\""}],"id":5835,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6226:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5838,"nodeType":"ExpressionStatement","src":"6226:38:61"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5840,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6278:5:61","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6284:9:61","memberName":"timestamp","nodeType":"MemberAccess","src":"6278:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5842,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"6296:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6278:27:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5848,"nodeType":"IfStatement","src":"6274:71:61","trueBody":{"expression":{"arguments":[{"hexValue":"757064617465644174206578636565647320626c6f636b2074696d65","id":5845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6314:30:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_76ddd7b80d9c82eb38af9166e15d7ff6eb106bb126c2a0aefbdc4e2a1ecf1d3e","typeString":"literal_string \"updatedAt exceeds block time\""},"value":"updatedAt exceeds block time"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76ddd7b80d9c82eb38af9166e15d7ff6eb106bb126c2a0aefbdc4e2a1ecf1d3e","typeString":"literal_string \"updatedAt exceeds block time\""}],"id":5844,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6307:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6307:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5847,"nodeType":"ExpressionStatement","src":"6307:38:61"}},{"assignments":[5850],"declarations":[{"constant":false,"id":5850,"mutability":"mutable","name":"deltaTime","nameLocation":"6364:9:61","nodeType":"VariableDeclaration","scope":5900,"src":"6356:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5849,"name":"uint256","nodeType":"ElementaryTypeName","src":"6356:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5851,"nodeType":"VariableDeclarationStatement","src":"6356:17:61"},{"id":5859,"nodeType":"UncheckedBlock","src":"6383:74:61","statements":[{"expression":{"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5852,"name":"deltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"6407:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5853,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6419:5:61","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6425:9:61","memberName":"timestamp","nodeType":"MemberAccess","src":"6419:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5855,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"6437:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6419:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6407:39:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5858,"nodeType":"ExpressionStatement","src":"6407:39:61"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5860,"name":"deltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"6470:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":5861,"name":"maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5492,"src":"6482:14:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":5863,"indexExpression":{"id":5862,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"6497:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6482:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6470:34:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5869,"nodeType":"IfStatement","src":"6466:78:61","trueBody":{"expression":{"arguments":[{"hexValue":"62696e616e6365206f7261636c652070726963652065787069726564","id":5866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6513:30:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_111b234455a639a60260a9c3f9313f9d90634c76cd51b850e6561ebdec9ae3d1","typeString":"literal_string \"binance oracle price expired\""},"value":"binance oracle price expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_111b234455a639a60260a9c3f9313f9d90634c76cd51b850e6561ebdec9ae3d1","typeString":"literal_string \"binance oracle price expired\""}],"id":5865,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6506:6:61","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6506:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5868,"nodeType":"ExpressionStatement","src":"6506:38:61"}},{"assignments":[5871],"declarations":[{"constant":false,"id":5871,"mutability":"mutable","name":"decimalDelta","nameLocation":"6563:12:61","nodeType":"VariableDeclaration","scope":5900,"src":"6555:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5870,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5877,"initialValue":{"arguments":[{"id":5874,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"6606:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"555344","id":5875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6614:5:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""},"value":"USD"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""}],"expression":{"id":5872,"name":"feedRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"6578:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_FeedRegistryInterface_$4916","typeString":"contract FeedRegistryInterface"}},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6591:14:61","memberName":"decimalsByName","nodeType":"MemberAccess","referencedDeclaration":4915,"src":"6578:27:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_uint8_$","typeString":"function (string memory,string memory) view external returns (uint8)"}},"id":5876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6578:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6555:65:61"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5880,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5823,"src":"6646:6:61","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6638:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5878,"name":"uint256","nodeType":"ElementaryTypeName","src":"6638:7:61","typeDescriptions":{}}},"id":5881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6638:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6657:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":5883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6664:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5884,"name":"decimalDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"6669:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6664:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5886,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6663:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6657:25:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6656:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6638:45:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6637:47:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6688:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":5892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6695:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5893,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"6700:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6695:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6694:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6688:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5897,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6687:23:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6637:73:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5795,"id":5899,"nodeType":"Return","src":"6630:80:61"}]},"id":5901,"implemented":true,"kind":"function","modifiers":[],"name":"_getPrice","nameLocation":"5573:9:61","nodeType":"FunctionDefinition","parameters":{"id":5792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5789,"mutability":"mutable","name":"symbol","nameLocation":"5597:6:61","nodeType":"VariableDeclaration","scope":5901,"src":"5583:20:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5788,"name":"string","nodeType":"ElementaryTypeName","src":"5583:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5791,"mutability":"mutable","name":"decimals","nameLocation":"5613:8:61","nodeType":"VariableDeclaration","scope":5901,"src":"5605:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5790,"name":"uint256","nodeType":"ElementaryTypeName","src":"5605:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5582:40:61"},"returnParameters":{"id":5795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5901,"src":"5646:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5793,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:9:61"},"scope":5902,"src":"5564:1153:61","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5903,"src":"626:6093:61","usedErrors":[3435],"usedEvents":[120,227,357,3426,5507,5514,5521]}],"src":"41:6679:61"}},"contracts/oracles/BoundValidator.sol":{"id":62,"ast":{"absolutePath":"contracts/oracles/BoundValidator.sol","exportedSymbols":{"AccessControlledV8":[3554],"AddressUpgradeable":[969],"BoundValidator":[6156],"BoundValidatorInterface":[5172],"ContextUpgradeable":[1020],"IAccessControl":[1093],"IAccessControlManagerV8":[3599],"IERC20":[2905],"IERC20Metadata":[2930],"Initializable":[511],"OracleInterface":[5140],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342],"ResilientOracleInterface":[5160],"VBep20Interface":[5204]},"id":6157,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5904,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:62"},{"absolutePath":"contracts/interfaces/VBep20Interface.sol","file":"../interfaces/VBep20Interface.sol","id":5905,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6157,"sourceUnit":5205,"src":"66:43:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":5906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6157,"sourceUnit":5173,"src":"110:43:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":5907,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6157,"sourceUnit":3555,"src":"154:89:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5909,"name":"AccessControlledV8","nameLocations":["583:18:62"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"583:18:62"},"id":5910,"nodeType":"InheritanceSpecifier","src":"583:18:62"},{"baseName":{"id":5911,"name":"BoundValidatorInterface","nameLocations":["603:23:62"],"nodeType":"IdentifierPath","referencedDeclaration":5172,"src":"603:23:62"},"id":5912,"nodeType":"InheritanceSpecifier","src":"603:23:62"}],"canonicalName":"BoundValidator","contractDependencies":[],"contractKind":"contract","documentation":{"id":5908,"nodeType":"StructuredDocumentation","src":"245:310:62","text":" @title BoundValidator\n @author Venus\n @notice The BoundValidator contract is used to validate prices fetched from two different sources.\n Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid\n it must fall within this range of the validator price."},"fullyImplemented":true,"id":6156,"linearizedBaseContracts":[6156,5172,3554,209,342,1020,511],"name":"BoundValidator","nameLocation":"565:14:62","nodeType":"ContractDefinition","nodes":[{"canonicalName":"BoundValidator.ValidateConfig","id":5922,"members":[{"constant":false,"id":5915,"mutability":"mutable","name":"asset","nameLocation":"707:5:62","nodeType":"VariableDeclaration","scope":5922,"src":"699:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5914,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5918,"mutability":"mutable","name":"upperBoundRatio","nameLocation":"880:15:62","nodeType":"VariableDeclaration","scope":5922,"src":"872:23:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5917,"name":"uint256","nodeType":"ElementaryTypeName","src":"872:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5921,"mutability":"mutable","name":"lowerBoundRatio","nameLocation":"1062:15:62","nodeType":"VariableDeclaration","scope":5922,"src":"1054:23:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5920,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidateConfig","nameLocation":"640:14:62","nodeType":"StructDefinition","scope":6156,"src":"633:451:62","visibility":"public"},{"constant":false,"documentation":{"id":5923,"nodeType":"StructuredDocumentation","src":"1090:39:62","text":"@notice validation configs by asset"},"functionSelector":"bca9e116","id":5928,"mutability":"mutable","name":"validateConfigs","nameLocation":"1176:15:62","nodeType":"VariableDeclaration","scope":6156,"src":"1134:57:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig)"},"typeName":{"id":5927,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":5924,"name":"address","nodeType":"ElementaryTypeName","src":"1142:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1134:34:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5926,"nodeType":"UserDefinedTypeName","pathNode":{"id":5925,"name":"ValidateConfig","nameLocations":["1153:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":5922,"src":"1153:14:62"},"referencedDeclaration":5922,"src":"1153:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage_ptr","typeString":"struct BoundValidator.ValidateConfig"}}},"visibility":"public"},{"anonymous":false,"documentation":{"id":5929,"nodeType":"StructuredDocumentation","src":"1198:65:62","text":"@notice Emit this event when new validation configs are added"},"eventSelector":"28e2d96bdcf74fe6203e40d159d27ec2e15230239c0aee4a0a914196c550e6d1","id":5937,"name":"ValidateConfigAdded","nameLocation":"1274:19:62","nodeType":"EventDefinition","parameters":{"id":5936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5931,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"1310:5:62","nodeType":"VariableDeclaration","scope":5937,"src":"1294:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5930,"name":"address","nodeType":"ElementaryTypeName","src":"1294:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5933,"indexed":true,"mutability":"mutable","name":"upperBound","nameLocation":"1333:10:62","nodeType":"VariableDeclaration","scope":5937,"src":"1317:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5932,"name":"uint256","nodeType":"ElementaryTypeName","src":"1317:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5935,"indexed":true,"mutability":"mutable","name":"lowerBound","nameLocation":"1361:10:62","nodeType":"VariableDeclaration","scope":5937,"src":"1345:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1345:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1293:79:62"},"src":"1268:105:62"},{"body":{"id":5944,"nodeType":"Block","src":"1533:39:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5941,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"1543:20:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1543:22:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5943,"nodeType":"ExpressionStatement","src":"1543:22:62"}]},"documentation":{"id":5938,"nodeType":"StructuredDocumentation","src":"1379:135:62","text":"@notice Constructor for the implementation contract. Sets immutable variables.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":5945,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5939,"nodeType":"ParameterList","parameters":[],"src":"1530:2:62"},"returnParameters":{"id":5940,"nodeType":"ParameterList","parameters":[],"src":"1533:0:62"},"scope":6156,"src":"1519:53:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5957,"nodeType":"Block","src":"1802:63:62","statements":[{"expression":{"arguments":[{"id":5954,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"1836:21:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5953,"name":"__AccessControlled_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"1812:23:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1812:46:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5956,"nodeType":"ExpressionStatement","src":"1812:46:62"}]},"documentation":{"id":5946,"nodeType":"StructuredDocumentation","src":"1578:147:62","text":" @notice Initializes the owner of the contract\n @param accessControlManager_ Address of the access control manager contract"},"functionSelector":"c4d66de8","id":5958,"implemented":true,"kind":"function","modifiers":[{"id":5951,"kind":"modifierInvocation","modifierName":{"id":5950,"name":"initializer","nameLocations":["1790:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"1790:11:62"},"nodeType":"ModifierInvocation","src":"1790:11:62"}],"name":"initialize","nameLocation":"1739:10:62","nodeType":"FunctionDefinition","parameters":{"id":5949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5948,"mutability":"mutable","name":"accessControlManager_","nameLocation":"1758:21:62","nodeType":"VariableDeclaration","scope":5958,"src":"1750:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5947,"name":"address","nodeType":"ElementaryTypeName","src":"1750:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1749:31:62"},"returnParameters":{"id":5952,"nodeType":"ParameterList","parameters":[],"src":"1802:0:62"},"scope":6156,"src":"1730:135:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":5996,"nodeType":"Block","src":"2292:211:62","statements":[{"assignments":[5967],"declarations":[{"constant":false,"id":5967,"mutability":"mutable","name":"length","nameLocation":"2310:6:62","nodeType":"VariableDeclaration","scope":5996,"src":"2302:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2302:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5970,"initialValue":{"expression":{"id":5968,"name":"configs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"2319:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidateConfig_$5922_memory_ptr_$dyn_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory[] memory"}},"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2327:6:62","memberName":"length","nodeType":"MemberAccess","src":"2319:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2302:31:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5971,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"2347:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2357:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2347:11:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5978,"nodeType":"IfStatement","src":"2343:57:62","trueBody":{"expression":{"arguments":[{"hexValue":"696e76616c69642076616c696461746520636f6e666967206c656e677468","id":5975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2367:32:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_c03fba22eee7e51876c3a894e36f6708c74bd6a3a3af5084727bbc629c8922fc","typeString":"literal_string \"invalid validate config length\""},"value":"invalid validate config length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c03fba22eee7e51876c3a894e36f6708c74bd6a3a3af5084727bbc629c8922fc","typeString":"literal_string \"invalid validate config length\""}],"id":5974,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2360:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2360:40:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5977,"nodeType":"ExpressionStatement","src":"2360:40:62"}},{"body":{"id":5994,"nodeType":"Block","src":"2443:54:62","statements":[{"expression":{"arguments":[{"baseExpression":{"id":5989,"name":"configs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"2475:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidateConfig_$5922_memory_ptr_$dyn_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory[] memory"}},"id":5991,"indexExpression":{"id":5990,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5980,"src":"2483:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2475:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}],"id":5988,"name":"setValidateConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2457:17:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_ValidateConfig_$5922_memory_ptr_$returns$__$","typeString":"function (struct BoundValidator.ValidateConfig memory)"}},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2457:29:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5993,"nodeType":"ExpressionStatement","src":"2457:29:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5982,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5980,"src":"2426:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5983,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"2430:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2426:10:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5995,"initializationExpression":{"assignments":[5980],"declarations":[{"constant":false,"id":5980,"mutability":"mutable","name":"i","nameLocation":"2423:1:62","nodeType":"VariableDeclaration","scope":5995,"src":"2415:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5979,"name":"uint256","nodeType":"ElementaryTypeName","src":"2415:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5981,"nodeType":"VariableDeclarationStatement","src":"2415:9:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2438:3:62","subExpression":{"id":5985,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5980,"src":"2440:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5987,"nodeType":"ExpressionStatement","src":"2438:3:62"},"nodeType":"ForStatement","src":"2410:87:62"}]},"documentation":{"id":5959,"nodeType":"StructuredDocumentation","src":"1871:346:62","text":" @notice Add multiple validation configs at the same time\n @param configs Array of validation configs\n @custom:access Only Governance\n @custom:error Zero length error is thrown if length of the config array is 0\n @custom:event Emits ValidateConfigAdded for each validation config that is successfully set"},"functionSelector":"9c357615","id":5997,"implemented":true,"kind":"function","modifiers":[],"name":"setValidateConfigs","nameLocation":"2231:18:62","nodeType":"FunctionDefinition","parameters":{"id":5964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5963,"mutability":"mutable","name":"configs","nameLocation":"2274:7:62","nodeType":"VariableDeclaration","scope":5997,"src":"2250:31:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidateConfig_$5922_memory_ptr_$dyn_memory_ptr","typeString":"struct BoundValidator.ValidateConfig[]"},"typeName":{"baseType":{"id":5961,"nodeType":"UserDefinedTypeName","pathNode":{"id":5960,"name":"ValidateConfig","nameLocations":["2250:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":5922,"src":"2250:14:62"},"referencedDeclaration":5922,"src":"2250:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage_ptr","typeString":"struct BoundValidator.ValidateConfig"}},"id":5962,"nodeType":"ArrayTypeName","src":"2250:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidateConfig_$5922_storage_$dyn_storage_ptr","typeString":"struct BoundValidator.ValidateConfig[]"}},"visibility":"internal"}],"src":"2249:33:62"},"returnParameters":{"id":5965,"nodeType":"ParameterList","parameters":[],"src":"2292:0:62"},"scope":6156,"src":"2222:281:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6060,"nodeType":"Block","src":"3052:521:62","statements":[{"expression":{"arguments":[{"hexValue":"73657456616c6964617465436f6e6669672856616c6964617465436f6e66696729","id":6005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3082:35:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_2008091d9013432264f9f40c0930f2951e4e98cc9e9422af2739dc5f160ff84a","typeString":"literal_string \"setValidateConfig(ValidateConfig)\""},"value":"setValidateConfig(ValidateConfig)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2008091d9013432264f9f40c0930f2951e4e98cc9e9422af2739dc5f160ff84a","typeString":"literal_string \"setValidateConfig(ValidateConfig)\""}],"id":6004,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"3062:19:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":6006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3062:56:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6007,"nodeType":"ExpressionStatement","src":"3062:56:62"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6008,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3133:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3140:5:62","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"3133:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3157:1:62","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":6011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3149:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6010,"name":"address","nodeType":"ElementaryTypeName","src":"3149:7:62","typeDescriptions":{}}},"id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3149:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3133:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6019,"nodeType":"IfStatement","src":"3129:69:62","trueBody":{"expression":{"arguments":[{"hexValue":"61737365742063616e2774206265207a65726f2061646472657373","id":6016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3168:29:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c5f0450c53b88a656123b18ee9b93f4f4d8e2b639d4e86c6da9204681d30937","typeString":"literal_string \"asset can't be zero address\""},"value":"asset can't be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c5f0450c53b88a656123b18ee9b93f4f4d8e2b639d4e86c6da9204681d30937","typeString":"literal_string \"asset can't be zero address\""}],"id":6015,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3161:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3161:37:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6018,"nodeType":"ExpressionStatement","src":"3161:37:62"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6020,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3212:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3219:15:62","memberName":"upperBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5918,"src":"3212:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3212:27:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6024,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3243:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3250:15:62","memberName":"lowerBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5921,"src":"3243:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3269:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3243:27:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3212:58:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6033,"nodeType":"IfStatement","src":"3208:96:62","trueBody":{"expression":{"arguments":[{"hexValue":"626f756e64206d75737420626520706f736974697665","id":6030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3279:24:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_aea82b5f533f743db7c0237abc4bbca8691ea978546cc36241a11981442ae98c","typeString":"literal_string \"bound must be positive\""},"value":"bound must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_aea82b5f533f743db7c0237abc4bbca8691ea978546cc36241a11981442ae98c","typeString":"literal_string \"bound must be positive\""}],"id":6029,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3272:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6032,"nodeType":"ExpressionStatement","src":"3272:32:62"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6034,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3318:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3325:15:62","memberName":"upperBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5918,"src":"3318:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":6036,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3344:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3351:15:62","memberName":"lowerBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5921,"src":"3344:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3318:48:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6043,"nodeType":"IfStatement","src":"3314:108:62","trueBody":{"expression":{"arguments":[{"hexValue":"757070657220626f756e64206d75737420626520686967686572207468616e206c6f776e657220626f756e64","id":6040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3375:46:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_821f6fe634e44130541ed0fdd532e8b2f7e5d974cb597d72c45b0a6318d07d4a","typeString":"literal_string \"upper bound must be higher than lowner bound\""},"value":"upper bound must be higher than lowner bound"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_821f6fe634e44130541ed0fdd532e8b2f7e5d974cb597d72c45b0a6318d07d4a","typeString":"literal_string \"upper bound must be higher than lowner bound\""}],"id":6039,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3368:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3368:54:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6042,"nodeType":"ExpressionStatement","src":"3368:54:62"}},{"expression":{"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6044,"name":"validateConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"3432:15:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig storage ref)"}},"id":6047,"indexExpression":{"expression":{"id":6045,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3448:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3455:5:62","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"3448:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3432:29:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage","typeString":"struct BoundValidator.ValidateConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6048,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3464:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"src":"3432:38:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage","typeString":"struct BoundValidator.ValidateConfig storage ref"}},"id":6050,"nodeType":"ExpressionStatement","src":"3432:38:62"},{"eventCall":{"arguments":[{"expression":{"id":6052,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3505:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3512:5:62","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"3505:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6054,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3519:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3526:15:62","memberName":"upperBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5918,"src":"3519:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6056,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"3543:6:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig memory"}},"id":6057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3550:15:62","memberName":"lowerBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5921,"src":"3543:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6051,"name":"ValidateConfigAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"3485:19:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":6058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3485:81:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6059,"nodeType":"EmitStatement","src":"3480:86:62"}]},"documentation":{"id":5998,"nodeType":"StructuredDocumentation","src":"2509:474:62","text":" @notice Add a single validation config\n @param config Validation config struct\n @custom:access Only Governance\n @custom:error Null address error is thrown if asset address is null\n @custom:error Range error thrown if bound ratio is not positive\n @custom:error Range error thrown if lower bound is greater than or equal to upper bound\n @custom:event Emits ValidateConfigAdded when a validation config is successfully set"},"functionSelector":"af9e6c5b","id":6061,"implemented":true,"kind":"function","modifiers":[],"name":"setValidateConfig","nameLocation":"2997:17:62","nodeType":"FunctionDefinition","parameters":{"id":6002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6001,"mutability":"mutable","name":"config","nameLocation":"3037:6:62","nodeType":"VariableDeclaration","scope":6061,"src":"3015:28:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_memory_ptr","typeString":"struct BoundValidator.ValidateConfig"},"typeName":{"id":6000,"nodeType":"UserDefinedTypeName","pathNode":{"id":5999,"name":"ValidateConfig","nameLocations":["3015:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":5922,"src":"3015:14:62"},"referencedDeclaration":5922,"src":"3015:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage_ptr","typeString":"struct BoundValidator.ValidateConfig"}},"visibility":"internal"}],"src":"3014:30:62"},"returnParameters":{"id":6003,"nodeType":"ParameterList","parameters":[],"src":"3052:0:62"},"scope":6156,"src":"2988:585:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5171],"body":{"id":6099,"nodeType":"Block","src":"4051:237:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":6074,"name":"validateConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"4065:15:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig storage ref)"}},"id":6076,"indexExpression":{"id":6075,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6064,"src":"4081:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4065:22:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage","typeString":"struct BoundValidator.ValidateConfig storage ref"}},"id":6077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4088:15:62","memberName":"upperBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5918,"src":"4065:38:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4107:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4065:43:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6084,"nodeType":"IfStatement","src":"4061:86:62","trueBody":{"expression":{"arguments":[{"hexValue":"76616c69646174696f6e20636f6e666967206e6f74206578697374","id":6081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4117:29:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1d3bc0ff181cca91e9a6d034b34420adb010a470ad157bd0c01a59ebf97eed9","typeString":"literal_string \"validation config not exist\""},"value":"validation config not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d1d3bc0ff181cca91e9a6d034b34420adb010a470ad157bd0c01a59ebf97eed9","typeString":"literal_string \"validation config not exist\""}],"id":6080,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4110:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:37:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6083,"nodeType":"ExpressionStatement","src":"4110:37:62"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6085,"name":"anchorPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"4161:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4176:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4161:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6092,"nodeType":"IfStatement","src":"4157:57:62","trueBody":{"expression":{"arguments":[{"hexValue":"616e63686f72207072696365206973206e6f742076616c6964","id":6089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4186:27:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a8ed154f0d39999f8231a825f55ac494deca025e5c8416f19f47574cdf453d3","typeString":"literal_string \"anchor price is not valid\""},"value":"anchor price is not valid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6a8ed154f0d39999f8231a825f55ac494deca025e5c8416f19f47574cdf453d3","typeString":"literal_string \"anchor price is not valid\""}],"id":6088,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4179:6:62","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4179:35:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6091,"nodeType":"ExpressionStatement","src":"4179:35:62"}},{"expression":{"arguments":[{"id":6094,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6064,"src":"4247:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6095,"name":"reportedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"4254:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6096,"name":"anchorPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"4269:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6093,"name":"_isWithinAnchor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6151,"src":"4231:15:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:50:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6073,"id":6098,"nodeType":"Return","src":"4224:57:62"}]},"documentation":{"id":6062,"nodeType":"StructuredDocumentation","src":"3579:296:62","text":" @notice Test reported asset price against anchor price\n @param asset asset address\n @param reportedPrice The price to be tested\n @custom:error Missing error thrown if asset config is not set\n @custom:error Price error thrown if anchor price is not valid"},"functionSelector":"97c7033e","id":6100,"implemented":true,"kind":"function","modifiers":[],"name":"validatePriceWithAnchorPrice","nameLocation":"3889:28:62","nodeType":"FunctionDefinition","overrides":{"id":6070,"nodeType":"OverrideSpecifier","overrides":[],"src":"4027:8:62"},"parameters":{"id":6069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6064,"mutability":"mutable","name":"asset","nameLocation":"3935:5:62","nodeType":"VariableDeclaration","scope":6100,"src":"3927:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6063,"name":"address","nodeType":"ElementaryTypeName","src":"3927:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6066,"mutability":"mutable","name":"reportedPrice","nameLocation":"3958:13:62","nodeType":"VariableDeclaration","scope":6100,"src":"3950:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6065,"name":"uint256","nodeType":"ElementaryTypeName","src":"3950:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6068,"mutability":"mutable","name":"anchorPrice","nameLocation":"3989:11:62","nodeType":"VariableDeclaration","scope":6100,"src":"3981:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6067,"name":"uint256","nodeType":"ElementaryTypeName","src":"3981:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3917:89:62"},"returnParameters":{"id":6073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6100,"src":"4045:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6071,"name":"bool","nodeType":"ElementaryTypeName","src":"4045:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4044:6:62"},"scope":6156,"src":"3880:408:62","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6150,"nodeType":"Block","src":"4676:495:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6112,"name":"reportedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"4690:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4707:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4690:18:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6147,"nodeType":"IfStatement","src":"4686:457:62","trueBody":{"id":6146,"nodeType":"Block","src":"4710:433:62","statements":[{"assignments":[6116],"declarations":[{"constant":false,"id":6116,"mutability":"mutable","name":"anchorRatio","nameLocation":"4817:11:62","nodeType":"VariableDeclaration","scope":6146,"src":"4809:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6115,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6123,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6117,"name":"anchorPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6107,"src":"4832:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":6118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4846:4:62","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4832:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6120,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4831:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6121,"name":"reportedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"4854:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4831:36:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4809:58:62"},{"assignments":[6125],"declarations":[{"constant":false,"id":6125,"mutability":"mutable","name":"upperBoundAnchorRatio","nameLocation":"4889:21:62","nodeType":"VariableDeclaration","scope":6146,"src":"4881:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6124,"name":"uint256","nodeType":"ElementaryTypeName","src":"4881:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6130,"initialValue":{"expression":{"baseExpression":{"id":6126,"name":"validateConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"4913:15:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig storage ref)"}},"id":6128,"indexExpression":{"id":6127,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"4929:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4913:22:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage","typeString":"struct BoundValidator.ValidateConfig storage ref"}},"id":6129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4936:15:62","memberName":"upperBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5918,"src":"4913:38:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4881:70:62"},{"assignments":[6132],"declarations":[{"constant":false,"id":6132,"mutability":"mutable","name":"lowerBoundAnchorRatio","nameLocation":"4973:21:62","nodeType":"VariableDeclaration","scope":6146,"src":"4965:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6131,"name":"uint256","nodeType":"ElementaryTypeName","src":"4965:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6137,"initialValue":{"expression":{"baseExpression":{"id":6133,"name":"validateConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"4997:15:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ValidateConfig_$5922_storage_$","typeString":"mapping(address => struct BoundValidator.ValidateConfig storage ref)"}},"id":6135,"indexExpression":{"id":6134,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"5013:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4997:22:62","typeDescriptions":{"typeIdentifier":"t_struct$_ValidateConfig_$5922_storage","typeString":"struct BoundValidator.ValidateConfig storage ref"}},"id":6136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:15:62","memberName":"lowerBoundRatio","nodeType":"MemberAccess","referencedDeclaration":5921,"src":"4997:38:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4965:70:62"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6138,"name":"anchorRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6116,"src":"5056:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6139,"name":"upperBoundAnchorRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"5071:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5056:36:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6141,"name":"anchorRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6116,"src":"5096:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6142,"name":"lowerBoundAnchorRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6132,"src":"5111:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5096:36:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5056:76:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6111,"id":6145,"nodeType":"Return","src":"5049:83:62"}]}},{"expression":{"hexValue":"66616c7365","id":6148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5159:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6111,"id":6149,"nodeType":"Return","src":"5152:12:62"}]},"documentation":{"id":6101,"nodeType":"StructuredDocumentation","src":"4294:265:62","text":" @notice Test whether the reported price is within the valid bounds\n @param asset Asset address\n @param reportedPrice The price to be tested\n @param anchorPrice The reported price must be within the the valid bounds of this price"},"id":6151,"implemented":true,"kind":"function","modifiers":[],"name":"_isWithinAnchor","nameLocation":"4573:15:62","nodeType":"FunctionDefinition","parameters":{"id":6108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6103,"mutability":"mutable","name":"asset","nameLocation":"4597:5:62","nodeType":"VariableDeclaration","scope":6151,"src":"4589:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6102,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6105,"mutability":"mutable","name":"reportedPrice","nameLocation":"4612:13:62","nodeType":"VariableDeclaration","scope":6151,"src":"4604:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6104,"name":"uint256","nodeType":"ElementaryTypeName","src":"4604:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6107,"mutability":"mutable","name":"anchorPrice","nameLocation":"4635:11:62","nodeType":"VariableDeclaration","scope":6151,"src":"4627:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6106,"name":"uint256","nodeType":"ElementaryTypeName","src":"4627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4588:59:62"},"returnParameters":{"id":6111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6151,"src":"4670:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6109,"name":"bool","nodeType":"ElementaryTypeName","src":"4670:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4669:6:62"},"scope":6156,"src":"4564:607:62","stateMutability":"view","virtual":false,"visibility":"private"},{"constant":false,"id":6155,"mutability":"mutable","name":"__gap","nameLocation":"5444:5:62","nodeType":"VariableDeclaration","scope":6156,"src":"5424:25:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":6152,"name":"uint256","nodeType":"ElementaryTypeName","src":"5424:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6154,"length":{"hexValue":"3439","id":6153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5432:2:62","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"5424:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":6157,"src":"556:4896:62","usedErrors":[3435],"usedEvents":[120,227,357,3426,5937]}],"src":"41:5412:62"}},"contracts/oracles/ChainlinkOracle.sol":{"id":63,"ast":{"absolutePath":"contracts/oracles/ChainlinkOracle.sol","exportedSymbols":{"AccessControlledV8":[3554],"AddressUpgradeable":[969],"AggregatorV3Interface":[102],"BoundValidatorInterface":[5172],"ChainlinkOracle":[6551],"ContextUpgradeable":[1020],"IAccessControl":[1093],"IAccessControlManagerV8":[3599],"IERC20":[2905],"IERC20Metadata":[2930],"Initializable":[511],"OracleInterface":[5140],"Ownable2StepUpgradeable":[209],"OwnableUpgradeable":[342],"ResilientOracleInterface":[5160],"VBep20Interface":[5204]},"id":6552,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":6158,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:63"},{"absolutePath":"contracts/interfaces/VBep20Interface.sol","file":"../interfaces/VBep20Interface.sol","id":6159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6552,"sourceUnit":5205,"src":"66:43:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":6160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6552,"sourceUnit":5173,"src":"110:43:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","file":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","id":6161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6552,"sourceUnit":103,"src":"154:76:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":6162,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6552,"sourceUnit":3555,"src":"231:89:63","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6164,"name":"AccessControlledV8","nameLocations":["476:18:63"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"476:18:63"},"id":6165,"nodeType":"InheritanceSpecifier","src":"476:18:63"},{"baseName":{"id":6166,"name":"OracleInterface","nameLocations":["496:15:63"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"496:15:63"},"id":6167,"nodeType":"InheritanceSpecifier","src":"496:15:63"}],"canonicalName":"ChainlinkOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":6163,"nodeType":"StructuredDocumentation","src":"322:125:63","text":" @title ChainlinkOracle\n @author Venus\n @notice This oracle fetches prices of assets from the Chainlink oracle."},"fullyImplemented":true,"id":6551,"linearizedBaseContracts":[6551,5140,3554,209,342,1020,511],"name":"ChainlinkOracle","nameLocation":"457:15:63","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ChainlinkOracle.TokenConfig","id":6177,"members":[{"constant":false,"id":6170,"mutability":"mutable","name":"asset","nameLocation":"848:5:63","nodeType":"VariableDeclaration","scope":6177,"src":"840:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6169,"name":"address","nodeType":"ElementaryTypeName","src":"840:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6173,"mutability":"mutable","name":"feed","nameLocation":"914:4:63","nodeType":"VariableDeclaration","scope":6177,"src":"906:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6172,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6176,"mutability":"mutable","name":"maxStalePeriod","nameLocation":"994:14:63","nodeType":"VariableDeclaration","scope":6177,"src":"986:22:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6175,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TokenConfig","nameLocation":"525:11:63","nodeType":"StructDefinition","scope":6551,"src":"518:497:63","visibility":"public"},{"constant":true,"documentation":{"id":6178,"nodeType":"StructuredDocumentation","src":"1021:187:63","text":"@notice Set this as asset address for native token on each chain.\n This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain."},"functionSelector":"a9534f8a","id":6181,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"1237:17:63","nodeType":"VariableDeclaration","scope":6551,"src":"1213:86:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6179,"name":"address","nodeType":"ElementaryTypeName","src":"1213:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":6180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1257:42:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":false,"documentation":{"id":6182,"nodeType":"StructuredDocumentation","src":"1306:106:63","text":"@notice Manually set an override price, useful under extenuating conditions such as price feed failure"},"functionSelector":"cfed246b","id":6186,"mutability":"mutable","name":"prices","nameLocation":"1452:6:63","nodeType":"VariableDeclaration","scope":6551,"src":"1417:41:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6185,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6183,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1417:27:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1436:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"documentation":{"id":6187,"nodeType":"StructuredDocumentation","src":"1465:34:63","text":"@notice Token config by assets"},"functionSelector":"1b69dc5f","id":6192,"mutability":"mutable","name":"tokenConfigs","nameLocation":"1543:12:63","nodeType":"VariableDeclaration","scope":6551,"src":"1504:51:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$6177_storage_$","typeString":"mapping(address => struct ChainlinkOracle.TokenConfig)"},"typeName":{"id":6191,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6188,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1504:31:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$6177_storage_$","typeString":"mapping(address => struct ChainlinkOracle.TokenConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6190,"nodeType":"UserDefinedTypeName","pathNode":{"id":6189,"name":"TokenConfig","nameLocations":["1523:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":6177,"src":"1523:11:63"},"referencedDeclaration":6177,"src":"1523:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage_ptr","typeString":"struct ChainlinkOracle.TokenConfig"}}},"visibility":"public"},{"anonymous":false,"documentation":{"id":6193,"nodeType":"StructuredDocumentation","src":"1562:45:63","text":"@notice Emit when a price is manually set"},"eventSelector":"a0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee","id":6201,"name":"PricePosted","nameLocation":"1618:11:63","nodeType":"EventDefinition","parameters":{"id":6200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6195,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"1646:5:63","nodeType":"VariableDeclaration","scope":6201,"src":"1630:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6194,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6197,"indexed":false,"mutability":"mutable","name":"previousPriceMantissa","nameLocation":"1661:21:63","nodeType":"VariableDeclaration","scope":6201,"src":"1653:29:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1653:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6199,"indexed":false,"mutability":"mutable","name":"newPriceMantissa","nameLocation":"1692:16:63","nodeType":"VariableDeclaration","scope":6201,"src":"1684:24:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1629:80:63"},"src":"1612:98:63"},{"anonymous":false,"documentation":{"id":6202,"nodeType":"StructuredDocumentation","src":"1716:45:63","text":"@notice Emit when a token config is added"},"eventSelector":"3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f","id":6210,"name":"TokenConfigAdded","nameLocation":"1772:16:63","nodeType":"EventDefinition","parameters":{"id":6209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6204,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"1805:5:63","nodeType":"VariableDeclaration","scope":6210,"src":"1789:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6203,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6206,"indexed":false,"mutability":"mutable","name":"feed","nameLocation":"1820:4:63","nodeType":"VariableDeclaration","scope":6210,"src":"1812:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6205,"name":"address","nodeType":"ElementaryTypeName","src":"1812:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6208,"indexed":false,"mutability":"mutable","name":"maxStalePeriod","nameLocation":"1834:14:63","nodeType":"VariableDeclaration","scope":6210,"src":"1826:22:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1788:61:63"},"src":"1766:84:63"},{"body":{"id":6226,"nodeType":"Block","src":"1897:86:63","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6214,"name":"someone","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"1911:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:63","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":6216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1922:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6215,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:63","typeDescriptions":{}}},"id":6218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:10:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1911:21:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6224,"nodeType":"IfStatement","src":"1907:58:63","trueBody":{"expression":{"arguments":[{"hexValue":"63616e2774206265207a65726f2061646472657373","id":6221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1941:23:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""},"value":"can't be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4793c2d6e615a200d995dd9ad0db45f00df0789bc148a42df7526d2509d0f296","typeString":"literal_string \"can't be zero address\""}],"id":6220,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1934:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1934:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6223,"nodeType":"ExpressionStatement","src":"1934:31:63"}},{"id":6225,"nodeType":"PlaceholderStatement","src":"1975:1:63"}]},"id":6227,"name":"notNullAddress","nameLocation":"1865:14:63","nodeType":"ModifierDefinition","parameters":{"id":6213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6212,"mutability":"mutable","name":"someone","nameLocation":"1888:7:63","nodeType":"VariableDeclaration","scope":6227,"src":"1880:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6211,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1879:17:63"},"src":"1856:127:63","virtual":false,"visibility":"internal"},{"body":{"id":6234,"nodeType":"Block","src":"2117:39:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6231,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"2127:20:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2127:22:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6233,"nodeType":"ExpressionStatement","src":"2127:22:63"}]},"documentation":{"id":6228,"nodeType":"StructuredDocumentation","src":"1989:109:63","text":"@notice Constructor for the implementation contract.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":6235,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6229,"nodeType":"ParameterList","parameters":[],"src":"2114:2:63"},"returnParameters":{"id":6230,"nodeType":"ParameterList","parameters":[],"src":"2117:0:63"},"scope":6551,"src":"2103:53:63","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6247,"nodeType":"Block","src":"2386:63:63","statements":[{"expression":{"arguments":[{"id":6244,"name":"accessControlManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"2420:21:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6243,"name":"__AccessControlled_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"2396:23:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2396:46:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6246,"nodeType":"ExpressionStatement","src":"2396:46:63"}]},"documentation":{"id":6236,"nodeType":"StructuredDocumentation","src":"2162:147:63","text":" @notice Initializes the owner of the contract\n @param accessControlManager_ Address of the access control manager contract"},"functionSelector":"c4d66de8","id":6248,"implemented":true,"kind":"function","modifiers":[{"id":6241,"kind":"modifierInvocation","modifierName":{"id":6240,"name":"initializer","nameLocations":["2374:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"2374:11:63"},"nodeType":"ModifierInvocation","src":"2374:11:63"}],"name":"initialize","nameLocation":"2323:10:63","nodeType":"FunctionDefinition","parameters":{"id":6239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6238,"mutability":"mutable","name":"accessControlManager_","nameLocation":"2342:21:63","nodeType":"VariableDeclaration","scope":6248,"src":"2334:29:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6237,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2333:31:63"},"returnParameters":{"id":6242,"nodeType":"ParameterList","parameters":[],"src":"2386:0:63"},"scope":6551,"src":"2314:135:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6281,"nodeType":"Block","src":"2812:221:63","statements":[{"expression":{"arguments":[{"hexValue":"736574446972656374507269636528616464726573732c75696e7432353629","id":6260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2842:33:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_09a8acb065fe5043ed4a969f967435770ffd8450e4a35e94d24bdd23267a218a","typeString":"literal_string \"setDirectPrice(address,uint256)\""},"value":"setDirectPrice(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_09a8acb065fe5043ed4a969f967435770ffd8450e4a35e94d24bdd23267a218a","typeString":"literal_string \"setDirectPrice(address,uint256)\""}],"id":6259,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"2822:19:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2822:54:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6262,"nodeType":"ExpressionStatement","src":"2822:54:63"},{"assignments":[6264],"declarations":[{"constant":false,"id":6264,"mutability":"mutable","name":"previousPriceMantissa","nameLocation":"2895:21:63","nodeType":"VariableDeclaration","scope":6281,"src":"2887:29:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6263,"name":"uint256","nodeType":"ElementaryTypeName","src":"2887:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6268,"initialValue":{"baseExpression":{"id":6265,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"2919:6:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6267,"indexExpression":{"id":6266,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"2926:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2919:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2887:45:63"},{"expression":{"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6269,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"2942:6:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6271,"indexExpression":{"id":6270,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"2949:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2942:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6272,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6253,"src":"2958:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2942:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6274,"nodeType":"ExpressionStatement","src":"2942:21:63"},{"eventCall":{"arguments":[{"id":6276,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"2990:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6277,"name":"previousPriceMantissa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"2997:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6278,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6253,"src":"3020:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6275,"name":"PricePosted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"2978:11:63","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":6279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2978:48:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6280,"nodeType":"EmitStatement","src":"2973:53:63"}]},"documentation":{"id":6249,"nodeType":"StructuredDocumentation","src":"2455:267:63","text":" @notice Manually set the price of a given asset\n @param asset Asset address\n @param price Asset price in 18 decimals\n @custom:access Only Governance\n @custom:event Emits PricePosted event on successfully setup of asset price"},"functionSelector":"09a8acb0","id":6282,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":6256,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"2805:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6257,"kind":"modifierInvocation","modifierName":{"id":6255,"name":"notNullAddress","nameLocations":["2790:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":6227,"src":"2790:14:63"},"nodeType":"ModifierInvocation","src":"2790:21:63"}],"name":"setDirectPrice","nameLocation":"2736:14:63","nodeType":"FunctionDefinition","parameters":{"id":6254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6251,"mutability":"mutable","name":"asset","nameLocation":"2759:5:63","nodeType":"VariableDeclaration","scope":6282,"src":"2751:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6250,"name":"address","nodeType":"ElementaryTypeName","src":"2751:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6253,"mutability":"mutable","name":"price","nameLocation":"2774:5:63","nodeType":"VariableDeclaration","scope":6282,"src":"2766:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2750:30:63"},"returnParameters":{"id":6258,"nodeType":"ParameterList","parameters":[],"src":"2812:0:63"},"scope":6551,"src":"2727:306:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6321,"nodeType":"Block","src":"3351:239:63","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6290,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"3365:13:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$6177_memory_ptr_$dyn_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory[] memory"}},"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3379:6:63","memberName":"length","nodeType":"MemberAccess","src":"3365:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3389:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3365:25:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6298,"nodeType":"IfStatement","src":"3361:58:63","trueBody":{"expression":{"arguments":[{"hexValue":"6c656e6774682063616e27742062652030","id":6295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3399:19:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bcde6d36e25ff80edf1e7b323425b7fef87f9e0a4cccb1475b35b230048c1ed","typeString":"literal_string \"length can't be 0\""},"value":"length can't be 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2bcde6d36e25ff80edf1e7b323425b7fef87f9e0a4cccb1475b35b230048c1ed","typeString":"literal_string \"length can't be 0\""}],"id":6294,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3392:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3392:27:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6297,"nodeType":"ExpressionStatement","src":"3392:27:63"}},{"assignments":[6300],"declarations":[{"constant":false,"id":6300,"mutability":"mutable","name":"numTokenConfigs","nameLocation":"3437:15:63","nodeType":"VariableDeclaration","scope":6321,"src":"3429:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6299,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6303,"initialValue":{"expression":{"id":6301,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"3455:13:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$6177_memory_ptr_$dyn_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory[] memory"}},"id":6302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:6:63","memberName":"length","nodeType":"MemberAccess","src":"3455:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3429:46:63"},{"body":{"id":6319,"nodeType":"Block","src":"3527:57:63","statements":[{"expression":{"arguments":[{"baseExpression":{"id":6314,"name":"tokenConfigs_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"3556:13:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$6177_memory_ptr_$dyn_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory[] memory"}},"id":6316,"indexExpression":{"id":6315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"3570:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3556:16:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}],"id":6313,"name":"setTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6367,"src":"3541:14:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_TokenConfig_$6177_memory_ptr_$returns$__$","typeString":"function (struct ChainlinkOracle.TokenConfig memory)"}},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3541:32:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6318,"nodeType":"ExpressionStatement","src":"3541:32:63"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6307,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"3501:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6308,"name":"numTokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"3505:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3501:19:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6320,"initializationExpression":{"assignments":[6305],"declarations":[{"constant":false,"id":6305,"mutability":"mutable","name":"i","nameLocation":"3498:1:63","nodeType":"VariableDeclaration","scope":6320,"src":"3490:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6304,"name":"uint256","nodeType":"ElementaryTypeName","src":"3490:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6306,"nodeType":"VariableDeclarationStatement","src":"3490:9:63"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3522:3:63","subExpression":{"id":6310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"3524:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6312,"nodeType":"ExpressionStatement","src":"3522:3:63"},"nodeType":"ForStatement","src":"3485:99:63"}]},"documentation":{"id":6283,"nodeType":"StructuredDocumentation","src":"3039:237:63","text":" @notice Add multiple token configs at the same time\n @param tokenConfigs_ config array\n @custom:access Only Governance\n @custom:error Zero length error thrown, if length of the array in parameter is 0"},"functionSelector":"0431710e","id":6322,"implemented":true,"kind":"function","modifiers":[],"name":"setTokenConfigs","nameLocation":"3290:15:63","nodeType":"FunctionDefinition","parameters":{"id":6288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6287,"mutability":"mutable","name":"tokenConfigs_","nameLocation":"3327:13:63","nodeType":"VariableDeclaration","scope":6322,"src":"3306:34:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$6177_memory_ptr_$dyn_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig[]"},"typeName":{"baseType":{"id":6285,"nodeType":"UserDefinedTypeName","pathNode":{"id":6284,"name":"TokenConfig","nameLocations":["3306:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":6177,"src":"3306:11:63"},"referencedDeclaration":6177,"src":"3306:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage_ptr","typeString":"struct ChainlinkOracle.TokenConfig"}},"id":6286,"nodeType":"ArrayTypeName","src":"3306:13:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$6177_storage_$dyn_storage_ptr","typeString":"struct ChainlinkOracle.TokenConfig[]"}},"visibility":"internal"}],"src":"3305:36:63"},"returnParameters":{"id":6289,"nodeType":"ParameterList","parameters":[],"src":"3351:0:63"},"scope":6551,"src":"3281:309:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6366,"nodeType":"Block","src":"4303:302:63","statements":[{"expression":{"arguments":[{"hexValue":"736574546f6b656e436f6e66696728546f6b656e436f6e66696729","id":6338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4333:29:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e5712572e46407c94b6201f222eec88396e5ee207af9ac6f4189acef9ab9ae8","typeString":"literal_string \"setTokenConfig(TokenConfig)\""},"value":"setTokenConfig(TokenConfig)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3e5712572e46407c94b6201f222eec88396e5ee207af9ac6f4189acef9ab9ae8","typeString":"literal_string \"setTokenConfig(TokenConfig)\""}],"id":6337,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"4313:19:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4313:50:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6340,"nodeType":"ExpressionStatement","src":"4313:50:63"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6341,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4378:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4390:14:63","memberName":"maxStalePeriod","nodeType":"MemberAccess","referencedDeclaration":6176,"src":"4378:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4408:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4378:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6349,"nodeType":"IfStatement","src":"4374:73:63","trueBody":{"expression":{"arguments":[{"hexValue":"7374616c6520706572696f642063616e2774206265207a65726f","id":6346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4418:28:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac79e17bea0e9553ff8067e0a192973f4cb0a54c912cae04cb23b5415268134","typeString":"literal_string \"stale period can't be zero\""},"value":"stale period can't be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cac79e17bea0e9553ff8067e0a192973f4cb0a54c912cae04cb23b5415268134","typeString":"literal_string \"stale period can't be zero\""}],"id":6345,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4411:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4411:36:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6348,"nodeType":"ExpressionStatement","src":"4411:36:63"}},{"expression":{"id":6355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6350,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6192,"src":"4457:12:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$6177_storage_$","typeString":"mapping(address => struct ChainlinkOracle.TokenConfig storage ref)"}},"id":6353,"indexExpression":{"expression":{"id":6351,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4470:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4482:5:63","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":6170,"src":"4470:17:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4457:31:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage","typeString":"struct ChainlinkOracle.TokenConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6354,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4491:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"src":"4457:45:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage","typeString":"struct ChainlinkOracle.TokenConfig storage ref"}},"id":6356,"nodeType":"ExpressionStatement","src":"4457:45:63"},{"eventCall":{"arguments":[{"expression":{"id":6358,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4534:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4546:5:63","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":6170,"src":"4534:17:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6360,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4553:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4565:4:63","memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":6173,"src":"4553:16:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6362,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4571:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4583:14:63","memberName":"maxStalePeriod","nodeType":"MemberAccess","referencedDeclaration":6176,"src":"4571:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6357,"name":"TokenConfigAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"4517:16:63","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4517:81:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6365,"nodeType":"EmitStatement","src":"4512:86:63"}]},"documentation":{"id":6323,"nodeType":"StructuredDocumentation","src":"3596:558:63","text":" @notice Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\n @param tokenConfig Token config struct\n @custom:access Only Governance\n @custom:error NotNullAddress error is thrown if asset address is null\n @custom:error NotNullAddress error is thrown if token feed address is null\n @custom:error Range error is thrown if maxStale period of token is not greater than zero\n @custom:event Emits TokenConfigAdded event on successfully setting of the token config"},"functionSelector":"392787d2","id":6367,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":6329,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4251:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4263:5:63","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":6170,"src":"4251:17:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6331,"kind":"modifierInvocation","modifierName":{"id":6328,"name":"notNullAddress","nameLocations":["4236:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":6227,"src":"4236:14:63"},"nodeType":"ModifierInvocation","src":"4236:33:63"},{"arguments":[{"expression":{"id":6333,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"4285:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4297:4:63","memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":6173,"src":"4285:16:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6335,"kind":"modifierInvocation","modifierName":{"id":6332,"name":"notNullAddress","nameLocations":["4270:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":6227,"src":"4270:14:63"},"nodeType":"ModifierInvocation","src":"4270:32:63"}],"name":"setTokenConfig","nameLocation":"4168:14:63","nodeType":"FunctionDefinition","parameters":{"id":6327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6326,"mutability":"mutable","name":"tokenConfig","nameLocation":"4211:11:63","nodeType":"VariableDeclaration","scope":6367,"src":"4192:30:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig"},"typeName":{"id":6325,"nodeType":"UserDefinedTypeName","pathNode":{"id":6324,"name":"TokenConfig","nameLocations":["4192:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":6177,"src":"4192:11:63"},"referencedDeclaration":6177,"src":"4192:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage_ptr","typeString":"struct ChainlinkOracle.TokenConfig"}},"visibility":"internal"}],"src":"4182:46:63"},"returnParameters":{"id":6336,"nodeType":"ParameterList","parameters":[],"src":"4303:0:63"},"scope":6551,"src":"4159:446:63","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5139],"body":{"id":6406,"nodeType":"Block","src":"4887:281:63","statements":[{"assignments":[6376],"declarations":[{"constant":false,"id":6376,"mutability":"mutable","name":"decimals","nameLocation":"4905:8:63","nodeType":"VariableDeclaration","scope":6406,"src":"4897:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6375,"name":"uint256","nodeType":"ElementaryTypeName","src":"4897:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6377,"nodeType":"VariableDeclarationStatement","src":"4897:16:63"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6378,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"4928:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6379,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6181,"src":"4937:17:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4928:26:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6399,"nodeType":"Block","src":"5000:110:63","statements":[{"assignments":[6388],"declarations":[{"constant":false,"id":6388,"mutability":"mutable","name":"token","nameLocation":"5029:5:63","nodeType":"VariableDeclaration","scope":6399,"src":"5014:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"},"typeName":{"id":6387,"nodeType":"UserDefinedTypeName","pathNode":{"id":6386,"name":"IERC20Metadata","nameLocations":["5014:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":2930,"src":"5014:14:63"},"referencedDeclaration":2930,"src":"5014:14:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"id":6392,"initialValue":{"arguments":[{"id":6390,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"5052:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6389,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"5037:14:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5037:21:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"nodeType":"VariableDeclarationStatement","src":"5014:44:63"},{"expression":{"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6393,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6376,"src":"5072:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6394,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"5083:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5089:8:63","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"5083:14:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:16:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5072:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6398,"nodeType":"ExpressionStatement","src":"5072:27:63"}]},"id":6400,"nodeType":"IfStatement","src":"4924:186:63","trueBody":{"id":6385,"nodeType":"Block","src":"4956:38:63","statements":[{"expression":{"id":6383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6381,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6376,"src":"4970:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":6382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4981:2:63","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"4970:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6384,"nodeType":"ExpressionStatement","src":"4970:13:63"}]}},{"expression":{"arguments":[{"id":6402,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"5145:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6403,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6376,"src":"5152:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6401,"name":"_getPriceInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6453,"src":"5127:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5127:34:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6374,"id":6405,"nodeType":"Return","src":"5120:41:63"}]},"documentation":{"id":6368,"nodeType":"StructuredDocumentation","src":"4611:200:63","text":" @notice Gets the price of a asset from the chainlink oracle\n @param asset Address of the asset\n @return Price in USD from Chainlink or a manually set price for the asset"},"functionSelector":"41976e09","id":6407,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"4825:8:63","nodeType":"FunctionDefinition","parameters":{"id":6371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6370,"mutability":"mutable","name":"asset","nameLocation":"4842:5:63","nodeType":"VariableDeclaration","scope":6407,"src":"4834:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6369,"name":"address","nodeType":"ElementaryTypeName","src":"4834:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4833:15:63"},"returnParameters":{"id":6374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6407,"src":"4878:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6372,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4877:9:63"},"scope":6551,"src":"4816:352:63","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6452,"nodeType":"Block","src":"5509:280:63","statements":[{"assignments":[6418],"declarations":[{"constant":false,"id":6418,"mutability":"mutable","name":"tokenPrice","nameLocation":"5527:10:63","nodeType":"VariableDeclaration","scope":6452,"src":"5519:18:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6417,"name":"uint256","nodeType":"ElementaryTypeName","src":"5519:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6422,"initialValue":{"baseExpression":{"id":6419,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"5540:6:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6421,"indexExpression":{"id":6420,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"5547:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5540:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5519:34:63"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6423,"name":"tokenPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"5567:10:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5581:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5567:15:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6437,"nodeType":"Block","src":"5633:58:63","statements":[{"expression":{"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6431,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"5647:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6433,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"5674:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6432,"name":"_getChainlinkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"5655:18:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5655:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5647:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6436,"nodeType":"ExpressionStatement","src":"5647:33:63"}]},"id":6438,"nodeType":"IfStatement","src":"5563:128:63","trueBody":{"id":6430,"nodeType":"Block","src":"5584:43:63","statements":[{"expression":{"id":6428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6426,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"5598:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6427,"name":"tokenPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"5606:10:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5598:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6429,"nodeType":"ExpressionStatement","src":"5598:18:63"}]}},{"assignments":[6440],"declarations":[{"constant":false,"id":6440,"mutability":"mutable","name":"decimalDelta","nameLocation":"5709:12:63","nodeType":"VariableDeclaration","scope":6452,"src":"5701:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6439,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6444,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":6441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5724:2:63","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6442,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"5729:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5724:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5701:36:63"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6445,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"5754:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5763:2:63","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":6447,"name":"decimalDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"5769:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5763:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6449,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5762:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5754:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6416,"id":6451,"nodeType":"Return","src":"5747:35:63"}]},"documentation":{"id":6408,"nodeType":"StructuredDocumentation","src":"5174:232:63","text":" @notice Gets the Chainlink price for a given asset\n @param asset address of the asset\n @param decimals decimals of the asset\n @return price Asset price in USD or a manually set price of the asset"},"id":6453,"implemented":true,"kind":"function","modifiers":[],"name":"_getPriceInternal","nameLocation":"5420:17:63","nodeType":"FunctionDefinition","parameters":{"id":6413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6410,"mutability":"mutable","name":"asset","nameLocation":"5446:5:63","nodeType":"VariableDeclaration","scope":6453,"src":"5438:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6409,"name":"address","nodeType":"ElementaryTypeName","src":"5438:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6412,"mutability":"mutable","name":"decimals","nameLocation":"5461:8:63","nodeType":"VariableDeclaration","scope":6453,"src":"5453:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6411,"name":"uint256","nodeType":"ElementaryTypeName","src":"5453:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5437:33:63"},"returnParameters":{"id":6416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6415,"mutability":"mutable","name":"price","nameLocation":"5502:5:63","nodeType":"VariableDeclaration","scope":6453,"src":"5494:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6414,"name":"uint256","nodeType":"ElementaryTypeName","src":"5494:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5493:15:63"},"scope":6551,"src":"5411:378:63","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6549,"nodeType":"Block","src":"6679:855:63","statements":[{"assignments":[6469],"declarations":[{"constant":false,"id":6469,"mutability":"mutable","name":"tokenConfig","nameLocation":"6708:11:63","nodeType":"VariableDeclaration","scope":6549,"src":"6689:30:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig"},"typeName":{"id":6468,"nodeType":"UserDefinedTypeName","pathNode":{"id":6467,"name":"TokenConfig","nameLocations":["6689:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":6177,"src":"6689:11:63"},"referencedDeclaration":6177,"src":"6689:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage_ptr","typeString":"struct ChainlinkOracle.TokenConfig"}},"visibility":"internal"}],"id":6473,"initialValue":{"baseExpression":{"id":6470,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6192,"src":"6722:12:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$6177_storage_$","typeString":"mapping(address => struct ChainlinkOracle.TokenConfig storage ref)"}},"id":6472,"indexExpression":{"id":6471,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6456,"src":"6735:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6722:19:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage","typeString":"struct ChainlinkOracle.TokenConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6689:52:63"},{"assignments":[6476],"declarations":[{"constant":false,"id":6476,"mutability":"mutable","name":"feed","nameLocation":"6773:4:63","nodeType":"VariableDeclaration","scope":6549,"src":"6751:26:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"},"typeName":{"id":6475,"nodeType":"UserDefinedTypeName","pathNode":{"id":6474,"name":"AggregatorV3Interface","nameLocations":["6751:21:63"],"nodeType":"IdentifierPath","referencedDeclaration":102,"src":"6751:21:63"},"referencedDeclaration":102,"src":"6751:21:63","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"}],"id":6481,"initialValue":{"arguments":[{"expression":{"id":6478,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"6802:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6814:4:63","memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":6173,"src":"6802:16:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6477,"name":"AggregatorV3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"6780:21:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AggregatorV3Interface_$102_$","typeString":"type(contract AggregatorV3Interface)"}},"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6780:39:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"nodeType":"VariableDeclarationStatement","src":"6751:68:63"},{"assignments":[6483],"declarations":[{"constant":false,"id":6483,"mutability":"mutable","name":"maxStalePeriod","nameLocation":"6882:14:63","nodeType":"VariableDeclaration","scope":6549,"src":"6874:22:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6482,"name":"uint256","nodeType":"ElementaryTypeName","src":"6874:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6486,"initialValue":{"expression":{"id":6484,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"6899:11:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_memory_ptr","typeString":"struct ChainlinkOracle.TokenConfig memory"}},"id":6485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6911:14:63","memberName":"maxStalePeriod","nodeType":"MemberAccess","referencedDeclaration":6176,"src":"6899:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6874:51:63"},{"assignments":[6488],"declarations":[{"constant":false,"id":6488,"mutability":"mutable","name":"decimalDelta","nameLocation":"7023:12:63","nodeType":"VariableDeclaration","scope":6549,"src":"7015:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6487,"name":"uint256","nodeType":"ElementaryTypeName","src":"7015:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6494,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":6489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7038:2:63","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6490,"name":"feed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"7043:4:63","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"id":6491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7048:8:63","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":63,"src":"7043:13:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7043:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7038:20:63","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7015:43:63"},{"assignments":[null,6496,null,6498,null],"declarations":[null,{"constant":false,"id":6496,"mutability":"mutable","name":"answer","nameLocation":"7079:6:63","nodeType":"VariableDeclaration","scope":6549,"src":"7072:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6495,"name":"int256","nodeType":"ElementaryTypeName","src":"7072:6:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},null,{"constant":false,"id":6498,"mutability":"mutable","name":"updatedAt","nameLocation":"7097:9:63","nodeType":"VariableDeclaration","scope":6549,"src":"7089:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6497,"name":"uint256","nodeType":"ElementaryTypeName","src":"7089:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":6502,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6499,"name":"feed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"7112:4:63","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7117:15:63","memberName":"latestRoundData","nodeType":"MemberAccess","referencedDeclaration":101,"src":"7112:20:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function () view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7112:22:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"7069:65:63"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6503,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"7148:6:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":6504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7158:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7148:11:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6510,"nodeType":"IfStatement","src":"7144:59:63","trueBody":{"expression":{"arguments":[{"hexValue":"636861696e6c696e6b207072696365206d75737420626520706f736974697665","id":6507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7168:34:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_2f70a6b88148e8cf0f43daa3652b8e9be173382f12829f57921d4fb38cdd6444","typeString":"literal_string \"chainlink price must be positive\""},"value":"chainlink price must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2f70a6b88148e8cf0f43daa3652b8e9be173382f12829f57921d4fb38cdd6444","typeString":"literal_string \"chainlink price must be positive\""}],"id":6506,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7161:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7161:42:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6509,"nodeType":"ExpressionStatement","src":"7161:42:63"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6511,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7217:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7223:9:63","memberName":"timestamp","nodeType":"MemberAccess","src":"7217:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6513,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"7235:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7217:27:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6519,"nodeType":"IfStatement","src":"7213:71:63","trueBody":{"expression":{"arguments":[{"hexValue":"757064617465644174206578636565647320626c6f636b2074696d65","id":6516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7253:30:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_76ddd7b80d9c82eb38af9166e15d7ff6eb106bb126c2a0aefbdc4e2a1ecf1d3e","typeString":"literal_string \"updatedAt exceeds block time\""},"value":"updatedAt exceeds block time"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76ddd7b80d9c82eb38af9166e15d7ff6eb106bb126c2a0aefbdc4e2a1ecf1d3e","typeString":"literal_string \"updatedAt exceeds block time\""}],"id":6515,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7246:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7246:38:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6518,"nodeType":"ExpressionStatement","src":"7246:38:63"}},{"assignments":[6521],"declarations":[{"constant":false,"id":6521,"mutability":"mutable","name":"deltaTime","nameLocation":"7303:9:63","nodeType":"VariableDeclaration","scope":6549,"src":"7295:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6520,"name":"uint256","nodeType":"ElementaryTypeName","src":"7295:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6522,"nodeType":"VariableDeclarationStatement","src":"7295:17:63"},{"id":6530,"nodeType":"UncheckedBlock","src":"7322:74:63","statements":[{"expression":{"id":6528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6523,"name":"deltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"7346:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6524,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7358:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7364:9:63","memberName":"timestamp","nodeType":"MemberAccess","src":"7358:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6526,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"7376:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7358:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7346:39:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6529,"nodeType":"ExpressionStatement","src":"7346:39:63"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6531,"name":"deltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"7410:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6532,"name":"maxStalePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6483,"src":"7422:14:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7410:26:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6538,"nodeType":"IfStatement","src":"7406:65:63","trueBody":{"expression":{"arguments":[{"hexValue":"636861696e6c696e6b2070726963652065787069726564","id":6535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7445:25:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_6374ec0737c6662214c5eac22f724c9fe989f2e563ffd13276f420a64bd6efeb","typeString":"literal_string \"chainlink price expired\""},"value":"chainlink price expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6374ec0737c6662214c5eac22f724c9fe989f2e563ffd13276f420a64bd6efeb","typeString":"literal_string \"chainlink price expired\""}],"id":6534,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7438:6:63","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7438:33:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6537,"nodeType":"ExpressionStatement","src":"7438:33:63"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6541,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"7497:6:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7489:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6539,"name":"uint256","nodeType":"ElementaryTypeName","src":"7489:7:63","typeDescriptions":{}}},"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7508:2:63","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":6544,"name":"decimalDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"7514:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7508:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7507:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7489:38:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6466,"id":6548,"nodeType":"Return","src":"7482:45:63"}]},"documentation":{"id":6454,"nodeType":"StructuredDocumentation","src":"5795:749:63","text":" @notice Get the Chainlink price for an asset, revert if token config doesn't exist\n @dev The precision of the price feed is used to ensure the returned price has 18 decimals of precision\n @param asset Address of the asset\n @return price Price in USD, with 18 decimals of precision\n @custom:error NotNullAddress error is thrown if the asset address is null\n @custom:error Price error is thrown if the Chainlink price of asset is not greater than zero\n @custom:error Timing error is thrown if current timestamp is less than the last updatedAt timestamp\n @custom:error Timing error is thrown if time difference between current time and last updated time\n is greater than maxStalePeriod"},"id":6550,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"baseExpression":{"id":6459,"name":"tokenConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6192,"src":"6634:12:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TokenConfig_$6177_storage_$","typeString":"mapping(address => struct ChainlinkOracle.TokenConfig storage ref)"}},"id":6461,"indexExpression":{"id":6460,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6456,"src":"6647:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6634:19:63","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$6177_storage","typeString":"struct ChainlinkOracle.TokenConfig storage ref"}},"id":6462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6654:5:63","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":6170,"src":"6634:25:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6463,"kind":"modifierInvocation","modifierName":{"id":6458,"name":"notNullAddress","nameLocations":["6619:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":6227,"src":"6619:14:63"},"nodeType":"ModifierInvocation","src":"6619:41:63"}],"name":"_getChainlinkPrice","nameLocation":"6558:18:63","nodeType":"FunctionDefinition","parameters":{"id":6457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6456,"mutability":"mutable","name":"asset","nameLocation":"6594:5:63","nodeType":"VariableDeclaration","scope":6550,"src":"6586:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6455,"name":"address","nodeType":"ElementaryTypeName","src":"6586:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6576:29:63"},"returnParameters":{"id":6466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6550,"src":"6670:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6464,"name":"uint256","nodeType":"ElementaryTypeName","src":"6670:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6669:9:63"},"scope":6551,"src":"6549:985:63","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":6552,"src":"448:7088:63","usedErrors":[3435],"usedEvents":[120,227,357,3426,6201,6210]}],"src":"41:7496:63"}},"contracts/oracles/ERC4626Oracle.sol":{"id":64,"ast":{"absolutePath":"contracts/oracles/ERC4626Oracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"ERC4626Oracle":[6622],"IERC4626":[4983]},"id":6623,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":6553,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:64"},{"absolutePath":"contracts/interfaces/IERC4626.sol","file":"../interfaces/IERC4626.sol","id":6555,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6623,"sourceUnit":4984,"src":"66:54:64","symbolAliases":[{"foreign":{"id":6554,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"75:8:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":6557,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6623,"sourceUnit":8612,"src":"121:75:64","symbolAliases":[{"foreign":{"id":6556,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"130:21:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6559,"name":"CorrelatedTokenOracle","nameLocations":["332:21:64"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"332:21:64"},"id":6560,"nodeType":"InheritanceSpecifier","src":"332:21:64"}],"canonicalName":"ERC4626Oracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":6558,"nodeType":"StructuredDocumentation","src":"198:107:64","text":" @title ERC4626Oracle\n @author Venus\n @notice This oracle fetches the price of ERC4626 tokens"},"fullyImplemented":true,"id":6622,"linearizedBaseContracts":[6622,8611,4968,5140],"name":"ERC4626Oracle","nameLocation":"315:13:64","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"86f23a75","id":6562,"mutability":"immutable","name":"ONE_CORRELATED_TOKEN","nameLocation":"385:20:64","nodeType":"VariableDeclaration","scope":6622,"src":"360:45:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6561,"name":"uint256","nodeType":"ElementaryTypeName","src":"360:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":6605,"nodeType":"Block","src":"1151:82:64","statements":[{"expression":{"id":6603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6595,"name":"ONE_CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"1161:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1184:2:64","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6598,"name":"correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6565,"src":"1199:15:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6597,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"1190:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$4983_$","typeString":"type(contract IERC4626)"}},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$4983","typeString":"contract IERC4626"}},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1216:8:64","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":4982,"src":"1190:34:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1184:42:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1161:65:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6604,"nodeType":"ExpressionStatement","src":"1161:65:64"}]},"documentation":{"id":6563,"nodeType":"StructuredDocumentation","src":"412:56:64","text":"@notice Constructor for the implementation contract."},"id":6606,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6584,"name":"correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6565,"src":"860:15:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6585,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6567,"src":"889:15:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6586,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6569,"src":"918:15:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6587,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"947:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6588,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6573,"src":"977:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6589,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6575,"src":"1008:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6590,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"1052:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6591,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"1090:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6592,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6581,"src":"1124:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6593,"kind":"baseConstructorSpecifier","modifierName":{"id":6583,"name":"CorrelatedTokenOracle","nameLocations":["825:21:64"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"825:21:64"},"nodeType":"ModifierInvocation","src":"825:321:64"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6565,"mutability":"mutable","name":"correlatedToken","nameLocation":"502:15:64","nodeType":"VariableDeclaration","scope":6606,"src":"494:23:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6564,"name":"address","nodeType":"ElementaryTypeName","src":"494:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6567,"mutability":"mutable","name":"underlyingToken","nameLocation":"535:15:64","nodeType":"VariableDeclaration","scope":6606,"src":"527:23:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6566,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6569,"mutability":"mutable","name":"resilientOracle","nameLocation":"568:15:64","nodeType":"VariableDeclaration","scope":6606,"src":"560:23:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6568,"name":"address","nodeType":"ElementaryTypeName","src":"560:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6571,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"601:16:64","nodeType":"VariableDeclaration","scope":6606,"src":"593:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6570,"name":"uint256","nodeType":"ElementaryTypeName","src":"593:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6573,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"635:17:64","nodeType":"VariableDeclaration","scope":6606,"src":"627:25:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6572,"name":"uint256","nodeType":"ElementaryTypeName","src":"627:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6575,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"670:30:64","nodeType":"VariableDeclaration","scope":6606,"src":"662:38:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6574,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6577,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"718:24:64","nodeType":"VariableDeclaration","scope":6606,"src":"710:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6576,"name":"uint256","nodeType":"ElementaryTypeName","src":"710:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6579,"mutability":"mutable","name":"accessControlManager","nameLocation":"760:20:64","nodeType":"VariableDeclaration","scope":6606,"src":"752:28:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6578,"name":"address","nodeType":"ElementaryTypeName","src":"752:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6581,"mutability":"mutable","name":"_snapshotGap","nameLocation":"798:12:64","nodeType":"VariableDeclaration","scope":6606,"src":"790:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6580,"name":"uint256","nodeType":"ElementaryTypeName","src":"790:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"484:332:64"},"returnParameters":{"id":6594,"nodeType":"ParameterList","parameters":[],"src":"1151:0:64"},"scope":6622,"src":"473:760:64","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":6620,"nodeType":"Block","src":"1476:88:64","statements":[{"expression":{"arguments":[{"id":6617,"name":"ONE_CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"1536:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6614,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1502:16:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6613,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"1493:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$4983_$","typeString":"type(contract IERC4626)"}},"id":6615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$4983","typeString":"contract IERC4626"}},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1520:15:64","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":4977,"src":"1493:42:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":6618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:64:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6612,"id":6619,"nodeType":"Return","src":"1486:71:64"}]},"documentation":{"id":6607,"nodeType":"StructuredDocumentation","src":"1239:162:64","text":" @notice Fetches the amount of underlying token for 1 correlated token\n @return amount The amount of underlying token for correlated token"},"functionSelector":"abb85613","id":6621,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1415:19:64","nodeType":"FunctionDefinition","overrides":{"id":6609,"nodeType":"OverrideSpecifier","overrides":[],"src":"1449:8:64"},"parameters":{"id":6608,"nodeType":"ParameterList","parameters":[],"src":"1434:2:64"},"returnParameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6621,"src":"1467:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6610,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1466:9:64"},"scope":6622,"src":"1406:158:64","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":6623,"src":"306:1260:64","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1526:64"}},"contracts/oracles/EtherfiAccountantOracle.sol":{"id":65,"ast":{"absolutePath":"contracts/oracles/EtherfiAccountantOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EtherfiAccountantOracle":[6696],"IAccountant":[4924],"ensureNonzeroAddress":[3639]},"id":6697,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":6624,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:65"},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":6626,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6697,"sourceUnit":8612,"src":"66:75:65","symbolAliases":[{"foreign":{"id":6625,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"75:21:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IAccountant.sol","file":"../interfaces/IAccountant.sol","id":6628,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6697,"sourceUnit":4925,"src":"142:60:65","symbolAliases":[{"foreign":{"id":6627,"name":"IAccountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"151:11:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":6630,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6697,"sourceUnit":3655,"src":"203:98:65","symbolAliases":[{"foreign":{"id":6629,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"212:20:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6632,"name":"CorrelatedTokenOracle","nameLocations":["526:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"526:21:65"},"id":6633,"nodeType":"InheritanceSpecifier","src":"526:21:65"}],"canonicalName":"EtherfiAccountantOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":6631,"nodeType":"StructuredDocumentation","src":"303:186:65","text":" @title EtherfiAccountantOracle\n @author Venus\n @notice This oracle fetches the price of any Ether.fi asset that uses\n Accountant contracts to derive the underlying price"},"fullyImplemented":true,"id":6696,"linearizedBaseContracts":[6696,8611,4968,5140],"name":"EtherfiAccountantOracle","nameLocation":"499:23:65","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":6634,"nodeType":"StructuredDocumentation","src":"554:33:65","text":"@notice Address of Accountant"},"functionSelector":"8b9d2940","id":6637,"mutability":"immutable","name":"ACCOUNTANT","nameLocation":"621:10:65","nodeType":"VariableDeclaration","scope":6696,"src":"592:39:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"},"typeName":{"id":6636,"nodeType":"UserDefinedTypeName","pathNode":{"id":6635,"name":"IAccountant","nameLocations":["592:11:65"],"nodeType":"IdentifierPath","referencedDeclaration":4924,"src":"592:11:65"},"referencedDeclaration":4924,"src":"592:11:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"visibility":"public"},{"body":{"id":6682,"nodeType":"Block","src":"1405:95:65","statements":[{"expression":{"arguments":[{"id":6673,"name":"accountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6640,"src":"1436:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6672,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1415:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1415:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6675,"nodeType":"ExpressionStatement","src":"1415:32:65"},{"expression":{"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6676,"name":"ACCOUNTANT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"1457:10:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6678,"name":"accountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6640,"src":"1482:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6677,"name":"IAccountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"1470:11:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccountant_$4924_$","typeString":"type(contract IAccountant)"}},"id":6679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1470:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"src":"1457:36:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"id":6681,"nodeType":"ExpressionStatement","src":"1457:36:65"}]},"documentation":{"id":6638,"nodeType":"StructuredDocumentation","src":"638:56:65","text":"@notice Constructor for the implementation contract."},"id":6683,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6661,"name":"correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6642,"src":"1114:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6662,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"1143:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6663,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"1172:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6664,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6648,"src":"1201:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6665,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"1231:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6666,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6652,"src":"1262:30:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6667,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6654,"src":"1306:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6668,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6656,"src":"1344:20:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6669,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6658,"src":"1378:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6670,"kind":"baseConstructorSpecifier","modifierName":{"id":6660,"name":"CorrelatedTokenOracle","nameLocations":["1079:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1079:21:65"},"nodeType":"ModifierInvocation","src":"1079:321:65"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6640,"mutability":"mutable","name":"accountant","nameLocation":"728:10:65","nodeType":"VariableDeclaration","scope":6683,"src":"720:18:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6639,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6642,"mutability":"mutable","name":"correlatedToken","nameLocation":"756:15:65","nodeType":"VariableDeclaration","scope":6683,"src":"748:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6641,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6644,"mutability":"mutable","name":"underlyingToken","nameLocation":"789:15:65","nodeType":"VariableDeclaration","scope":6683,"src":"781:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6643,"name":"address","nodeType":"ElementaryTypeName","src":"781:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6646,"mutability":"mutable","name":"resilientOracle","nameLocation":"822:15:65","nodeType":"VariableDeclaration","scope":6683,"src":"814:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6645,"name":"address","nodeType":"ElementaryTypeName","src":"814:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6648,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"855:16:65","nodeType":"VariableDeclaration","scope":6683,"src":"847:24:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6647,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6650,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"889:17:65","nodeType":"VariableDeclaration","scope":6683,"src":"881:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6649,"name":"uint256","nodeType":"ElementaryTypeName","src":"881:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6652,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"924:30:65","nodeType":"VariableDeclaration","scope":6683,"src":"916:38:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6651,"name":"uint256","nodeType":"ElementaryTypeName","src":"916:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6654,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"972:24:65","nodeType":"VariableDeclaration","scope":6683,"src":"964:32:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6653,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6656,"mutability":"mutable","name":"accessControlManager","nameLocation":"1014:20:65","nodeType":"VariableDeclaration","scope":6683,"src":"1006:28:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6655,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6658,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1052:12:65","nodeType":"VariableDeclaration","scope":6683,"src":"1044:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:360:65"},"returnParameters":{"id":6671,"nodeType":"ParameterList","parameters":[],"src":"1405:0:65"},"scope":6696,"src":"699:801:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":6694,"nodeType":"Block","src":"1701:48:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6690,"name":"ACCOUNTANT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"1718:10:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1729:11:65","memberName":"getRateSafe","nodeType":"MemberAccess","referencedDeclaration":4923,"src":"1718:22:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1718:24:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6689,"id":6693,"nodeType":"Return","src":"1711:31:65"}]},"documentation":{"id":6684,"nodeType":"StructuredDocumentation","src":"1506:120:65","text":" @notice Fetches the conversion rate from the ACCOUNTANT contract\n @return amount Amount of WBTC"},"functionSelector":"abb85613","id":6695,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1640:19:65","nodeType":"FunctionDefinition","overrides":{"id":6686,"nodeType":"OverrideSpecifier","overrides":[],"src":"1674:8:65"},"parameters":{"id":6685,"nodeType":"ParameterList","parameters":[],"src":"1659:2:65"},"returnParameters":{"id":6689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6695,"src":"1692:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6687,"name":"uint256","nodeType":"ElementaryTypeName","src":"1692:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1691:9:65"},"scope":6696,"src":"1631:118:65","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":6697,"src":"490:1261:65","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1711:65"}},"contracts/oracles/OneJumpOracle.sol":{"id":66,"ast":{"absolutePath":"contracts/oracles/OneJumpOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IERC20Metadata":[2930],"OneJumpOracle":[6807],"OracleInterface":[5140],"ensureNonzeroAddress":[3639]},"id":6808,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":6698,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:66"},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":6700,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6808,"sourceUnit":8612,"src":"66:75:66","symbolAliases":[{"foreign":{"id":6699,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"75:21:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":6702,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6808,"sourceUnit":3655,"src":"142:98:66","symbolAliases":[{"foreign":{"id":6701,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"151:20:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":6704,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6808,"sourceUnit":5173,"src":"241:68:66","symbolAliases":[{"foreign":{"id":6703,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"250:15:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":6706,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6808,"sourceUnit":2931,"src":"310:99:66","symbolAliases":[{"foreign":{"id":6705,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"319:14:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6708,"name":"CorrelatedTokenOracle","nameLocations":["572:21:66"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"572:21:66"},"id":6709,"nodeType":"InheritanceSpecifier","src":"572:21:66"}],"canonicalName":"OneJumpOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":6707,"nodeType":"StructuredDocumentation","src":"411:134:66","text":" @title OneJumpOracle\n @author Venus\n @notice This oracle fetches the price of an asset in through an intermediate asset"},"fullyImplemented":true,"id":6807,"linearizedBaseContracts":[6807,8611,4968,5140],"name":"OneJumpOracle","nameLocation":"555:13:66","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":6710,"nodeType":"StructuredDocumentation","src":"600:46:66","text":"@notice Address of the intermediate oracle"},"functionSelector":"ef4fa51b","id":6713,"mutability":"immutable","name":"INTERMEDIATE_ORACLE","nameLocation":"684:19:66","nodeType":"VariableDeclaration","scope":6807,"src":"651:52:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"},"typeName":{"id":6712,"nodeType":"UserDefinedTypeName","pathNode":{"id":6711,"name":"OracleInterface","nameLocations":["651:15:66"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"651:15:66"},"referencedDeclaration":5140,"src":"651:15:66","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"visibility":"public"},{"body":{"id":6758,"nodeType":"Block","src":"1485:124:66","statements":[{"expression":{"arguments":[{"id":6749,"name":"intermediateOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6722,"src":"1516:18:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6748,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1495:20:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1495:40:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6751,"nodeType":"ExpressionStatement","src":"1495:40:66"},{"expression":{"id":6756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6752,"name":"INTERMEDIATE_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6713,"src":"1545:19:66","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6754,"name":"intermediateOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6722,"src":"1583:18:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6753,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"1567:15:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1567:35:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"src":"1545:57:66","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":6757,"nodeType":"ExpressionStatement","src":"1545:57:66"}]},"documentation":{"id":6714,"nodeType":"StructuredDocumentation","src":"710:56:66","text":"@notice Constructor for the implementation contract."},"id":6759,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6737,"name":"correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6716,"src":"1194:15:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6738,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6718,"src":"1223:15:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6739,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6720,"src":"1252:15:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6740,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6724,"src":"1281:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6741,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6726,"src":"1311:17:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6742,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6728,"src":"1342:30:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6743,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"1386:24:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6744,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"1424:20:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6745,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"1458:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6746,"kind":"baseConstructorSpecifier","modifierName":{"id":6736,"name":"CorrelatedTokenOracle","nameLocations":["1159:21:66"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1159:21:66"},"nodeType":"ModifierInvocation","src":"1159:321:66"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6716,"mutability":"mutable","name":"correlatedToken","nameLocation":"800:15:66","nodeType":"VariableDeclaration","scope":6759,"src":"792:23:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6715,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6718,"mutability":"mutable","name":"underlyingToken","nameLocation":"833:15:66","nodeType":"VariableDeclaration","scope":6759,"src":"825:23:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6717,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6720,"mutability":"mutable","name":"resilientOracle","nameLocation":"866:15:66","nodeType":"VariableDeclaration","scope":6759,"src":"858:23:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6719,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6722,"mutability":"mutable","name":"intermediateOracle","nameLocation":"899:18:66","nodeType":"VariableDeclaration","scope":6759,"src":"891:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6721,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6724,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"935:16:66","nodeType":"VariableDeclaration","scope":6759,"src":"927:24:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6723,"name":"uint256","nodeType":"ElementaryTypeName","src":"927:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6726,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"969:17:66","nodeType":"VariableDeclaration","scope":6759,"src":"961:25:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6725,"name":"uint256","nodeType":"ElementaryTypeName","src":"961:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6728,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"1004:30:66","nodeType":"VariableDeclaration","scope":6759,"src":"996:38:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6727,"name":"uint256","nodeType":"ElementaryTypeName","src":"996:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6730,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"1052:24:66","nodeType":"VariableDeclaration","scope":6759,"src":"1044:32:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6729,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6732,"mutability":"mutable","name":"accessControlManager","nameLocation":"1094:20:66","nodeType":"VariableDeclaration","scope":6759,"src":"1086:28:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6731,"name":"address","nodeType":"ElementaryTypeName","src":"1086:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6734,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1132:12:66","nodeType":"VariableDeclaration","scope":6759,"src":"1124:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6733,"name":"uint256","nodeType":"ElementaryTypeName","src":"1124:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"782:368:66"},"returnParameters":{"id":6747,"nodeType":"ParameterList","parameters":[],"src":"1485:0:66"},"scope":6807,"src":"771:838:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":6805,"nodeType":"Block","src":"1933:356:66","statements":[{"assignments":[6767],"declarations":[{"constant":false,"id":6767,"mutability":"mutable","name":"underlyingDecimals","nameLocation":"1951:18:66","nodeType":"VariableDeclaration","scope":6805,"src":"1943:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6766,"name":"uint256","nodeType":"ElementaryTypeName","src":"1943:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6773,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6769,"name":"UNDERLYING_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"1987:16:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6768,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"1972:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1972:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":6771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2005:8:66","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"1972:41:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1972:43:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1943:72:66"},{"assignments":[6775],"declarations":[{"constant":false,"id":6775,"mutability":"mutable","name":"correlatedDecimals","nameLocation":"2033:18:66","nodeType":"VariableDeclaration","scope":6805,"src":"2025:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2025:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6781,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6777,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"2069:16:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6776,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"2054:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":6778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":6779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2087:8:66","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"2054:41:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:43:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"2025:72:66"},{"assignments":[6783],"declarations":[{"constant":false,"id":6783,"mutability":"mutable","name":"underlyingAmount","nameLocation":"2116:16:66","nodeType":"VariableDeclaration","scope":6805,"src":"2108:24:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6782,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6788,"initialValue":{"arguments":[{"id":6786,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"2164:16:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6784,"name":"INTERMEDIATE_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6713,"src":"2135:19:66","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":6785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2155:8:66","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"2135:28:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:46:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2108:73:66"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6789,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"2200:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2220:2:66","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":6791,"name":"correlatedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6775,"src":"2226:18:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2220:24:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2219:26:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2200:45:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2199:47:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2250:2:66","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3336","id":6797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2257:2:66","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"36"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6798,"name":"underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"2262:18:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2257:23:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6800,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2256:25:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2250:31:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6802,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2249:33:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2199:83:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6765,"id":6804,"nodeType":"Return","src":"2192:90:66"}]},"documentation":{"id":6760,"nodeType":"StructuredDocumentation","src":"1615:243:66","text":" @notice Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\n @return amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals"},"functionSelector":"abb85613","id":6806,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1872:19:66","nodeType":"FunctionDefinition","overrides":{"id":6762,"nodeType":"OverrideSpecifier","overrides":[],"src":"1906:8:66"},"parameters":{"id":6761,"nodeType":"ParameterList","parameters":[],"src":"1891:2:66"},"returnParameters":{"id":6765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6806,"src":"1924:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6763,"name":"uint256","nodeType":"ElementaryTypeName","src":"1924:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1923:9:66"},"scope":6807,"src":"1863:426:66","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":6808,"src":"546:1745:66","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:2251:66"}},"contracts/oracles/PendleOracle.sol":{"id":67,"ast":{"absolutePath":"contracts/oracles/PendleOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IERC20Metadata":[2930],"IPendlePtOracle":[5042],"PendleOracle":[7023],"ensureNonzeroAddress":[3639],"ensureNonzeroValue":[3654]},"id":7024,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":6809,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:67"},{"absolutePath":"contracts/interfaces/IPendlePtOracle.sol","file":"../interfaces/IPendlePtOracle.sol","id":6811,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7024,"sourceUnit":5043,"src":"66:68:67","symbolAliases":[{"foreign":{"id":6810,"name":"IPendlePtOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5042,"src":"75:15:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":6813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7024,"sourceUnit":8612,"src":"135:75:67","symbolAliases":[{"foreign":{"id":6812,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"144:21:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":6816,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7024,"sourceUnit":3655,"src":"211:118:67","symbolAliases":[{"foreign":{"id":6814,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"220:20:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6815,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"242:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":6818,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7024,"sourceUnit":2931,"src":"330:99:67","symbolAliases":[{"foreign":{"id":6817,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"339:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6820,"name":"CorrelatedTokenOracle","nameLocations":["1341:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1341:21:67"},"id":6821,"nodeType":"InheritanceSpecifier","src":"1341:21:67"}],"canonicalName":"PendleOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":6819,"nodeType":"StructuredDocumentation","src":"431:884:67","text":" @title PendleOracle\n @author Venus\n @notice This oracle fetches the price of a pendle token\n @dev As a base price the oracle uses either the price of the Pendle\n market's asset (in this case PT_TO_ASSET rate should be used) or\n the price of the Pendle market's interest bearing token (e.g. wstETH\n for stETH; in this case PT_TO_SY rate should be used). Technically,\n interest bearing token is different from standardized yield (SY) token,\n but since SY is a wrapper around an interest bearing token, we can safely\n assume the prices of the two are equal. This is not always true for asset\n price though: using PT_TO_ASSET rate assumes that the yield token can\n be seamlessly redeemed for the underlying asset. In reality, this might\n not always be the case. For more details, see\n https://docs.pendle.finance/Developers/Contracts/StandardizedYield"},"fullyImplemented":true,"id":7023,"linearizedBaseContracts":[7023,8611,4968,5140],"name":"PendleOracle","nameLocation":"1325:12:67","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PendleOracle.ConstructorParams","id":6862,"members":[{"constant":false,"id":6824,"mutability":"mutable","name":"market","nameLocation":"1446:6:67","nodeType":"VariableDeclaration","scope":6862,"src":"1438:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6823,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6827,"mutability":"mutable","name":"ptOracle","nameLocation":"1504:8:67","nodeType":"VariableDeclaration","scope":6862,"src":"1496:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6826,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6831,"mutability":"mutable","name":"rateKind","nameLocation":"1582:8:67","nodeType":"VariableDeclaration","scope":6862,"src":"1573:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"},"typeName":{"id":6830,"nodeType":"UserDefinedTypeName","pathNode":{"id":6829,"name":"RateKind","nameLocations":["1573:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":6866,"src":"1573:8:67"},"referencedDeclaration":6866,"src":"1573:8:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"visibility":"internal"},{"constant":false,"id":6834,"mutability":"mutable","name":"ptToken","nameLocation":"1644:7:67","nodeType":"VariableDeclaration","scope":6862,"src":"1636:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6833,"name":"address","nodeType":"ElementaryTypeName","src":"1636:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6837,"mutability":"mutable","name":"underlyingToken","nameLocation":"1770:15:67","nodeType":"VariableDeclaration","scope":6862,"src":"1762:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6836,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6840,"mutability":"mutable","name":"resilientOracle","nameLocation":"1879:15:67","nodeType":"VariableDeclaration","scope":6862,"src":"1871:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6839,"name":"address","nodeType":"ElementaryTypeName","src":"1871:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6843,"mutability":"mutable","name":"twapDuration","nameLocation":"1972:12:67","nodeType":"VariableDeclaration","scope":6862,"src":"1965:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6842,"name":"uint32","nodeType":"ElementaryTypeName","src":"1965:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6846,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"2065:16:67","nodeType":"VariableDeclaration","scope":6862,"src":"2057:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6845,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6849,"mutability":"mutable","name":"snapshotInterval","nameLocation":"2152:16:67","nodeType":"VariableDeclaration","scope":6862,"src":"2144:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2144:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6852,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"2252:30:67","nodeType":"VariableDeclaration","scope":6862,"src":"2244:38:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2244:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6855,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"2362:24:67","nodeType":"VariableDeclaration","scope":6862,"src":"2354:32:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2354:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6858,"mutability":"mutable","name":"accessControlManager","nameLocation":"2447:20:67","nodeType":"VariableDeclaration","scope":6862,"src":"2439:28:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6857,"name":"address","nodeType":"ElementaryTypeName","src":"2439:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6861,"mutability":"mutable","name":"snapshotGap","nameLocation":"2543:11:67","nodeType":"VariableDeclaration","scope":6862,"src":"2535:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2535:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ConstructorParams","nameLocation":"1376:17:67","nodeType":"StructDefinition","scope":7023,"src":"1369:1192:67","visibility":"public"},{"canonicalName":"PendleOracle.RateKind","documentation":{"id":6863,"nodeType":"StructuredDocumentation","src":"2567:215:67","text":"@notice Which asset to use as a base for the returned PT\n price. Can be either a standardized yield token (SY), in\n this case PT/SY price is returned, or the Pendle\n market's asset directly."},"id":6866,"members":[{"id":6864,"name":"PT_TO_ASSET","nameLocation":"2811:11:67","nodeType":"EnumValue","src":"2811:11:67"},{"id":6865,"name":"PT_TO_SY","nameLocation":"2832:8:67","nodeType":"EnumValue","src":"2832:8:67"}],"name":"RateKind","nameLocation":"2792:8:67","nodeType":"EnumDefinition","src":"2787:59:67"},{"constant":false,"documentation":{"id":6867,"nodeType":"StructuredDocumentation","src":"2852:36:67","text":"@notice Address of the PT oracle"},"functionSelector":"809d7b31","id":6870,"mutability":"immutable","name":"PT_ORACLE","nameLocation":"2926:9:67","nodeType":"VariableDeclaration","scope":7023,"src":"2893:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"},"typeName":{"id":6869,"nodeType":"UserDefinedTypeName","pathNode":{"id":6868,"name":"IPendlePtOracle","nameLocations":["2893:15:67"],"nodeType":"IdentifierPath","referencedDeclaration":5042,"src":"2893:15:67"},"referencedDeclaration":5042,"src":"2893:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"visibility":"public"},{"constant":false,"documentation":{"id":6871,"nodeType":"StructuredDocumentation","src":"2942:96:67","text":"@notice Whether to use PT/SY (standardized yield token) rate\n or PT/market asset rate"},"functionSelector":"02125d09","id":6874,"mutability":"immutable","name":"RATE_KIND","nameLocation":"3069:9:67","nodeType":"VariableDeclaration","scope":7023,"src":"3043:35:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"},"typeName":{"id":6873,"nodeType":"UserDefinedTypeName","pathNode":{"id":6872,"name":"RateKind","nameLocations":["3043:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":6866,"src":"3043:8:67"},"referencedDeclaration":6866,"src":"3043:8:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"visibility":"public"},{"constant":false,"documentation":{"id":6875,"nodeType":"StructuredDocumentation","src":"3085:33:67","text":"@notice Address of the market"},"functionSelector":"f46f16c2","id":6877,"mutability":"immutable","name":"MARKET","nameLocation":"3148:6:67","nodeType":"VariableDeclaration","scope":7023,"src":"3123:31:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6876,"name":"address","nodeType":"ElementaryTypeName","src":"3123:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":6878,"nodeType":"StructuredDocumentation","src":"3161:40:67","text":"@notice Twap duration for the oracle"},"functionSelector":"879ac8f8","id":6880,"mutability":"immutable","name":"TWAP_DURATION","nameLocation":"3230:13:67","nodeType":"VariableDeclaration","scope":7023,"src":"3206:37:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6879,"name":"uint32","nodeType":"ElementaryTypeName","src":"3206:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"public"},{"constant":false,"documentation":{"id":6881,"nodeType":"StructuredDocumentation","src":"3250:177:67","text":"@notice Decimals of the underlying token\n @dev We make an assumption that the underlying decimals will\n not change throughout the lifetime of the Pendle market"},"functionSelector":"3dae7c22","id":6883,"mutability":"immutable","name":"UNDERLYING_DECIMALS","nameLocation":"3455:19:67","nodeType":"VariableDeclaration","scope":7023,"src":"3432:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6882,"name":"uint8","nodeType":"ElementaryTypeName","src":"3432:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"documentation":{"id":6884,"nodeType":"StructuredDocumentation","src":"3481:45:67","text":"@notice Thrown if the duration is invalid"},"errorSelector":"76166401","id":6886,"name":"InvalidDuration","nameLocation":"3537:15:67","nodeType":"ErrorDefinition","parameters":{"id":6885,"nodeType":"ParameterList","parameters":[],"src":"3552:2:67"},"src":"3531:24:67"},{"body":{"id":6977,"nodeType":"Block","src":"4154:678:67","statements":[{"expression":{"arguments":[{"expression":{"id":6914,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4185:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4192:6:67","memberName":"market","nodeType":"MemberAccess","referencedDeclaration":6824,"src":"4185:13:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6913,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"4164:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":6916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4164:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6917,"nodeType":"ExpressionStatement","src":"4164:35:67"},{"expression":{"arguments":[{"expression":{"id":6919,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4230:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4237:8:67","memberName":"ptOracle","nodeType":"MemberAccess","referencedDeclaration":6827,"src":"4230:15:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6918,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"4209:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4209:37:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6922,"nodeType":"ExpressionStatement","src":"4209:37:67"},{"expression":{"arguments":[{"expression":{"id":6924,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4275:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4282:12:67","memberName":"twapDuration","nodeType":"MemberAccess","referencedDeclaration":6843,"src":"4275:19:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":6923,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"4256:18:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4256:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6927,"nodeType":"ExpressionStatement","src":"4256:39:67"},{"expression":{"id":6931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6928,"name":"MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"4306:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6929,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4315:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4322:6:67","memberName":"market","nodeType":"MemberAccess","referencedDeclaration":6824,"src":"4315:13:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4306:22:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6932,"nodeType":"ExpressionStatement","src":"4306:22:67"},{"expression":{"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6933,"name":"PT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"4338:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":6935,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4366:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4373:8:67","memberName":"ptOracle","nodeType":"MemberAccess","referencedDeclaration":6827,"src":"4366:15:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6934,"name":"IPendlePtOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5042,"src":"4350:15:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPendlePtOracle_$5042_$","typeString":"type(contract IPendlePtOracle)"}},"id":6937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4350:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"src":"4338:44:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"id":6939,"nodeType":"ExpressionStatement","src":"4338:44:67"},{"expression":{"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6940,"name":"RATE_KIND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"4392:9:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6941,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4404:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4411:8:67","memberName":"rateKind","nodeType":"MemberAccess","referencedDeclaration":6831,"src":"4404:15:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"src":"4392:27:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"id":6944,"nodeType":"ExpressionStatement","src":"4392:27:67"},{"expression":{"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6945,"name":"TWAP_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"4429:13:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6946,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4445:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4452:12:67","memberName":"twapDuration","nodeType":"MemberAccess","referencedDeclaration":6843,"src":"4445:19:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4429:35:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6949,"nodeType":"ExpressionStatement","src":"4429:35:67"},{"expression":{"id":6956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6950,"name":"UNDERLYING_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6883,"src":"4474:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6952,"name":"UNDERLYING_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"4511:16:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6951,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"4496:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":6953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4496:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4529:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"4496:41:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4496:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4474:65:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6957,"nodeType":"ExpressionStatement","src":"4474:65:67"},{"assignments":[6959,null,6961],"declarations":[{"constant":false,"id":6959,"mutability":"mutable","name":"increaseCardinalityRequired","nameLocation":"4556:27:67","nodeType":"VariableDeclaration","scope":6977,"src":"4551:32:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6958,"name":"bool","nodeType":"ElementaryTypeName","src":"4551:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null,{"constant":false,"id":6961,"mutability":"mutable","name":"oldestObservationSatisfied","nameLocation":"4592:26:67","nodeType":"VariableDeclaration","scope":6977,"src":"4587:31:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6960,"name":"bool","nodeType":"ElementaryTypeName","src":"4587:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6967,"initialValue":{"arguments":[{"id":6964,"name":"MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"4660:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6965,"name":"TWAP_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"4680:13:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":6962,"name":"PT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"4622:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"id":6963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4632:14:67","memberName":"getOracleState","nodeType":"MemberAccess","referencedDeclaration":5041,"src":"4622:24:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint32_$returns$_t_bool_$_t_uint16_$_t_bool_$","typeString":"function (address,uint32) view external returns (bool,uint16,bool)"}},"id":6966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4622:81:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint16_$_t_bool_$","typeString":"tuple(bool,uint16,bool)"}},"nodeType":"VariableDeclarationStatement","src":"4550:153:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6968,"name":"increaseCardinalityRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6959,"src":"4717:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4748:27:67","subExpression":{"id":6969,"name":"oldestObservationSatisfied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"4749:26:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4717:58:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6976,"nodeType":"IfStatement","src":"4713:113:67","trueBody":{"id":6975,"nodeType":"Block","src":"4777:49:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6972,"name":"InvalidDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"4798:15:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4798:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6974,"nodeType":"RevertStatement","src":"4791:24:67"}]}}]},"documentation":{"id":6887,"nodeType":"StructuredDocumentation","src":"3561:142:67","text":" @notice Constructor for the implementation contract.\n @custom:error InvalidDuration Thrown if the duration is invalid"},"id":6978,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":6893,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3810:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3817:7:67","memberName":"ptToken","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"3810:14:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6895,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3838:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3845:15:67","memberName":"underlyingToken","nodeType":"MemberAccess","referencedDeclaration":6837,"src":"3838:22:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6897,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3874:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3881:15:67","memberName":"resilientOracle","nodeType":"MemberAccess","referencedDeclaration":6840,"src":"3874:22:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6899,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3910:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3917:16:67","memberName":"annualGrowthRate","nodeType":"MemberAccess","referencedDeclaration":6846,"src":"3910:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6901,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3947:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3954:16:67","memberName":"snapshotInterval","nodeType":"MemberAccess","referencedDeclaration":6849,"src":"3947:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6903,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"3984:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3991:30:67","memberName":"initialSnapshotMaxExchangeRate","nodeType":"MemberAccess","referencedDeclaration":6852,"src":"3984:37:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6905,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4035:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4042:24:67","memberName":"initialSnapshotTimestamp","nodeType":"MemberAccess","referencedDeclaration":6855,"src":"4035:31:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6907,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4080:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4087:20:67","memberName":"accessControlManager","nodeType":"MemberAccess","referencedDeclaration":6858,"src":"4080:27:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6909,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4121:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams memory"}},"id":6910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4128:11:67","memberName":"snapshotGap","nodeType":"MemberAccess","referencedDeclaration":6861,"src":"4121:18:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6911,"kind":"baseConstructorSpecifier","modifierName":{"id":6892,"name":"CorrelatedTokenOracle","nameLocations":["3775:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"3775:21:67"},"nodeType":"ModifierInvocation","src":"3775:374:67"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6890,"mutability":"mutable","name":"params","nameLocation":"3754:6:67","nodeType":"VariableDeclaration","scope":6978,"src":"3729:31:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_memory_ptr","typeString":"struct PendleOracle.ConstructorParams"},"typeName":{"id":6889,"nodeType":"UserDefinedTypeName","pathNode":{"id":6888,"name":"ConstructorParams","nameLocations":["3729:17:67"],"nodeType":"IdentifierPath","referencedDeclaration":6862,"src":"3729:17:67"},"referencedDeclaration":6862,"src":"3729:17:67","typeDescriptions":{"typeIdentifier":"t_struct$_ConstructorParams_$6862_storage_ptr","typeString":"struct PendleOracle.ConstructorParams"}},"visibility":"internal"}],"src":"3719:47:67"},"returnParameters":{"id":6912,"nodeType":"ParameterList","parameters":[],"src":"4154:0:67"},"scope":7023,"src":"3708:1124:67","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7021,"nodeType":"Block","src":"5189:299:67","statements":[{"assignments":[6986],"declarations":[{"constant":false,"id":6986,"mutability":"mutable","name":"rate","nameLocation":"5207:4:67","nodeType":"VariableDeclaration","scope":7021,"src":"5199:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6985,"name":"uint256","nodeType":"ElementaryTypeName","src":"5199:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6987,"nodeType":"VariableDeclarationStatement","src":"5199:12:67"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"},"id":6991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6988,"name":"RATE_KIND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"5225:9:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6989,"name":"RateKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"5238:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RateKind_$6866_$","typeString":"type(enum PendleOracle.RateKind)"}},"id":6990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5247:8:67","memberName":"PT_TO_SY","nodeType":"MemberAccess","referencedDeclaration":6865,"src":"5238:17:67","typeDescriptions":{"typeIdentifier":"t_enum$_RateKind_$6866","typeString":"enum PendleOracle.RateKind"}},"src":"5225:30:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7009,"nodeType":"Block","src":"5341:81:67","statements":[{"expression":{"id":7007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7001,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"5355:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7004,"name":"MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"5389:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7005,"name":"TWAP_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"5397:13:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":7002,"name":"PT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"5362:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:16:67","memberName":"getPtToAssetRate","nodeType":"MemberAccess","referencedDeclaration":5019,"src":"5362:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint32) view external returns (uint256)"}},"id":7006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5355:56:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7008,"nodeType":"ExpressionStatement","src":"5355:56:67"}]},"id":7010,"nodeType":"IfStatement","src":"5221:201:67","trueBody":{"id":7000,"nodeType":"Block","src":"5257:78:67","statements":[{"expression":{"id":6998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6992,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"5271:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6995,"name":"MARKET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"5302:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6996,"name":"TWAP_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"5310:13:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":6993,"name":"PT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"5278:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IPendlePtOracle_$5042","typeString":"contract IPendlePtOracle"}},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:13:67","memberName":"getPtToSyRate","nodeType":"MemberAccess","referencedDeclaration":5028,"src":"5278:23:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint32) view external returns (uint256)"}},"id":6997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5278:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:53:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6999,"nodeType":"ExpressionStatement","src":"5271:53:67"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7012,"name":"UNDERLYING_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6883,"src":"5446:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5440:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7014,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5439:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7015,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"5469:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5439:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5438:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":7018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5477:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5438:43:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6984,"id":7020,"nodeType":"Return","src":"5431:50:67"}]},"documentation":{"id":6979,"nodeType":"StructuredDocumentation","src":"4838:276:67","text":"@notice Fetches the amount of underlying token for 1 PT\n @return amount The amount of underlying token (either the market's asset\n or the yield token) for 1 PT, adjusted for decimals such that the result\n has the same precision as the underlying token"},"functionSelector":"abb85613","id":7022,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"5128:19:67","nodeType":"FunctionDefinition","overrides":{"id":6981,"nodeType":"OverrideSpecifier","overrides":[],"src":"5162:8:67"},"parameters":{"id":6980,"nodeType":"ParameterList","parameters":[],"src":"5147:2:67"},"returnParameters":{"id":6984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7022,"src":"5180:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6982,"name":"uint256","nodeType":"ElementaryTypeName","src":"5180:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5179:9:67"},"scope":7023,"src":"5119:369:67","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7024,"src":"1316:4174:67","usedErrors":[3618,3621,6886,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:5450:67"}},"contracts/oracles/SFraxOracle.sol":{"id":68,"ast":{"absolutePath":"contracts/oracles/SFraxOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"ISFrax":[5057],"SFraxOracle":[7084]},"id":7085,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7025,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:68"},{"absolutePath":"contracts/interfaces/ISFrax.sol","file":"../interfaces/ISFrax.sol","id":7027,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7085,"sourceUnit":5058,"src":"66:50:68","symbolAliases":[{"foreign":{"id":7026,"name":"ISFrax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"75:6:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7029,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7085,"sourceUnit":8612,"src":"117:75:68","symbolAliases":[{"foreign":{"id":7028,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"126:21:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7031,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7085,"sourceUnit":3614,"src":"193:86:68","symbolAliases":[{"foreign":{"id":7030,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"202:9:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7033,"name":"CorrelatedTokenOracle","nameLocations":["402:21:68"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"402:21:68"},"id":7034,"nodeType":"InheritanceSpecifier","src":"402:21:68"}],"canonicalName":"SFraxOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7032,"nodeType":"StructuredDocumentation","src":"281:96:68","text":" @title SFraxOracle\n @author Venus\n @notice This oracle fetches the price of sFrax"},"fullyImplemented":true,"id":7084,"linearizedBaseContracts":[7084,8611,4968,5140],"name":"SFraxOracle","nameLocation":"387:11:68","nodeType":"ContractDefinition","nodes":[{"body":{"id":7067,"nodeType":"Block","src":"1127:2:68","statements":[]},"documentation":{"id":7035,"nodeType":"StructuredDocumentation","src":"430:56:68","text":"@notice Constructor for the implementation contract."},"id":7068,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7056,"name":"sFrax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7037,"src":"857:5:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7057,"name":"frax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7039,"src":"876:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7058,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7041,"src":"894:15:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7059,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"923:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7060,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7045,"src":"953:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7061,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7047,"src":"984:30:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7062,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7049,"src":"1028:24:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7063,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"1066:20:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7064,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"1100:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7065,"kind":"baseConstructorSpecifier","modifierName":{"id":7055,"name":"CorrelatedTokenOracle","nameLocations":["822:21:68"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"822:21:68"},"nodeType":"ModifierInvocation","src":"822:300:68"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7037,"mutability":"mutable","name":"sFrax","nameLocation":"520:5:68","nodeType":"VariableDeclaration","scope":7068,"src":"512:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7036,"name":"address","nodeType":"ElementaryTypeName","src":"512:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7039,"mutability":"mutable","name":"frax","nameLocation":"543:4:68","nodeType":"VariableDeclaration","scope":7068,"src":"535:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7038,"name":"address","nodeType":"ElementaryTypeName","src":"535:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7041,"mutability":"mutable","name":"resilientOracle","nameLocation":"565:15:68","nodeType":"VariableDeclaration","scope":7068,"src":"557:23:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7040,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7043,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"598:16:68","nodeType":"VariableDeclaration","scope":7068,"src":"590:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7042,"name":"uint256","nodeType":"ElementaryTypeName","src":"590:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"632:17:68","nodeType":"VariableDeclaration","scope":7068,"src":"624:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7044,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7047,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"667:30:68","nodeType":"VariableDeclaration","scope":7068,"src":"659:38:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7046,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7049,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"715:24:68","nodeType":"VariableDeclaration","scope":7068,"src":"707:32:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7048,"name":"uint256","nodeType":"ElementaryTypeName","src":"707:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7051,"mutability":"mutable","name":"accessControlManager","nameLocation":"757:20:68","nodeType":"VariableDeclaration","scope":7068,"src":"749:28:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7050,"name":"address","nodeType":"ElementaryTypeName","src":"749:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7053,"mutability":"mutable","name":"_snapshotGap","nameLocation":"795:12:68","nodeType":"VariableDeclaration","scope":7068,"src":"787:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7052,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"502:311:68"},"returnParameters":{"id":7066,"nodeType":"ParameterList","parameters":[],"src":"1127:0:68"},"scope":7084,"src":"491:638:68","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7082,"nodeType":"Block","src":"1326:75:68","statements":[{"expression":{"arguments":[{"id":7079,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1384:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7076,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1350:16:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7075,"name":"ISFrax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"1343:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISFrax_$5057_$","typeString":"type(contract ISFrax)"}},"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISFrax_$5057","typeString":"contract ISFrax"}},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1368:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5051,"src":"1343:40:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7074,"id":7081,"nodeType":"Return","src":"1336:58:68"}]},"documentation":{"id":7069,"nodeType":"StructuredDocumentation","src":"1135:116:68","text":" @notice Fetches the amount of FRAX for 1 sFrax\n @return amount The amount of FRAX for sFrax"},"functionSelector":"abb85613","id":7083,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1265:19:68","nodeType":"FunctionDefinition","overrides":{"id":7071,"nodeType":"OverrideSpecifier","overrides":[],"src":"1299:8:68"},"parameters":{"id":7070,"nodeType":"ParameterList","parameters":[],"src":"1284:2:68"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7083,"src":"1317:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7072,"name":"uint256","nodeType":"ElementaryTypeName","src":"1317:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1316:9:68"},"scope":7084,"src":"1256:145:68","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7085,"src":"378:1025:68","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1363:68"}},"contracts/oracles/SFrxETHOracle.sol":{"id":69,"ast":{"absolutePath":"contracts/oracles/SFrxETHOracle.sol","exportedSymbols":{"AccessControlledV8":[3554],"EXP_SCALE":[3605],"ISfrxEthFraxOracle":[5069],"OracleInterface":[5140],"SFrxETHOracle":[7286],"ensureNonzeroAddress":[3639],"ensureNonzeroValue":[3654]},"id":7287,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7086,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:69"},{"absolutePath":"contracts/interfaces/ISfrxEthFraxOracle.sol","file":"../interfaces/ISfrxEthFraxOracle.sol","id":7088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7287,"sourceUnit":5070,"src":"66:74:69","symbolAliases":[{"foreign":{"id":7087,"name":"ISfrxEthFraxOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"75:18:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7091,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7287,"sourceUnit":3655,"src":"141:118:69","symbolAliases":[{"foreign":{"id":7089,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"150:20:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7090,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"172:18:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7093,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7287,"sourceUnit":3614,"src":"260:86:69","symbolAliases":[{"foreign":{"id":7092,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"269:9:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol","id":7095,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7287,"sourceUnit":3555,"src":"347:117:69","symbolAliases":[{"foreign":{"id":7094,"name":"AccessControlledV8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"356:18:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":7097,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7287,"sourceUnit":5173,"src":"465:68:69","symbolAliases":[{"foreign":{"id":7096,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"474:15:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7099,"name":"AccessControlledV8","nameLocations":["662:18:69"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"662:18:69"},"id":7100,"nodeType":"InheritanceSpecifier","src":"662:18:69"},{"baseName":{"id":7101,"name":"OracleInterface","nameLocations":["682:15:69"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"682:15:69"},"id":7102,"nodeType":"InheritanceSpecifier","src":"682:15:69"}],"canonicalName":"SFrxETHOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7098,"nodeType":"StructuredDocumentation","src":"535:100:69","text":" @title SFrxETHOracle\n @author Venus\n @notice This oracle fetches the price of sfrxETH"},"fullyImplemented":true,"id":7286,"linearizedBaseContracts":[7286,5140,3554,209,342,1020,511],"name":"SFrxETHOracle","nameLocation":"645:13:69","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7103,"nodeType":"StructuredDocumentation","src":"704:106:69","text":"@notice Address of SfrxEthFraxOracle\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"127cac45","id":7106,"mutability":"immutable","name":"SFRXETH_FRAX_ORACLE","nameLocation":"851:19:69","nodeType":"VariableDeclaration","scope":7286,"src":"815:55:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"},"typeName":{"id":7105,"nodeType":"UserDefinedTypeName","pathNode":{"id":7104,"name":"ISfrxEthFraxOracle","nameLocations":["815:18:69"],"nodeType":"IdentifierPath","referencedDeclaration":5069,"src":"815:18:69"},"referencedDeclaration":5069,"src":"815:18:69","typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"}},"visibility":"public"},{"constant":false,"documentation":{"id":7107,"nodeType":"StructuredDocumentation","src":"877:96:69","text":"@notice Address of sfrxETH\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"35da603d","id":7109,"mutability":"immutable","name":"SFRXETH","nameLocation":"1003:7:69","nodeType":"VariableDeclaration","scope":7286,"src":"978:32:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7108,"name":"address","nodeType":"ElementaryTypeName","src":"978:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":7110,"nodeType":"StructuredDocumentation","src":"1017:44:69","text":"@notice Maximum allowed price difference"},"functionSelector":"9fd1944f","id":7112,"mutability":"mutable","name":"maxAllowedPriceDifference","nameLocation":"1081:25:69","nodeType":"VariableDeclaration","scope":7286,"src":"1066:40:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1066:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":7113,"nodeType":"StructuredDocumentation","src":"1113:70:69","text":"@notice Emits when the maximum allowed price difference is updated"},"eventSelector":"8d4d923222e4a17f030a7f3fe695e9e6c13b437df4b3b48c2332f584395aba90","id":7119,"name":"MaxAllowedPriceDifferenceUpdated","nameLocation":"1194:32:69","nodeType":"EventDefinition","parameters":{"id":7118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7115,"indexed":false,"mutability":"mutable","name":"oldMaxAllowedPriceDifference","nameLocation":"1235:28:69","nodeType":"VariableDeclaration","scope":7119,"src":"1227:36:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1227:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7117,"indexed":false,"mutability":"mutable","name":"newMaxAllowedPriceDifference","nameLocation":"1273:28:69","nodeType":"VariableDeclaration","scope":7119,"src":"1265:36:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1265:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1226:76:69"},"src":"1188:115:69"},{"documentation":{"id":7120,"nodeType":"StructuredDocumentation","src":"1309:47:69","text":"@notice Thrown if the price data is invalid"},"errorSelector":"a40e3291","id":7122,"name":"BadPriceData","nameLocation":"1367:12:69","nodeType":"ErrorDefinition","parameters":{"id":7121,"nodeType":"ParameterList","parameters":[],"src":"1379:2:69"},"src":"1361:21:69"},{"documentation":{"id":7123,"nodeType":"StructuredDocumentation","src":"1388:68:69","text":"@notice Thrown if the price difference exceeds the allowed limit"},"errorSelector":"501973da","id":7125,"name":"PriceDifferenceExceeded","nameLocation":"1467:23:69","nodeType":"ErrorDefinition","parameters":{"id":7124,"nodeType":"ParameterList","parameters":[],"src":"1490:2:69"},"src":"1461:32:69"},{"documentation":{"id":7126,"nodeType":"StructuredDocumentation","src":"1499:50:69","text":"@notice Thrown if the token address is invalid"},"errorSelector":"1eb00b06","id":7128,"name":"InvalidTokenAddress","nameLocation":"1560:19:69","nodeType":"ErrorDefinition","parameters":{"id":7127,"nodeType":"ParameterList","parameters":[],"src":"1579:2:69"},"src":"1554:28:69"},{"body":{"id":7157,"nodeType":"Block","src":"1875:229:69","statements":[{"expression":{"arguments":[{"id":7137,"name":"_sfrxEthFraxOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7131,"src":"1906:18:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7136,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1885:20:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1885:40:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7139,"nodeType":"ExpressionStatement","src":"1885:40:69"},{"expression":{"arguments":[{"id":7141,"name":"_sfrxETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7133,"src":"1956:8:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7140,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1935:20:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:30:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7143,"nodeType":"ExpressionStatement","src":"1935:30:69"},{"expression":{"id":7148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7144,"name":"SFRXETH_FRAX_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7106,"src":"1976:19:69","typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7146,"name":"_sfrxEthFraxOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7131,"src":"2017:18:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7145,"name":"ISfrxEthFraxOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"1998:18:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISfrxEthFraxOracle_$5069_$","typeString":"type(contract ISfrxEthFraxOracle)"}},"id":7147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1998:38:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"}},"src":"1976:60:69","typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"}},"id":7149,"nodeType":"ExpressionStatement","src":"1976:60:69"},{"expression":{"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7150,"name":"SFRXETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7109,"src":"2046:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7151,"name":"_sfrxETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7133,"src":"2056:8:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2046:18:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7153,"nodeType":"ExpressionStatement","src":"2046:18:69"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7154,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"2075:20:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2075:22:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7156,"nodeType":"ExpressionStatement","src":"2075:22:69"}]},"documentation":{"id":7129,"nodeType":"StructuredDocumentation","src":"1588:224:69","text":"@notice Constructor for the implementation contract.\n @custom:oz-upgrades-unsafe-allow constructor\n @custom:error ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address"},"id":7158,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7131,"mutability":"mutable","name":"_sfrxEthFraxOracle","nameLocation":"1837:18:69","nodeType":"VariableDeclaration","scope":7158,"src":"1829:26:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7130,"name":"address","nodeType":"ElementaryTypeName","src":"1829:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7133,"mutability":"mutable","name":"_sfrxETH","nameLocation":"1865:8:69","nodeType":"VariableDeclaration","scope":7158,"src":"1857:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7132,"name":"address","nodeType":"ElementaryTypeName","src":"1857:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1828:46:69"},"returnParameters":{"id":7135,"nodeType":"ParameterList","parameters":[],"src":"1875:0:69"},"scope":7286,"src":"1817:287:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7180,"nodeType":"Block","src":"2507:167:69","statements":[{"expression":{"arguments":[{"id":7169,"name":"_maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"2536:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7168,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"2517:18:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:46:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7171,"nodeType":"ExpressionStatement","src":"2517:46:69"},{"expression":{"arguments":[{"id":7173,"name":"_acm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7161,"src":"2598:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7172,"name":"__AccessControlled_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"2574:23:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2574:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7175,"nodeType":"ExpressionStatement","src":"2574:29:69"},{"expression":{"id":7178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7176,"name":"maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"2613:25:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7177,"name":"_maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7163,"src":"2641:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2613:54:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7179,"nodeType":"ExpressionStatement","src":"2613:54:69"}]},"documentation":{"id":7159,"nodeType":"StructuredDocumentation","src":"2110:301:69","text":" @notice Sets the contracts required to fetch prices\n @param _acm Address of the access control manager contract\n @param _maxAllowedPriceDifference Maximum allowed price difference\n @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero"},"functionSelector":"cd6dc687","id":7181,"implemented":true,"kind":"function","modifiers":[{"id":7166,"kind":"modifierInvocation","modifierName":{"id":7165,"name":"initializer","nameLocations":["2495:11:69"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"2495:11:69"},"nodeType":"ModifierInvocation","src":"2495:11:69"}],"name":"initialize","nameLocation":"2425:10:69","nodeType":"FunctionDefinition","parameters":{"id":7164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7161,"mutability":"mutable","name":"_acm","nameLocation":"2444:4:69","nodeType":"VariableDeclaration","scope":7181,"src":"2436:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7160,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7163,"mutability":"mutable","name":"_maxAllowedPriceDifference","nameLocation":"2458:26:69","nodeType":"VariableDeclaration","scope":7181,"src":"2450:34:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7162,"name":"uint256","nodeType":"ElementaryTypeName","src":"2450:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2435:50:69"},"returnParameters":{"id":7167,"nodeType":"ParameterList","parameters":[],"src":"2507:0:69"},"scope":7286,"src":"2416:258:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7204,"nodeType":"Block","src":"3001:300:69","statements":[{"expression":{"arguments":[{"hexValue":"7365744d6178416c6c6f7765645072696365446966666572656e63652875696e7432353629","id":7188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3031:39:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_d54459507b3614ba0c1def9884af797c23c521b900a79ceea792d32666919127","typeString":"literal_string \"setMaxAllowedPriceDifference(uint256)\""},"value":"setMaxAllowedPriceDifference(uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d54459507b3614ba0c1def9884af797c23c521b900a79ceea792d32666919127","typeString":"literal_string \"setMaxAllowedPriceDifference(uint256)\""}],"id":7187,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"3011:19:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3011:60:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7190,"nodeType":"ExpressionStatement","src":"3011:60:69"},{"expression":{"arguments":[{"id":7192,"name":"_maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"3100:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7191,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"3081:18:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3081:46:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7194,"nodeType":"ExpressionStatement","src":"3081:46:69"},{"eventCall":{"arguments":[{"id":7196,"name":"maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"3176:25:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7197,"name":"_maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"3203:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7195,"name":"MaxAllowedPriceDifferenceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7119,"src":"3143:32:69","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3143:87:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7199,"nodeType":"EmitStatement","src":"3138:92:69"},{"expression":{"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7200,"name":"maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"3240:25:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7201,"name":"_maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"3268:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3240:54:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7203,"nodeType":"ExpressionStatement","src":"3240:54:69"}]},"documentation":{"id":7182,"nodeType":"StructuredDocumentation","src":"2680:233:69","text":" @notice Sets the maximum allowed price difference\n @param _maxAllowedPriceDifference Maximum allowed price difference\n @custom:error ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero"},"functionSelector":"d5445950","id":7205,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxAllowedPriceDifference","nameLocation":"2927:28:69","nodeType":"FunctionDefinition","parameters":{"id":7185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7184,"mutability":"mutable","name":"_maxAllowedPriceDifference","nameLocation":"2964:26:69","nodeType":"VariableDeclaration","scope":7205,"src":"2956:34:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2956:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2955:36:69"},"returnParameters":{"id":7186,"nodeType":"ParameterList","parameters":[],"src":"3001:0:69"},"scope":7286,"src":"2918:383:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":7284,"nodeType":"Block","src":"3957:758:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7213,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7208,"src":"3971:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7214,"name":"SFRXETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7109,"src":"3980:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3971:16:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7219,"nodeType":"IfStatement","src":"3967:50:69","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7216,"name":"InvalidTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"3996:19:69","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3996:21:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7218,"nodeType":"RevertStatement","src":"3989:28:69"}},{"assignments":[7221,7223,7225],"declarations":[{"constant":false,"id":7221,"mutability":"mutable","name":"isBadData","nameLocation":"4034:9:69","nodeType":"VariableDeclaration","scope":7284,"src":"4029:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7220,"name":"bool","nodeType":"ElementaryTypeName","src":"4029:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7223,"mutability":"mutable","name":"priceLow","nameLocation":"4053:8:69","nodeType":"VariableDeclaration","scope":7284,"src":"4045:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7222,"name":"uint256","nodeType":"ElementaryTypeName","src":"4045:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7225,"mutability":"mutable","name":"priceHigh","nameLocation":"4071:9:69","nodeType":"VariableDeclaration","scope":7284,"src":"4063:17:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4063:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7229,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7226,"name":"SFRXETH_FRAX_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7106,"src":"4084:19:69","typeDescriptions":{"typeIdentifier":"t_contract$_ISfrxEthFraxOracle_$5069","typeString":"contract ISfrxEthFraxOracle"}},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4104:9:69","memberName":"getPrices","nodeType":"MemberAccess","referencedDeclaration":5068,"src":"4084:29:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (bool,uint256,uint256)"}},"id":7228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4028:87:69"},{"condition":{"id":7230,"name":"isBadData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"4130:9:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7234,"nodeType":"IfStatement","src":"4126:36:69","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7231,"name":"BadPriceData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7122,"src":"4148:12:69","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4148:14:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7233,"nodeType":"RevertStatement","src":"4141:21:69"}},{"assignments":[7236],"declarations":[{"constant":false,"id":7236,"mutability":"mutable","name":"priceHighInUSD","nameLocation":"4215:14:69","nodeType":"VariableDeclaration","scope":7284,"src":"4207:22:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7235,"name":"uint256","nodeType":"ElementaryTypeName","src":"4207:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7243,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":7237,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"4233:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4246:1:69","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4233:14:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4232:16:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7241,"name":"priceLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7223,"src":"4251:8:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4232:27:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4207:52:69"},{"assignments":[7245],"declarations":[{"constant":false,"id":7245,"mutability":"mutable","name":"priceLowInUSD","nameLocation":"4277:13:69","nodeType":"VariableDeclaration","scope":7284,"src":"4269:21:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7244,"name":"uint256","nodeType":"ElementaryTypeName","src":"4269:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7252,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":7246,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"4294:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4307:1:69","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4294:14:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7249,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4293:16:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7250,"name":"priceHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7225,"src":"4312:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4293:28:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4269:52:69"},{"expression":{"arguments":[{"id":7254,"name":"priceHighInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"4351:14:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7253,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"4332:18:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4332:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7256,"nodeType":"ExpressionStatement","src":"4332:34:69"},{"expression":{"arguments":[{"id":7258,"name":"priceLowInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"4395:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7257,"name":"ensureNonzeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"4376:18:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4376:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7260,"nodeType":"ExpressionStatement","src":"4376:33:69"},{"assignments":[7262],"declarations":[{"constant":false,"id":7262,"mutability":"mutable","name":"difference","nameLocation":"4465:10:69","nodeType":"VariableDeclaration","scope":7284,"src":"4457:18:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7261,"name":"uint256","nodeType":"ElementaryTypeName","src":"4457:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7269,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7263,"name":"priceHighInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"4479:14:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7264,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"4496:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4479:26:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4478:28:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7267,"name":"priceLowInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"4509:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4478:44:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4457:65:69"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7270,"name":"difference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7262,"src":"4536:10:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7271,"name":"maxAllowedPriceDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"4549:25:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4536:38:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7276,"nodeType":"IfStatement","src":"4532:76:69","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7273,"name":"PriceDifferenceExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7125,"src":"4583:23:69","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:25:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7275,"nodeType":"RevertStatement","src":"4576:32:69"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7277,"name":"priceHighInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"4673:14:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7278,"name":"priceLowInUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"4690:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4673:30:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7280,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4672:32:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":7281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4707:1:69","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4672:36:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7212,"id":7283,"nodeType":"Return","src":"4665:43:69"}]},"documentation":{"id":7206,"nodeType":"StructuredDocumentation","src":"3307:580:69","text":" @notice Fetches the USD price of sfrxETH\n @param asset Address of the sfrxETH token\n @return price The price scaled by 1e18\n @custom:error InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)\n @custom:error BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad data\n @custom:error ZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zero\n @custom:error PriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`"},"functionSelector":"41976e09","id":7285,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"3901:8:69","nodeType":"FunctionDefinition","parameters":{"id":7209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7208,"mutability":"mutable","name":"asset","nameLocation":"3918:5:69","nodeType":"VariableDeclaration","scope":7285,"src":"3910:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7207,"name":"address","nodeType":"ElementaryTypeName","src":"3910:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3909:15:69"},"returnParameters":{"id":7212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7285,"src":"3948:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7210,"name":"uint256","nodeType":"ElementaryTypeName","src":"3948:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3947:9:69"},"scope":7286,"src":"3892:823:69","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7287,"src":"636:4081:69","usedErrors":[3435,3618,3621,7122,7125,7128],"usedEvents":[120,227,357,3426,7119]}],"src":"41:4677:69"}},"contracts/oracles/SequencerChainlinkOracle.sol":{"id":70,"ast":{"absolutePath":"contracts/oracles/SequencerChainlinkOracle.sol","exportedSymbols":{"AggregatorV3Interface":[102],"ChainlinkOracle":[6551],"SequencerChainlinkOracle":[7383]},"id":7384,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7288,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"32:23:70"},{"absolutePath":"contracts/oracles/ChainlinkOracle.sol","file":"./ChainlinkOracle.sol","id":7290,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7384,"sourceUnit":6552,"src":"57:56:70","symbolAliases":[{"foreign":{"id":7289,"name":"ChainlinkOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"66:15:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","file":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","id":7292,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7384,"sourceUnit":103,"src":"114:107:70","symbolAliases":[{"foreign":{"id":7291,"name":"AggregatorV3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"123:21:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7294,"name":"ChainlinkOracle","nameLocations":["386:15:70"],"nodeType":"IdentifierPath","referencedDeclaration":6551,"src":"386:15:70"},"id":7295,"nodeType":"InheritanceSpecifier","src":"386:15:70"}],"canonicalName":"SequencerChainlinkOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7293,"nodeType":"StructuredDocumentation","src":"223:125:70","text":"@title Sequencer Chain Link Oracle\n@notice Oracle to fetch price using chainlink oracles on L2s with sequencer"},"fullyImplemented":true,"id":7383,"linearizedBaseContracts":[7383,6551,5140,3554,209,342,1020,511],"name":"SequencerChainlinkOracle","nameLocation":"358:24:70","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7296,"nodeType":"StructuredDocumentation","src":"408:95:70","text":"@notice L2 Sequencer feed\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"5c1bba38","id":7299,"mutability":"immutable","name":"sequencer","nameLocation":"547:9:70","nodeType":"VariableDeclaration","scope":7383,"src":"508:48:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"},"typeName":{"id":7298,"nodeType":"UserDefinedTypeName","pathNode":{"id":7297,"name":"AggregatorV3Interface","nameLocations":["508:21:70"],"nodeType":"IdentifierPath","referencedDeclaration":102,"src":"508:21:70"},"referencedDeclaration":102,"src":"508:21:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"visibility":"public"},{"constant":true,"documentation":{"id":7300,"nodeType":"StructuredDocumentation","src":"563:37:70","text":"@notice L2 Sequencer grace period"},"functionSelector":"ed2f8603","id":7303,"mutability":"constant","name":"GRACE_PERIOD_TIME","nameLocation":"629:17:70","nodeType":"VariableDeclaration","scope":7383,"src":"605:48:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7301,"name":"uint256","nodeType":"ElementaryTypeName","src":"605:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33363030","id":7302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"649:4:70","typeDescriptions":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"value":"3600"},"visibility":"public"},{"body":{"id":7329,"nodeType":"Block","src":"868:108:70","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7315,"name":"_sequencer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"894:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}],"id":7314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"886:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7313,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:70","typeDescriptions":{}}},"id":7316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:19:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"917:1:70","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":7318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7317,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:70","typeDescriptions":{}}},"id":7320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:10:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"886:33:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7a65726f2061646472657373","id":7322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"921:14:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7","typeString":"literal_string \"zero address\""},"value":"zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7","typeString":"literal_string \"zero address\""}],"id":7312,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"878:7:70","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"878:58:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7324,"nodeType":"ExpressionStatement","src":"878:58:70"},{"expression":{"id":7327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7325,"name":"sequencer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7299,"src":"947:9:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7326,"name":"_sequencer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"959:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"src":"947:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"id":7328,"nodeType":"ExpressionStatement","src":"947:22:70"}]},"documentation":{"id":7304,"nodeType":"StructuredDocumentation","src":"660:139:70","text":"@notice Contract constructor\n@param _sequencer L2 sequencer\n@custom:oz-upgrades-unsafe-allow constructor"},"id":7330,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":7310,"kind":"baseConstructorSpecifier","modifierName":{"id":7309,"name":"ChainlinkOracle","nameLocations":["850:15:70"],"nodeType":"IdentifierPath","referencedDeclaration":6551,"src":"850:15:70"},"nodeType":"ModifierInvocation","src":"850:17:70"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"_sequencer","nameLocation":"838:10:70","nodeType":"VariableDeclaration","scope":7330,"src":"816:32:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"},"typeName":{"id":7306,"nodeType":"UserDefinedTypeName","pathNode":{"id":7305,"name":"AggregatorV3Interface","nameLocations":["816:21:70"],"nodeType":"IdentifierPath","referencedDeclaration":102,"src":"816:21:70"},"referencedDeclaration":102,"src":"816:21:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"visibility":"internal"}],"src":"815:34:70"},"returnParameters":{"id":7311,"nodeType":"ParameterList","parameters":[],"src":"868:0:70"},"scope":7383,"src":"804:172:70","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6407],"body":{"id":7352,"nodeType":"Block","src":"1087:115:70","statements":[{"condition":{"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1101:20:70","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7339,"name":"isSequencerActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7382,"src":"1102:17:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1102:19:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7346,"nodeType":"IfStatement","src":"1097:60:70","trueBody":{"expression":{"arguments":[{"hexValue":"4c322073657175656e63657220756e617661696c61626c65","id":7343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1130:26:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c14f51511b1ee04a4e6d8b2d65581316cad77df9fa9a3edbbef03645d922f0b","typeString":"literal_string \"L2 sequencer unavailable\""},"value":"L2 sequencer unavailable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7c14f51511b1ee04a4e6d8b2d65581316cad77df9fa9a3edbbef03645d922f0b","typeString":"literal_string \"L2 sequencer unavailable\""}],"id":7342,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1123:6:70","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1123:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7345,"nodeType":"ExpressionStatement","src":"1123:34:70"}},{"expression":{"arguments":[{"id":7349,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7333,"src":"1189:5:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7347,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1174:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SequencerChainlinkOracle_$7383_$","typeString":"type(contract super SequencerChainlinkOracle)"}},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1180:8:70","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":6407,"src":"1174:14:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1174:21:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7338,"id":7351,"nodeType":"Return","src":"1167:28:70"}]},"documentation":{"id":7331,"nodeType":"StructuredDocumentation","src":"982:31:70","text":"@inheritdoc ChainlinkOracle"},"functionSelector":"41976e09","id":7353,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"1027:8:70","nodeType":"FunctionDefinition","overrides":{"id":7335,"nodeType":"OverrideSpecifier","overrides":[],"src":"1063:8:70"},"parameters":{"id":7334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7333,"mutability":"mutable","name":"asset","nameLocation":"1044:5:70","nodeType":"VariableDeclaration","scope":7353,"src":"1036:13:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7332,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1035:15:70"},"returnParameters":{"id":7338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7353,"src":"1081:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7336,"name":"uint","nodeType":"ElementaryTypeName","src":"1081:4:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1080:6:70"},"scope":7383,"src":"1018:184:70","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":7381,"nodeType":"Block","src":"1266:426:70","statements":[{"assignments":[null,7359,7361,null,null],"declarations":[null,{"constant":false,"id":7359,"mutability":"mutable","name":"answer","nameLocation":"1513:6:70","nodeType":"VariableDeclaration","scope":7381,"src":"1506:13:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7358,"name":"int256","nodeType":"ElementaryTypeName","src":"1506:6:70","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7361,"mutability":"mutable","name":"startedAt","nameLocation":"1529:9:70","nodeType":"VariableDeclaration","scope":7381,"src":"1521:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7360,"name":"uint256","nodeType":"ElementaryTypeName","src":"1521:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":7365,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7362,"name":"sequencer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7299,"src":"1546:9:70","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV3Interface_$102","typeString":"contract AggregatorV3Interface"}},"id":7363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1556:15:70","memberName":"latestRoundData","nodeType":"MemberAccess","referencedDeclaration":101,"src":"1546:25:70","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function () view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1546:27:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"1503:70:70"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7366,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1587:5:70","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1593:9:70","memberName":"timestamp","nodeType":"MemberAccess","src":"1587:15:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7368,"name":"startedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"1605:9:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:27:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7370,"name":"GRACE_PERIOD_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"1618:17:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:48:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7372,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"1639:6:70","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":7373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1649:1:70","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1639:11:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1587:63:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7378,"nodeType":"IfStatement","src":"1583:81:70","trueBody":{"expression":{"hexValue":"66616c7365","id":7376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1659:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7357,"id":7377,"nodeType":"Return","src":"1652:12:70"}},{"expression":{"hexValue":"74727565","id":7379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1681:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7357,"id":7380,"nodeType":"Return","src":"1674:11:70"}]},"id":7382,"implemented":true,"kind":"function","modifiers":[],"name":"isSequencerActive","nameLocation":"1217:17:70","nodeType":"FunctionDefinition","parameters":{"id":7354,"nodeType":"ParameterList","parameters":[],"src":"1234:2:70"},"returnParameters":{"id":7357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7382,"src":"1260:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7355,"name":"bool","nodeType":"ElementaryTypeName","src":"1260:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1259:6:70"},"scope":7383,"src":"1208:484:70","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7384,"src":"349:1345:70","usedErrors":[3435],"usedEvents":[120,227,357,3426,6201,6210]}],"src":"32:1663:70"}},"contracts/oracles/SlisBNBOracle.sol":{"id":71,"ast":{"absolutePath":"contracts/oracles/SlisBNBOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"ISynclubStakeManager":[5104],"SlisBNBOracle":[7462],"ensureNonzeroAddress":[3639]},"id":7463,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7385,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:71"},{"absolutePath":"contracts/interfaces/ISynclubStakeManager.sol","file":"../interfaces/ISynclubStakeManager.sol","id":7387,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7463,"sourceUnit":5105,"src":"66:78:71","symbolAliases":[{"foreign":{"id":7386,"name":"ISynclubStakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"75:20:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7389,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7463,"sourceUnit":3655,"src":"145:98:71","symbolAliases":[{"foreign":{"id":7388,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"154:20:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7391,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7463,"sourceUnit":8612,"src":"244:75:71","symbolAliases":[{"foreign":{"id":7390,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"253:21:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7393,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7463,"sourceUnit":3614,"src":"320:86:71","symbolAliases":[{"foreign":{"id":7392,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"329:9:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7395,"name":"CorrelatedTokenOracle","nameLocations":["541:21:71"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"541:21:71"},"id":7396,"nodeType":"InheritanceSpecifier","src":"541:21:71"}],"canonicalName":"SlisBNBOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7394,"nodeType":"StructuredDocumentation","src":"408:106:71","text":" @title SlisBNBOracle\n @author Venus\n @notice This oracle fetches the price of slisBNB asset"},"fullyImplemented":true,"id":7462,"linearizedBaseContracts":[7462,8611,4968,5140],"name":"SlisBNBOracle","nameLocation":"524:13:71","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7397,"nodeType":"StructuredDocumentation","src":"569:55:71","text":"@notice This is used as token address of BNB on BSC"},"functionSelector":"a9534f8a","id":7400,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"653:17:71","nodeType":"VariableDeclaration","scope":7462,"src":"629:86:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7398,"name":"address","nodeType":"ElementaryTypeName","src":"629:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":7399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"673:42:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":false,"documentation":{"id":7401,"nodeType":"StructuredDocumentation","src":"722:35:71","text":"@notice Address of StakeManager"},"functionSelector":"7353847a","id":7404,"mutability":"immutable","name":"STAKE_MANAGER","nameLocation":"800:13:71","nodeType":"VariableDeclaration","scope":7462,"src":"762:51:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"},"typeName":{"id":7403,"nodeType":"UserDefinedTypeName","pathNode":{"id":7402,"name":"ISynclubStakeManager","nameLocations":["762:20:71"],"nodeType":"IdentifierPath","referencedDeclaration":5104,"src":"762:20:71"},"referencedDeclaration":5104,"src":"762:20:71","typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"}},"visibility":"public"},{"body":{"id":7447,"nodeType":"Block","src":"1542:111:71","statements":[{"expression":{"arguments":[{"id":7438,"name":"stakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"1573:12:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7437,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1552:20:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1552:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7440,"nodeType":"ExpressionStatement","src":"1552:34:71"},{"expression":{"id":7445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7441,"name":"STAKE_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"1596:13:71","typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7443,"name":"stakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7407,"src":"1633:12:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7442,"name":"ISynclubStakeManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"1612:20:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISynclubStakeManager_$5104_$","typeString":"type(contract ISynclubStakeManager)"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1612:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"}},"src":"1596:50:71","typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"}},"id":7446,"nodeType":"ExpressionStatement","src":"1596:50:71"}]},"documentation":{"id":7405,"nodeType":"StructuredDocumentation","src":"820:56:71","text":"@notice Constructor for the implementation contract."},"id":7448,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7426,"name":"slisBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"1257:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7427,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7400,"src":"1278:17:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7428,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7411,"src":"1309:15:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7429,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"1338:16:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7430,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"1368:17:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7431,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"1399:30:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7432,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7419,"src":"1443:24:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7433,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7421,"src":"1481:20:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7434,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7423,"src":"1515:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7435,"kind":"baseConstructorSpecifier","modifierName":{"id":7425,"name":"CorrelatedTokenOracle","nameLocations":["1222:21:71"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1222:21:71"},"nodeType":"ModifierInvocation","src":"1222:315:71"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7407,"mutability":"mutable","name":"stakeManager","nameLocation":"910:12:71","nodeType":"VariableDeclaration","scope":7448,"src":"902:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7406,"name":"address","nodeType":"ElementaryTypeName","src":"902:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7409,"mutability":"mutable","name":"slisBNB","nameLocation":"940:7:71","nodeType":"VariableDeclaration","scope":7448,"src":"932:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7408,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7411,"mutability":"mutable","name":"resilientOracle","nameLocation":"965:15:71","nodeType":"VariableDeclaration","scope":7448,"src":"957:23:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7410,"name":"address","nodeType":"ElementaryTypeName","src":"957:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7413,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"998:16:71","nodeType":"VariableDeclaration","scope":7448,"src":"990:24:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7412,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7415,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"1032:17:71","nodeType":"VariableDeclaration","scope":7448,"src":"1024:25:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7414,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7417,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"1067:30:71","nodeType":"VariableDeclaration","scope":7448,"src":"1059:38:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7419,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"1115:24:71","nodeType":"VariableDeclaration","scope":7448,"src":"1107:32:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7418,"name":"uint256","nodeType":"ElementaryTypeName","src":"1107:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7421,"mutability":"mutable","name":"accessControlManager","nameLocation":"1157:20:71","nodeType":"VariableDeclaration","scope":7448,"src":"1149:28:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7420,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7423,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1195:12:71","nodeType":"VariableDeclaration","scope":7448,"src":"1187:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7422,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"892:321:71"},"returnParameters":{"id":7436,"nodeType":"ParameterList","parameters":[],"src":"1542:0:71"},"scope":7462,"src":"881:772:71","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7460,"nodeType":"Block","src":"1852:66:71","statements":[{"expression":{"arguments":[{"id":7457,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1901:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7455,"name":"STAKE_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"1869:13:71","typeDescriptions":{"typeIdentifier":"t_contract$_ISynclubStakeManager_$5104","typeString":"contract ISynclubStakeManager"}},"id":7456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1883:17:71","memberName":"convertSnBnbToBnb","nodeType":"MemberAccess","referencedDeclaration":5103,"src":"1869:31:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":7458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1869:42:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7454,"id":7459,"nodeType":"Return","src":"1862:49:71"}]},"documentation":{"id":7449,"nodeType":"StructuredDocumentation","src":"1659:118:71","text":" @notice Fetches the amount of BNB for 1 slisBNB\n @return amount The amount of BNB for slisBNB"},"functionSelector":"abb85613","id":7461,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1791:19:71","nodeType":"FunctionDefinition","overrides":{"id":7451,"nodeType":"OverrideSpecifier","overrides":[],"src":"1825:8:71"},"parameters":{"id":7450,"nodeType":"ParameterList","parameters":[],"src":"1810:2:71"},"returnParameters":{"id":7454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7461,"src":"1843:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1843:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1842:9:71"},"scope":7462,"src":"1782:136:71","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7463,"src":"515:1405:71","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1880:71"}},"contracts/oracles/StkBNBOracle.sol":{"id":72,"ast":{"absolutePath":"contracts/oracles/StkBNBOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IPStakePool":[5008],"StkBNBOracle":[7566],"ensureNonzeroAddress":[3639]},"id":7567,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7464,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:72"},{"absolutePath":"contracts/interfaces/IPStakePool.sol","file":"../interfaces/IPStakePool.sol","id":7466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7567,"sourceUnit":5009,"src":"66:60:72","symbolAliases":[{"foreign":{"id":7465,"name":"IPStakePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"75:11:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7468,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7567,"sourceUnit":3655,"src":"127:98:72","symbolAliases":[{"foreign":{"id":7467,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"136:20:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7567,"sourceUnit":3614,"src":"226:86:72","symbolAliases":[{"foreign":{"id":7469,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"235:9:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7472,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7567,"sourceUnit":8612,"src":"313:75:72","symbolAliases":[{"foreign":{"id":7471,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"322:21:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7474,"name":"CorrelatedTokenOracle","nameLocations":["520:21:72"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"520:21:72"},"id":7475,"nodeType":"InheritanceSpecifier","src":"520:21:72"}],"canonicalName":"StkBNBOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7473,"nodeType":"StructuredDocumentation","src":"390:104:72","text":" @title StkBNBOracle\n @author Venus\n @notice This oracle fetches the price of stkBNB asset"},"fullyImplemented":true,"id":7566,"linearizedBaseContracts":[7566,8611,4968,5140],"name":"StkBNBOracle","nameLocation":"504:12:72","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7476,"nodeType":"StructuredDocumentation","src":"548:55:72","text":"@notice This is used as token address of BNB on BSC"},"functionSelector":"a9534f8a","id":7479,"mutability":"constant","name":"NATIVE_TOKEN_ADDR","nameLocation":"632:17:72","nodeType":"VariableDeclaration","scope":7566,"src":"608:86:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7477,"name":"address","nodeType":"ElementaryTypeName","src":"608:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307862426242424242626242424262626242626242626262624242624262626262426242626242426242","id":7478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"652:42:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"visibility":"public"},{"constant":false,"documentation":{"id":7480,"nodeType":"StructuredDocumentation","src":"701:32:72","text":"@notice Address of StakePool"},"functionSelector":"3a26dc4f","id":7483,"mutability":"immutable","name":"STAKE_POOL","nameLocation":"767:10:72","nodeType":"VariableDeclaration","scope":7566,"src":"738:39:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"},"typeName":{"id":7482,"nodeType":"UserDefinedTypeName","pathNode":{"id":7481,"name":"IPStakePool","nameLocations":["738:11:72"],"nodeType":"IdentifierPath","referencedDeclaration":5008,"src":"738:11:72"},"referencedDeclaration":5008,"src":"738:11:72","typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"}},"visibility":"public"},{"documentation":{"id":7484,"nodeType":"StructuredDocumentation","src":"784:51:72","text":"@notice Thrown if the pool token supply is zero"},"errorSelector":"e1b25e0c","id":7486,"name":"PoolTokenSupplyIsZero","nameLocation":"846:21:72","nodeType":"ErrorDefinition","parameters":{"id":7485,"nodeType":"ParameterList","parameters":[],"src":"867:2:72"},"src":"840:30:72"},{"body":{"id":7529,"nodeType":"Block","src":"1593:93:72","statements":[{"expression":{"arguments":[{"id":7520,"name":"stakePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"1624:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7519,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1603:20:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1603:31:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7522,"nodeType":"ExpressionStatement","src":"1603:31:72"},{"expression":{"id":7527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7523,"name":"STAKE_POOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"1644:10:72","typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7525,"name":"stakePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"1669:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7524,"name":"IPStakePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"1657:11:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPStakePool_$5008_$","typeString":"type(contract IPStakePool)"}},"id":7526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1657:22:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"}},"src":"1644:35:72","typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"}},"id":7528,"nodeType":"ExpressionStatement","src":"1644:35:72"}]},"documentation":{"id":7487,"nodeType":"StructuredDocumentation","src":"876:56:72","text":"@notice Constructor for the implementation contract."},"id":7530,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7508,"name":"stkBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7491,"src":"1309:6:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7509,"name":"NATIVE_TOKEN_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7479,"src":"1329:17:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7510,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"1360:15:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7511,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"1389:16:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7512,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7497,"src":"1419:17:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7513,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7499,"src":"1450:30:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7514,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7501,"src":"1494:24:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7515,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"1532:20:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7516,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7505,"src":"1566:12:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7517,"kind":"baseConstructorSpecifier","modifierName":{"id":7507,"name":"CorrelatedTokenOracle","nameLocations":["1274:21:72"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1274:21:72"},"nodeType":"ModifierInvocation","src":"1274:314:72"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7489,"mutability":"mutable","name":"stakePool","nameLocation":"966:9:72","nodeType":"VariableDeclaration","scope":7530,"src":"958:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7488,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7491,"mutability":"mutable","name":"stkBNB","nameLocation":"993:6:72","nodeType":"VariableDeclaration","scope":7530,"src":"985:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7490,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7493,"mutability":"mutable","name":"resilientOracle","nameLocation":"1017:15:72","nodeType":"VariableDeclaration","scope":7530,"src":"1009:23:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7492,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7495,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"1050:16:72","nodeType":"VariableDeclaration","scope":7530,"src":"1042:24:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1042:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7497,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"1084:17:72","nodeType":"VariableDeclaration","scope":7530,"src":"1076:25:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7496,"name":"uint256","nodeType":"ElementaryTypeName","src":"1076:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7499,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"1119:30:72","nodeType":"VariableDeclaration","scope":7530,"src":"1111:38:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1111:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7501,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"1167:24:72","nodeType":"VariableDeclaration","scope":7530,"src":"1159:32:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1159:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7503,"mutability":"mutable","name":"accessControlManager","nameLocation":"1209:20:72","nodeType":"VariableDeclaration","scope":7530,"src":"1201:28:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7502,"name":"address","nodeType":"ElementaryTypeName","src":"1201:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7505,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1247:12:72","nodeType":"VariableDeclaration","scope":7530,"src":"1239:20:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"948:317:72"},"returnParameters":{"id":7518,"nodeType":"ParameterList","parameters":[],"src":"1593:0:72"},"scope":7566,"src":"937:749:72","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7564,"nodeType":"Block","src":"1974:285:72","statements":[{"assignments":[7541],"declarations":[{"constant":false,"id":7541,"mutability":"mutable","name":"exchangeRateData","nameLocation":"2008:16:72","nodeType":"VariableDeclaration","scope":7564,"src":"1984:40:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data"},"typeName":{"id":7540,"nodeType":"UserDefinedTypeName","pathNode":{"id":7539,"name":"IPStakePool.Data","nameLocations":["1984:11:72","1996:4:72"],"nodeType":"IdentifierPath","referencedDeclaration":5000,"src":"1984:16:72"},"referencedDeclaration":5000,"src":"1984:16:72","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_storage_ptr","typeString":"struct IPStakePool.Data"}},"visibility":"internal"}],"id":7545,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7542,"name":"STAKE_POOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"2027:10:72","typeDescriptions":{"typeIdentifier":"t_contract$_IPStakePool_$5008","typeString":"contract IPStakePool"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2038:12:72","memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":5007,"src":"2027:23:72","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_struct$_Data_$5000_memory_ptr_$","typeString":"function () view external returns (struct IPStakePool.Data memory)"}},"id":7544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2027:25:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data memory"}},"nodeType":"VariableDeclarationStatement","src":"1984:68:72"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7546,"name":"exchangeRateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"2067:16:72","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data memory"}},"id":7547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2084:15:72","memberName":"poolTokenSupply","nodeType":"MemberAccess","referencedDeclaration":4999,"src":"2067:32:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2103:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2067:37:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7554,"nodeType":"IfStatement","src":"2063:98:72","trueBody":{"id":7553,"nodeType":"Block","src":"2106:55:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7550,"name":"PoolTokenSupplyIsZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7486,"src":"2127:21:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2127:23:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7552,"nodeType":"RevertStatement","src":"2120:30:72"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7555,"name":"exchangeRateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"2179:16:72","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data memory"}},"id":7556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2196:8:72","memberName":"totalWei","nodeType":"MemberAccess","referencedDeclaration":4997,"src":"2179:25:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7557,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"2207:9:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2179:37:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7559,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2178:39:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":7560,"name":"exchangeRateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"2220:16:72","typeDescriptions":{"typeIdentifier":"t_struct$_Data_$5000_memory_ptr","typeString":"struct IPStakePool.Data memory"}},"id":7561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2237:15:72","memberName":"poolTokenSupply","nodeType":"MemberAccess","referencedDeclaration":4999,"src":"2220:32:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2178:74:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7536,"id":7563,"nodeType":"Return","src":"2171:81:72"}]},"documentation":{"id":7531,"nodeType":"StructuredDocumentation","src":"1692:207:72","text":" @notice Fetches the amount of BNB for 1 stkBNB\n @return price The amount of BNB for stkBNB\n @custom:error PoolTokenSupplyIsZero error is thrown if the pool token supply is zero"},"functionSelector":"abb85613","id":7565,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1913:19:72","nodeType":"FunctionDefinition","overrides":{"id":7533,"nodeType":"OverrideSpecifier","overrides":[],"src":"1947:8:72"},"parameters":{"id":7532,"nodeType":"ParameterList","parameters":[],"src":"1932:2:72"},"returnParameters":{"id":7536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7565,"src":"1965:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1964:9:72"},"scope":7566,"src":"1904:355:72","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7567,"src":"495:1766:72","usedErrors":[3618,7486,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:2221:72"}},"contracts/oracles/WBETHOracle.sol":{"id":73,"ast":{"absolutePath":"contracts/oracles/WBETHOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IWBETH":[5117],"WBETHOracle":[7624]},"id":7625,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7568,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:73"},{"absolutePath":"contracts/interfaces/IWBETH.sol","file":"../interfaces/IWBETH.sol","id":7570,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7625,"sourceUnit":5118,"src":"66:50:73","symbolAliases":[{"foreign":{"id":7569,"name":"IWBETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"75:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7572,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7625,"sourceUnit":8612,"src":"117:75:73","symbolAliases":[{"foreign":{"id":7571,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"126:21:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7574,"name":"CorrelatedTokenOracle","nameLocations":["321:21:73"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"321:21:73"},"id":7575,"nodeType":"InheritanceSpecifier","src":"321:21:73"}],"canonicalName":"WBETHOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7573,"nodeType":"StructuredDocumentation","src":"194:102:73","text":" @title WBETHOracle\n @author Venus\n @notice This oracle fetches the price of wBETH asset"},"fullyImplemented":true,"id":7624,"linearizedBaseContracts":[7624,8611,4968,5140],"name":"WBETHOracle","nameLocation":"306:11:73","nodeType":"ContractDefinition","nodes":[{"body":{"id":7608,"nodeType":"Block","src":"1044:2:73","statements":[]},"documentation":{"id":7576,"nodeType":"StructuredDocumentation","src":"349:56:73","text":"@notice Constructor for the implementation contract."},"id":7609,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7597,"name":"wbeth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"775:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7598,"name":"eth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7580,"src":"794:3:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7599,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"811:15:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7600,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"840:16:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7601,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7586,"src":"870:17:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7602,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"901:30:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7603,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"945:24:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7604,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"983:20:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7605,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7594,"src":"1017:12:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7606,"kind":"baseConstructorSpecifier","modifierName":{"id":7596,"name":"CorrelatedTokenOracle","nameLocations":["740:21:73"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"740:21:73"},"nodeType":"ModifierInvocation","src":"740:299:73"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7578,"mutability":"mutable","name":"wbeth","nameLocation":"439:5:73","nodeType":"VariableDeclaration","scope":7609,"src":"431:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7577,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7580,"mutability":"mutable","name":"eth","nameLocation":"462:3:73","nodeType":"VariableDeclaration","scope":7609,"src":"454:11:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7579,"name":"address","nodeType":"ElementaryTypeName","src":"454:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7582,"mutability":"mutable","name":"resilientOracle","nameLocation":"483:15:73","nodeType":"VariableDeclaration","scope":7609,"src":"475:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7581,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7584,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"516:16:73","nodeType":"VariableDeclaration","scope":7609,"src":"508:24:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7583,"name":"uint256","nodeType":"ElementaryTypeName","src":"508:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7586,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"550:17:73","nodeType":"VariableDeclaration","scope":7609,"src":"542:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7585,"name":"uint256","nodeType":"ElementaryTypeName","src":"542:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7588,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"585:30:73","nodeType":"VariableDeclaration","scope":7609,"src":"577:38:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7587,"name":"uint256","nodeType":"ElementaryTypeName","src":"577:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7590,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"633:24:73","nodeType":"VariableDeclaration","scope":7609,"src":"625:32:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7589,"name":"uint256","nodeType":"ElementaryTypeName","src":"625:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7592,"mutability":"mutable","name":"accessControlManager","nameLocation":"675:20:73","nodeType":"VariableDeclaration","scope":7609,"src":"667:28:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7591,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7594,"mutability":"mutable","name":"_snapshotGap","nameLocation":"713:12:73","nodeType":"VariableDeclaration","scope":7609,"src":"705:20:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7593,"name":"uint256","nodeType":"ElementaryTypeName","src":"705:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"421:310:73"},"returnParameters":{"id":7607,"nodeType":"ParameterList","parameters":[],"src":"1044:0:73"},"scope":7624,"src":"410:636:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7622,"nodeType":"Block","src":"1241:63:73","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7617,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1265:16:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7616,"name":"IWBETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"1258:6:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWBETH_$5117_$","typeString":"type(contract IWBETH)"}},"id":7618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWBETH_$5117","typeString":"contract IWBETH"}},"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1283:12:73","memberName":"exchangeRate","nodeType":"MemberAccess","referencedDeclaration":5111,"src":"1258:37:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:39:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7615,"id":7621,"nodeType":"Return","src":"1251:46:73"}]},"documentation":{"id":7610,"nodeType":"StructuredDocumentation","src":"1052:114:73","text":" @notice Fetches the amount of ETH for 1 wBETH\n @return amount The amount of ETH for wBETH"},"functionSelector":"abb85613","id":7623,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1180:19:73","nodeType":"FunctionDefinition","overrides":{"id":7612,"nodeType":"OverrideSpecifier","overrides":[],"src":"1214:8:73"},"parameters":{"id":7611,"nodeType":"ParameterList","parameters":[],"src":"1199:2:73"},"returnParameters":{"id":7615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7623,"src":"1232:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1231:9:73"},"scope":7624,"src":"1171:133:73","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7625,"src":"297:1009:73","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1266:73"}},"contracts/oracles/WeETHAccountantOracle.sol":{"id":74,"ast":{"absolutePath":"contracts/oracles/WeETHAccountantOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IAccountant":[4924],"WeETHAccountantOracle":[7698],"ensureNonzeroAddress":[3639]},"id":7699,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7626,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:74"},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7628,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7699,"sourceUnit":8612,"src":"66:75:74","symbolAliases":[{"foreign":{"id":7627,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"75:21:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IAccountant.sol","file":"../interfaces/IAccountant.sol","id":7630,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7699,"sourceUnit":4925,"src":"142:60:74","symbolAliases":[{"foreign":{"id":7629,"name":"IAccountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"151:11:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7632,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7699,"sourceUnit":3655,"src":"203:98:74","symbolAliases":[{"foreign":{"id":7631,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"212:20:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7634,"name":"CorrelatedTokenOracle","nameLocations":["513:21:74"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"513:21:74"},"id":7635,"nodeType":"InheritanceSpecifier","src":"513:21:74"}],"canonicalName":"WeETHAccountantOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"303:175:74","text":" @title WeETHAccountantOracle\n @author Venus\n @notice This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)"},"fullyImplemented":true,"id":7698,"linearizedBaseContracts":[7698,8611,4968,5140],"name":"WeETHAccountantOracle","nameLocation":"488:21:74","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7636,"nodeType":"StructuredDocumentation","src":"541:33:74","text":"@notice Address of Accountant"},"functionSelector":"8b9d2940","id":7639,"mutability":"immutable","name":"ACCOUNTANT","nameLocation":"608:10:74","nodeType":"VariableDeclaration","scope":7698,"src":"579:39:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"},"typeName":{"id":7638,"nodeType":"UserDefinedTypeName","pathNode":{"id":7637,"name":"IAccountant","nameLocations":["579:11:74"],"nodeType":"IdentifierPath","referencedDeclaration":4924,"src":"579:11:74"},"referencedDeclaration":4924,"src":"579:11:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"visibility":"public"},{"body":{"id":7684,"nodeType":"Block","src":"1356:95:74","statements":[{"expression":{"arguments":[{"id":7675,"name":"accountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"1387:10:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7674,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1366:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:32:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7677,"nodeType":"ExpressionStatement","src":"1366:32:74"},{"expression":{"id":7682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7678,"name":"ACCOUNTANT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"1408:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7680,"name":"accountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"1433:10:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7679,"name":"IAccountant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"1421:11:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccountant_$4924_$","typeString":"type(contract IAccountant)"}},"id":7681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1421:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"src":"1408:36:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"id":7683,"nodeType":"ExpressionStatement","src":"1408:36:74"}]},"documentation":{"id":7640,"nodeType":"StructuredDocumentation","src":"625:56:74","text":"@notice Constructor for the implementation contract."},"id":7685,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7663,"name":"weethLRT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"1083:8:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7664,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"1105:4:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7665,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"1123:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7666,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"1152:16:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7667,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"1182:17:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7668,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7654,"src":"1213:30:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7669,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7656,"src":"1257:24:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7670,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7658,"src":"1295:20:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7671,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7660,"src":"1329:12:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7672,"kind":"baseConstructorSpecifier","modifierName":{"id":7662,"name":"CorrelatedTokenOracle","nameLocations":["1048:21:74"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1048:21:74"},"nodeType":"ModifierInvocation","src":"1048:303:74"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7642,"mutability":"mutable","name":"accountant","nameLocation":"715:10:74","nodeType":"VariableDeclaration","scope":7685,"src":"707:18:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"707:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7644,"mutability":"mutable","name":"weethLRT","nameLocation":"743:8:74","nodeType":"VariableDeclaration","scope":7685,"src":"735:16:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7643,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7646,"mutability":"mutable","name":"weth","nameLocation":"769:4:74","nodeType":"VariableDeclaration","scope":7685,"src":"761:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7645,"name":"address","nodeType":"ElementaryTypeName","src":"761:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7648,"mutability":"mutable","name":"resilientOracle","nameLocation":"791:15:74","nodeType":"VariableDeclaration","scope":7685,"src":"783:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7647,"name":"address","nodeType":"ElementaryTypeName","src":"783:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7650,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"824:16:74","nodeType":"VariableDeclaration","scope":7685,"src":"816:24:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7649,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7652,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"858:17:74","nodeType":"VariableDeclaration","scope":7685,"src":"850:25:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7651,"name":"uint256","nodeType":"ElementaryTypeName","src":"850:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7654,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"893:30:74","nodeType":"VariableDeclaration","scope":7685,"src":"885:38:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7653,"name":"uint256","nodeType":"ElementaryTypeName","src":"885:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7656,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"941:24:74","nodeType":"VariableDeclaration","scope":7685,"src":"933:32:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7655,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7658,"mutability":"mutable","name":"accessControlManager","nameLocation":"983:20:74","nodeType":"VariableDeclaration","scope":7685,"src":"975:28:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7657,"name":"address","nodeType":"ElementaryTypeName","src":"975:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7660,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1021:12:74","nodeType":"VariableDeclaration","scope":7685,"src":"1013:20:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1013:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"697:342:74"},"returnParameters":{"id":7673,"nodeType":"ParameterList","parameters":[],"src":"1356:0:74"},"scope":7698,"src":"686:765:74","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7696,"nodeType":"Block","src":"1625:48:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7692,"name":"ACCOUNTANT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"1642:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAccountant_$4924","typeString":"contract IAccountant"}},"id":7693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1653:11:74","memberName":"getRateSafe","nodeType":"MemberAccess","referencedDeclaration":4923,"src":"1642:22:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1642:24:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7691,"id":7695,"nodeType":"Return","src":"1635:31:74"}]},"documentation":{"id":7686,"nodeType":"StructuredDocumentation","src":"1457:93:74","text":" @notice Gets the WETH for 1 weETH LRT\n @return amount Amount of WETH"},"functionSelector":"abb85613","id":7697,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1564:19:74","nodeType":"FunctionDefinition","overrides":{"id":7688,"nodeType":"OverrideSpecifier","overrides":[],"src":"1598:8:74"},"parameters":{"id":7687,"nodeType":"ParameterList","parameters":[],"src":"1583:2:74"},"returnParameters":{"id":7691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7697,"src":"1616:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7689,"name":"uint256","nodeType":"ElementaryTypeName","src":"1616:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1615:9:74"},"scope":7698,"src":"1555:118:74","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7699,"src":"479:1196:74","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1635:74"}},"contracts/oracles/WeETHOracle.sol":{"id":75,"ast":{"absolutePath":"contracts/oracles/WeETHOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IEtherFiLiquidityPool":[4993],"WeETHOracle":[7775],"ensureNonzeroAddress":[3639]},"id":7776,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7700,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:75"},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7702,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7776,"sourceUnit":8612,"src":"66:75:75","symbolAliases":[{"foreign":{"id":7701,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"75:21:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IEtherFiLiquidityPool.sol","file":"../interfaces/IEtherFiLiquidityPool.sol","id":7704,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7776,"sourceUnit":4994,"src":"142:80:75","symbolAliases":[{"foreign":{"id":7703,"name":"IEtherFiLiquidityPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"151:21:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7706,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7776,"sourceUnit":3614,"src":"223:86:75","symbolAliases":[{"foreign":{"id":7705,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"232:9:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7708,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7776,"sourceUnit":3655,"src":"310:98:75","symbolAliases":[{"foreign":{"id":7707,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"319:20:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7710,"name":"CorrelatedTokenOracle","nameLocations":["531:21:75"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"531:21:75"},"id":7711,"nodeType":"InheritanceSpecifier","src":"531:21:75"}],"canonicalName":"WeETHOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7709,"nodeType":"StructuredDocumentation","src":"410:96:75","text":" @title WeETHOracle\n @author Venus\n @notice This oracle fetches the price of weETH"},"fullyImplemented":true,"id":7775,"linearizedBaseContracts":[7775,8611,4968,5140],"name":"WeETHOracle","nameLocation":"516:11:75","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7712,"nodeType":"StructuredDocumentation","src":"559:37:75","text":"@notice Address of Liqiudity pool"},"functionSelector":"2cca9dfd","id":7715,"mutability":"immutable","name":"LIQUIDITY_POOL","nameLocation":"640:14:75","nodeType":"VariableDeclaration","scope":7775,"src":"601:53:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"},"typeName":{"id":7714,"nodeType":"UserDefinedTypeName","pathNode":{"id":7713,"name":"IEtherFiLiquidityPool","nameLocations":["601:21:75"],"nodeType":"IdentifierPath","referencedDeclaration":4993,"src":"601:21:75"},"referencedDeclaration":4993,"src":"601:21:75","typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"}},"visibility":"public"},{"body":{"id":7760,"nodeType":"Block","src":"1389:115:75","statements":[{"expression":{"arguments":[{"id":7751,"name":"liquidityPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"1420:13:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7750,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1399:20:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1399:35:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7753,"nodeType":"ExpressionStatement","src":"1399:35:75"},{"expression":{"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7754,"name":"LIQUIDITY_POOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7715,"src":"1444:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7756,"name":"liquidityPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"1483:13:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7755,"name":"IEtherFiLiquidityPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1461:21:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IEtherFiLiquidityPool_$4993_$","typeString":"type(contract IEtherFiLiquidityPool)"}},"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:36:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"}},"src":"1444:53:75","typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"}},"id":7759,"nodeType":"ExpressionStatement","src":"1444:53:75"}]},"documentation":{"id":7716,"nodeType":"StructuredDocumentation","src":"661:56:75","text":"@notice Constructor for the implementation contract."},"id":7761,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7739,"name":"weETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7720,"src":"1119:5:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7740,"name":"eETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"1138:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7741,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7724,"src":"1156:15:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7742,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7726,"src":"1185:16:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7743,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"1215:17:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7744,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7730,"src":"1246:30:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7745,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7732,"src":"1290:24:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7746,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7734,"src":"1328:20:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7747,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7736,"src":"1362:12:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7748,"kind":"baseConstructorSpecifier","modifierName":{"id":7738,"name":"CorrelatedTokenOracle","nameLocations":["1084:21:75"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1084:21:75"},"nodeType":"ModifierInvocation","src":"1084:300:75"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7718,"mutability":"mutable","name":"liquidityPool","nameLocation":"751:13:75","nodeType":"VariableDeclaration","scope":7761,"src":"743:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7717,"name":"address","nodeType":"ElementaryTypeName","src":"743:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7720,"mutability":"mutable","name":"weETH","nameLocation":"782:5:75","nodeType":"VariableDeclaration","scope":7761,"src":"774:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7719,"name":"address","nodeType":"ElementaryTypeName","src":"774:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7722,"mutability":"mutable","name":"eETH","nameLocation":"805:4:75","nodeType":"VariableDeclaration","scope":7761,"src":"797:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7721,"name":"address","nodeType":"ElementaryTypeName","src":"797:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7724,"mutability":"mutable","name":"resilientOracle","nameLocation":"827:15:75","nodeType":"VariableDeclaration","scope":7761,"src":"819:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7723,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7726,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"860:16:75","nodeType":"VariableDeclaration","scope":7761,"src":"852:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7725,"name":"uint256","nodeType":"ElementaryTypeName","src":"852:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7728,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"894:17:75","nodeType":"VariableDeclaration","scope":7761,"src":"886:25:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7727,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7730,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"929:30:75","nodeType":"VariableDeclaration","scope":7761,"src":"921:38:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7729,"name":"uint256","nodeType":"ElementaryTypeName","src":"921:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7732,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"977:24:75","nodeType":"VariableDeclaration","scope":7761,"src":"969:32:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7731,"name":"uint256","nodeType":"ElementaryTypeName","src":"969:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7734,"mutability":"mutable","name":"accessControlManager","nameLocation":"1019:20:75","nodeType":"VariableDeclaration","scope":7761,"src":"1011:28:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7733,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7736,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1057:12:75","nodeType":"VariableDeclaration","scope":7761,"src":"1049:20:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7735,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:342:75"},"returnParameters":{"id":7749,"nodeType":"ParameterList","parameters":[],"src":"1389:0:75"},"scope":7775,"src":"722:782:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7773,"nodeType":"Block","src":"1674:64:75","statements":[{"expression":{"arguments":[{"id":7770,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1721:9:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7768,"name":"LIQUIDITY_POOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7715,"src":"1691:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IEtherFiLiquidityPool_$4993","typeString":"contract IEtherFiLiquidityPool"}},"id":7769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1706:14:75","memberName":"amountForShare","nodeType":"MemberAccess","referencedDeclaration":4992,"src":"1691:29:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":7771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:40:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7767,"id":7772,"nodeType":"Return","src":"1684:47:75"}]},"documentation":{"id":7762,"nodeType":"StructuredDocumentation","src":"1510:89:75","text":" @notice Gets the eETH for 1 weETH\n @return amount Amount of eETH"},"functionSelector":"abb85613","id":7774,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1613:19:75","nodeType":"FunctionDefinition","overrides":{"id":7764,"nodeType":"OverrideSpecifier","overrides":[],"src":"1647:8:75"},"parameters":{"id":7763,"nodeType":"ParameterList","parameters":[],"src":"1632:2:75"},"returnParameters":{"id":7767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7774,"src":"1665:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1664:9:75"},"scope":7775,"src":"1604:134:75","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7776,"src":"507:1233:75","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1700:75"}},"contracts/oracles/WstETHOracle.sol":{"id":76,"ast":{"absolutePath":"contracts/oracles/WstETHOracle.sol","exportedSymbols":{"EXP_SCALE":[3605],"IStETH":[5084],"OracleInterface":[5140],"WstETHOracle":[7905],"ensureNonzeroAddress":[3639]},"id":7906,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7777,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:76"},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":7779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7906,"sourceUnit":5173,"src":"66:68:76","symbolAliases":[{"foreign":{"id":7778,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"75:15:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IStETH.sol","file":"../interfaces/IStETH.sol","id":7781,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7906,"sourceUnit":5085,"src":"135:50:76","symbolAliases":[{"foreign":{"id":7780,"name":"IStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"144:6:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7783,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7906,"sourceUnit":3655,"src":"186:98:76","symbolAliases":[{"foreign":{"id":7782,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"195:20:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7785,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7906,"sourceUnit":3614,"src":"285:86:76","symbolAliases":[{"foreign":{"id":7784,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"294:9:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7787,"name":"OracleInterface","nameLocations":["639:15:76"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"639:15:76"},"id":7788,"nodeType":"InheritanceSpecifier","src":"639:15:76"}],"canonicalName":"WstETHOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7786,"nodeType":"StructuredDocumentation","src":"373:240:76","text":" @title WstETHOracle\n @author Venus\n @notice Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n         or the price of stETH/USD (secondary market price) is obtained from the oracle."},"fullyImplemented":true,"id":7905,"linearizedBaseContracts":[7905,5140],"name":"WstETHOracle","nameLocation":"623:12:76","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7789,"nodeType":"StructuredDocumentation","src":"661:133:76","text":"@notice A flag assuming 1:1 price equivalence between stETH/ETH\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"ed0142b7","id":7791,"mutability":"immutable","name":"ASSUME_STETH_ETH_EQUIVALENCE","nameLocation":"821:28:76","nodeType":"VariableDeclaration","scope":7905,"src":"799:50:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7790,"name":"bool","nodeType":"ElementaryTypeName","src":"799:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"documentation":{"id":7792,"nodeType":"StructuredDocumentation","src":"856:94:76","text":"@notice Address of stETH\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"e00bfe50","id":7795,"mutability":"immutable","name":"STETH","nameLocation":"979:5:76","nodeType":"VariableDeclaration","scope":7905,"src":"955:29:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"},"typeName":{"id":7794,"nodeType":"UserDefinedTypeName","pathNode":{"id":7793,"name":"IStETH","nameLocations":["955:6:76"],"nodeType":"IdentifierPath","referencedDeclaration":5084,"src":"955:6:76"},"referencedDeclaration":5084,"src":"955:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"visibility":"public"},{"constant":false,"documentation":{"id":7796,"nodeType":"StructuredDocumentation","src":"991:95:76","text":"@notice Address of wstETH\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"36e6372f","id":7798,"mutability":"immutable","name":"WSTETH_ADDRESS","nameLocation":"1116:14:76","nodeType":"VariableDeclaration","scope":7905,"src":"1091:39:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7797,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":7799,"nodeType":"StructuredDocumentation","src":"1137:93:76","text":"@notice Address of WETH\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"040141e5","id":7801,"mutability":"immutable","name":"WETH_ADDRESS","nameLocation":"1260:12:76","nodeType":"VariableDeclaration","scope":7905,"src":"1235:37:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7800,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":7802,"nodeType":"StructuredDocumentation","src":"1279:105:76","text":"@notice Address of Resilient Oracle\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"functionSelector":"a4edcd4c","id":7805,"mutability":"immutable","name":"RESILIENT_ORACLE","nameLocation":"1422:16:76","nodeType":"VariableDeclaration","scope":7905,"src":"1389:49:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"},"typeName":{"id":7804,"nodeType":"UserDefinedTypeName","pathNode":{"id":7803,"name":"OracleInterface","nameLocations":["1389:15:76"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"1389:15:76"},"referencedDeclaration":5140,"src":"1389:15:76","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"visibility":"public"},{"body":{"id":7859,"nodeType":"Block","src":"1739:433:76","statements":[{"expression":{"arguments":[{"id":7820,"name":"wstETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"1770:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7819,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1749:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1749:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7822,"nodeType":"ExpressionStatement","src":"1749:35:76"},{"expression":{"arguments":[{"id":7824,"name":"wETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"1815:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7823,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1794:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1794:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7826,"nodeType":"ExpressionStatement","src":"1794:33:76"},{"expression":{"arguments":[{"id":7828,"name":"stETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"1858:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7827,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1837:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:34:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7830,"nodeType":"ExpressionStatement","src":"1837:34:76"},{"expression":{"arguments":[{"id":7832,"name":"resilientOracleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"1902:22:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7831,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1881:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1881:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7834,"nodeType":"ExpressionStatement","src":"1881:44:76"},{"expression":{"id":7837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7835,"name":"WSTETH_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"1935:14:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7836,"name":"wstETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"1952:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1935:30:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7838,"nodeType":"ExpressionStatement","src":"1935:30:76"},{"expression":{"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7839,"name":"WETH_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"1975:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7840,"name":"wETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"1990:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1975:26:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7842,"nodeType":"ExpressionStatement","src":"1975:26:76"},{"expression":{"id":7847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7843,"name":"STETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7795,"src":"2011:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7845,"name":"stETHAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"2026:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7844,"name":"IStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"2019:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStETH_$5084_$","typeString":"type(contract IStETH)"}},"id":7846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2019:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"src":"2011:28:76","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"id":7848,"nodeType":"ExpressionStatement","src":"2011:28:76"},{"expression":{"id":7853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7849,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7805,"src":"2049:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7851,"name":"resilientOracleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"2084:22:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7850,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"2068:15:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterface_$5140_$","typeString":"type(contract OracleInterface)"}},"id":7852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2068:39:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"src":"2049:58:76","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":7854,"nodeType":"ExpressionStatement","src":"2049:58:76"},{"expression":{"id":7857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7855,"name":"ASSUME_STETH_ETH_EQUIVALENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7791,"src":"2117:28:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7856,"name":"assumeEquivalence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7816,"src":"2148:17:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2117:48:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7858,"nodeType":"ExpressionStatement","src":"2117:48:76"}]},"documentation":{"id":7806,"nodeType":"StructuredDocumentation","src":"1445:109:76","text":"@notice Constructor for the implementation contract.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":7860,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7808,"mutability":"mutable","name":"wstETHAddress","nameLocation":"1588:13:76","nodeType":"VariableDeclaration","scope":7860,"src":"1580:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7807,"name":"address","nodeType":"ElementaryTypeName","src":"1580:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7810,"mutability":"mutable","name":"wETHAddress","nameLocation":"1619:11:76","nodeType":"VariableDeclaration","scope":7860,"src":"1611:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7809,"name":"address","nodeType":"ElementaryTypeName","src":"1611:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7812,"mutability":"mutable","name":"stETHAddress","nameLocation":"1648:12:76","nodeType":"VariableDeclaration","scope":7860,"src":"1640:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7811,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7814,"mutability":"mutable","name":"resilientOracleAddress","nameLocation":"1678:22:76","nodeType":"VariableDeclaration","scope":7860,"src":"1670:30:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7813,"name":"address","nodeType":"ElementaryTypeName","src":"1670:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7816,"mutability":"mutable","name":"assumeEquivalence","nameLocation":"1715:17:76","nodeType":"VariableDeclaration","scope":7860,"src":"1710:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7815,"name":"bool","nodeType":"ElementaryTypeName","src":"1710:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1570:168:76"},"returnParameters":{"id":7818,"nodeType":"ParameterList","parameters":[],"src":"1739:0:76"},"scope":7905,"src":"1559:613:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5139],"body":{"id":7903,"nodeType":"Block","src":"2589:516:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7868,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7863,"src":"2603:5:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7869,"name":"WSTETH_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"2612:14:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2603:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7875,"nodeType":"IfStatement","src":"2599:59:76","trueBody":{"expression":{"arguments":[{"hexValue":"77726f6e67207773744554482061646472657373","id":7872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2635:22:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_7f4ee6f489f24e4a23fdff6c327f3c4a365051c092350012f3dd88138a1deb4f","typeString":"literal_string \"wrong wstETH address\""},"value":"wrong wstETH address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7f4ee6f489f24e4a23fdff6c327f3c4a365051c092350012f3dd88138a1deb4f","typeString":"literal_string \"wrong wstETH address\""}],"id":7871,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2628:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":7873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2628:30:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7874,"nodeType":"ExpressionStatement","src":"2628:30:76"}},{"assignments":[7877],"declarations":[{"constant":false,"id":7877,"mutability":"mutable","name":"stETHAmount","nameLocation":"2733:11:76","nodeType":"VariableDeclaration","scope":7903,"src":"2725:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7876,"name":"uint256","nodeType":"ElementaryTypeName","src":"2725:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7882,"initialValue":{"arguments":[{"hexValue":"31","id":7880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2774:7:76","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"expression":{"id":7878,"name":"STETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7795,"src":"2747:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"id":7879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2753:20:76","memberName":"getPooledEthByShares","nodeType":"MemberAccess","referencedDeclaration":5078,"src":"2747:26:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":7881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2725:57:76"},{"assignments":[7884],"declarations":[{"constant":false,"id":7884,"mutability":"mutable","name":"stETHUSDPrice","nameLocation":"2875:13:76","nodeType":"VariableDeclaration","scope":7903,"src":"2867:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7883,"name":"uint256","nodeType":"ElementaryTypeName","src":"2867:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7895,"initialValue":{"arguments":[{"condition":{"id":7887,"name":"ASSUME_STETH_ETH_EQUIVALENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7791,"src":"2917:28:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7891,"name":"STETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7795,"src":"2971:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}],"id":7890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2963:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7889,"name":"address","nodeType":"ElementaryTypeName","src":"2963:7:76","typeDescriptions":{}}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:14:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2917:60:76","trueExpression":{"id":7888,"name":"WETH_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"2948:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7885,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7805,"src":"2891:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_OracleInterface_$5140","typeString":"contract OracleInterface"}},"id":7886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2908:8:76","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"2891:25:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2891:87:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2867:111:76"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7896,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7877,"src":"3058:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7897,"name":"stETHUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7884,"src":"3072:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3058:27:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7899,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3057:29:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7900,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"3089:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3057:41:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7867,"id":7902,"nodeType":"Return","src":"3050:48:76"}]},"documentation":{"id":7861,"nodeType":"StructuredDocumentation","src":"2178:343:76","text":" @notice Gets the USD price of wstETH asset\n @dev Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH\n      or the price of stETH/USD (secondary market price) is obtained from the oracle\n @param asset Address of wstETH\n @return wstETH Price in USD scaled by 1e18"},"functionSelector":"41976e09","id":7904,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"2535:8:76","nodeType":"FunctionDefinition","parameters":{"id":7864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7863,"mutability":"mutable","name":"asset","nameLocation":"2552:5:76","nodeType":"VariableDeclaration","scope":7904,"src":"2544:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7862,"name":"address","nodeType":"ElementaryTypeName","src":"2544:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2543:15:76"},"returnParameters":{"id":7867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7866,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7904,"src":"2580:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7865,"name":"uint256","nodeType":"ElementaryTypeName","src":"2580:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2579:9:76"},"scope":7905,"src":"2526:579:76","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7906,"src":"614:2493:76","usedErrors":[3618],"usedEvents":[]}],"src":"41:3067:76"}},"contracts/oracles/WstETHOracleV2.sol":{"id":77,"ast":{"absolutePath":"contracts/oracles/WstETHOracleV2.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"EXP_SCALE":[3605],"IStETH":[5084],"WstETHOracleV2":[7982],"ensureNonzeroAddress":[3639]},"id":7983,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7907,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:77"},{"absolutePath":"contracts/interfaces/IStETH.sol","file":"../interfaces/IStETH.sol","id":7909,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7983,"sourceUnit":5085,"src":"66:50:77","symbolAliases":[{"foreign":{"id":7908,"name":"IStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"75:6:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7911,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7983,"sourceUnit":8612,"src":"117:75:77","symbolAliases":[{"foreign":{"id":7910,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"126:21:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":7913,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7983,"sourceUnit":3614,"src":"193:86:77","symbolAliases":[{"foreign":{"id":7912,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"202:9:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":7915,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7983,"sourceUnit":3655,"src":"280:98:77","symbolAliases":[{"foreign":{"id":7914,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"289:20:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7917,"name":"CorrelatedTokenOracle","nameLocations":["508:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"508:21:77"},"id":7918,"nodeType":"InheritanceSpecifier","src":"508:21:77"}],"canonicalName":"WstETHOracleV2","contractDependencies":[],"contractKind":"contract","documentation":{"id":7916,"nodeType":"StructuredDocumentation","src":"380:100:77","text":" @title WstETHOracleV2\n @author Venus\n @notice This oracle fetches the price of wstETH"},"fullyImplemented":true,"id":7982,"linearizedBaseContracts":[7982,8611,4968,5140],"name":"WstETHOracleV2","nameLocation":"490:14:77","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":7919,"nodeType":"StructuredDocumentation","src":"536:28:77","text":"@notice Address of stETH"},"functionSelector":"e00bfe50","id":7922,"mutability":"immutable","name":"STETH","nameLocation":"593:5:77","nodeType":"VariableDeclaration","scope":7982,"src":"569:29:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"},"typeName":{"id":7921,"nodeType":"UserDefinedTypeName","pathNode":{"id":7920,"name":"IStETH","nameLocations":["569:6:77"],"nodeType":"IdentifierPath","referencedDeclaration":5084,"src":"569:6:77"},"referencedDeclaration":5084,"src":"569:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"visibility":"public"},{"body":{"id":7967,"nodeType":"Block","src":"1510:75:77","statements":[{"expression":{"arguments":[{"id":7958,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"1541:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7957,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1520:20:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1520:27:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7960,"nodeType":"ExpressionStatement","src":"1520:27:77"},{"expression":{"id":7965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7961,"name":"STETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7922,"src":"1557:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7963,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"1572:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7962,"name":"IStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"1565:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStETH_$5084_$","typeString":"type(contract IStETH)"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"src":"1557:21:77","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"id":7966,"nodeType":"ExpressionStatement","src":"1557:21:77"}]},"documentation":{"id":7923,"nodeType":"StructuredDocumentation","src":"605:217:77","text":"@notice Constructor for the implementation contract.\n @dev The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because\n getUnderlyingAmount() implicitly assumes that"},"id":7968,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7946,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7927,"src":"1228:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7947,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"1248:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7948,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7931,"src":"1277:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7949,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"1306:16:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7950,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"1336:17:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7951,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7937,"src":"1367:30:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7952,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"1411:24:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7953,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7941,"src":"1449:20:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7954,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"1483:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7955,"kind":"baseConstructorSpecifier","modifierName":{"id":7945,"name":"CorrelatedTokenOracle","nameLocations":["1193:21:77"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"1193:21:77"},"nodeType":"ModifierInvocation","src":"1193:312:77"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7925,"mutability":"mutable","name":"stETH","nameLocation":"856:5:77","nodeType":"VariableDeclaration","scope":7968,"src":"848:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7924,"name":"address","nodeType":"ElementaryTypeName","src":"848:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7927,"mutability":"mutable","name":"wstETH","nameLocation":"879:6:77","nodeType":"VariableDeclaration","scope":7968,"src":"871:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7926,"name":"address","nodeType":"ElementaryTypeName","src":"871:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7929,"mutability":"mutable","name":"underlyingToken","nameLocation":"903:15:77","nodeType":"VariableDeclaration","scope":7968,"src":"895:23:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7928,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7931,"mutability":"mutable","name":"resilientOracle","nameLocation":"936:15:77","nodeType":"VariableDeclaration","scope":7968,"src":"928:23:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7930,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7933,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"969:16:77","nodeType":"VariableDeclaration","scope":7968,"src":"961:24:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7932,"name":"uint256","nodeType":"ElementaryTypeName","src":"961:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7935,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"1003:17:77","nodeType":"VariableDeclaration","scope":7968,"src":"995:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7934,"name":"uint256","nodeType":"ElementaryTypeName","src":"995:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7937,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"1038:30:77","nodeType":"VariableDeclaration","scope":7968,"src":"1030:38:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7936,"name":"uint256","nodeType":"ElementaryTypeName","src":"1030:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7939,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"1086:24:77","nodeType":"VariableDeclaration","scope":7968,"src":"1078:32:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7938,"name":"uint256","nodeType":"ElementaryTypeName","src":"1078:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7941,"mutability":"mutable","name":"accessControlManager","nameLocation":"1128:20:77","nodeType":"VariableDeclaration","scope":7968,"src":"1120:28:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7940,"name":"address","nodeType":"ElementaryTypeName","src":"1120:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7943,"mutability":"mutable","name":"_snapshotGap","nameLocation":"1166:12:77","nodeType":"VariableDeclaration","scope":7968,"src":"1158:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7942,"name":"uint256","nodeType":"ElementaryTypeName","src":"1158:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:346:77"},"returnParameters":{"id":7956,"nodeType":"ParameterList","parameters":[],"src":"1510:0:77"},"scope":7982,"src":"827:758:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":7980,"nodeType":"Block","src":"1846:61:77","statements":[{"expression":{"arguments":[{"id":7977,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1890:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7975,"name":"STETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7922,"src":"1863:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IStETH_$5084","typeString":"contract IStETH"}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1869:20:77","memberName":"getPooledEthByShares","nodeType":"MemberAccess","referencedDeclaration":5078,"src":"1863:26:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":7978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1863:37:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7974,"id":7979,"nodeType":"Return","src":"1856:44:77"}]},"documentation":{"id":7969,"nodeType":"StructuredDocumentation","src":"1591:180:77","text":" @notice Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\n @return amount Amount of underlyingToken"},"functionSelector":"abb85613","id":7981,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1785:19:77","nodeType":"FunctionDefinition","overrides":{"id":7971,"nodeType":"OverrideSpecifier","overrides":[],"src":"1819:8:77"},"parameters":{"id":7970,"nodeType":"ParameterList","parameters":[],"src":"1804:2:77"},"returnParameters":{"id":7974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7981,"src":"1837:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7972,"name":"uint256","nodeType":"ElementaryTypeName","src":"1837:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1836:9:77"},"scope":7982,"src":"1776:131:77","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":7983,"src":"481:1428:77","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1869:77"}},"contracts/oracles/ZkETHOracle.sol":{"id":78,"ast":{"absolutePath":"contracts/oracles/ZkETHOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IZkETH":[5130],"ZkETHOracle":[8040]},"id":8041,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7984,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:78"},{"absolutePath":"contracts/interfaces/IZkETH.sol","file":"../interfaces/IZkETH.sol","id":7986,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8041,"sourceUnit":5131,"src":"66:50:78","symbolAliases":[{"foreign":{"id":7985,"name":"IZkETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"75:6:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"./common/CorrelatedTokenOracle.sol","id":7988,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8041,"sourceUnit":8612,"src":"117:75:78","symbolAliases":[{"foreign":{"id":7987,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"126:21:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7990,"name":"CorrelatedTokenOracle","nameLocations":["315:21:78"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"315:21:78"},"id":7991,"nodeType":"InheritanceSpecifier","src":"315:21:78"}],"canonicalName":"ZkETHOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":7989,"nodeType":"StructuredDocumentation","src":"194:96:78","text":" @title ZkETHOracle\n @author Venus\n @notice This oracle fetches the price of zkETH"},"fullyImplemented":true,"id":8040,"linearizedBaseContracts":[8040,8611,4968,5140],"name":"ZkETHOracle","nameLocation":"300:11:78","nodeType":"ContractDefinition","nodes":[{"body":{"id":8024,"nodeType":"Block","src":"1044:2:78","statements":[]},"documentation":{"id":7992,"nodeType":"StructuredDocumentation","src":"343:56:78","text":"@notice Constructor for the implementation contract."},"id":8025,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8013,"name":"zkETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7994,"src":"772:5:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8014,"name":"rzkETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"791:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8015,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"811:15:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8016,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"840:16:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8017,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"870:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8018,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"901:30:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8019,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"945:24:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8020,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"983:20:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8021,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"1017:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8022,"kind":"baseConstructorSpecifier","modifierName":{"id":8012,"name":"CorrelatedTokenOracle","nameLocations":["737:21:78"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"737:21:78"},"nodeType":"ModifierInvocation","src":"737:302:78"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7994,"mutability":"mutable","name":"zkETH","nameLocation":"433:5:78","nodeType":"VariableDeclaration","scope":8025,"src":"425:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7993,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7996,"mutability":"mutable","name":"rzkETH","nameLocation":"456:6:78","nodeType":"VariableDeclaration","scope":8025,"src":"448:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7995,"name":"address","nodeType":"ElementaryTypeName","src":"448:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7998,"mutability":"mutable","name":"resilientOracle","nameLocation":"480:15:78","nodeType":"VariableDeclaration","scope":8025,"src":"472:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7997,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8000,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"513:16:78","nodeType":"VariableDeclaration","scope":8025,"src":"505:24:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7999,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8002,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"547:17:78","nodeType":"VariableDeclaration","scope":8025,"src":"539:25:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8001,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8004,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"582:30:78","nodeType":"VariableDeclaration","scope":8025,"src":"574:38:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8003,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8006,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"630:24:78","nodeType":"VariableDeclaration","scope":8025,"src":"622:32:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8005,"name":"uint256","nodeType":"ElementaryTypeName","src":"622:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8008,"mutability":"mutable","name":"accessControlManager","nameLocation":"672:20:78","nodeType":"VariableDeclaration","scope":8025,"src":"664:28:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8007,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8010,"mutability":"mutable","name":"_snapshotGap","nameLocation":"710:12:78","nodeType":"VariableDeclaration","scope":8025,"src":"702:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8009,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"415:313:78"},"returnParameters":{"id":8023,"nodeType":"ParameterList","parameters":[],"src":"1044:0:78"},"scope":8040,"src":"404:642:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8541],"body":{"id":8038,"nodeType":"Block","src":"1230:62:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8033,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"1254:16:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8032,"name":"IZkETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"1247:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZkETH_$5130_$","typeString":"type(contract IZkETH)"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1247:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZkETH_$5130","typeString":"contract IZkETH"}},"id":8035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1272:11:78","memberName":"LSTPerToken","nodeType":"MemberAccess","referencedDeclaration":5124,"src":"1247:36:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1247:38:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8031,"id":8037,"nodeType":"Return","src":"1240:45:78"}]},"documentation":{"id":8026,"nodeType":"StructuredDocumentation","src":"1052:103:78","text":" @notice Gets the amount of rzkETH for 1 zkETH\n @return amount Amount of rzkETH"},"functionSelector":"abb85613","id":8039,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1169:19:78","nodeType":"FunctionDefinition","overrides":{"id":8028,"nodeType":"OverrideSpecifier","overrides":[],"src":"1203:8:78"},"parameters":{"id":8027,"nodeType":"ParameterList","parameters":[],"src":"1188:2:78"},"returnParameters":{"id":8031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8039,"src":"1221:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8029,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:9:78"},"scope":8040,"src":"1160:132:78","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":8041,"src":"291:1003:78","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1254:78"}},"contracts/oracles/common/CorrelatedTokenOracle.sol":{"id":79,"ast":{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"IAccessControlManagerV8":[3599],"ICappedOracle":[4968],"IERC20Metadata":[2930],"OracleInterface":[5140],"ResilientOracleInterface":[5160],"SECONDS_PER_YEAR":[3613],"ensureNonzeroAddress":[3639]},"id":8612,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8042,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:79"},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../../interfaces/OracleInterface.sol","id":8045,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":5173,"src":"66:97:79","symbolAliases":[{"foreign":{"id":8043,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"75:15:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8044,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"92:24:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/validators.sol","file":"@venusprotocol/solidity-utilities/contracts/validators.sol","id":8047,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":3655,"src":"164:98:79","symbolAliases":[{"foreign":{"id":8046,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"173:20:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","file":"@venusprotocol/solidity-utilities/contracts/constants.sol","id":8049,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":3614,"src":"263:93:79","symbolAliases":[{"foreign":{"id":8048,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3613,"src":"272:16:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":8051,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":2931,"src":"357:99:79","symbolAliases":[{"foreign":{"id":8050,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"366:14:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/ICappedOracle.sol","file":"../../interfaces/ICappedOracle.sol","id":8053,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":4969,"src":"457:67:79","symbolAliases":[{"foreign":{"id":8052,"name":"ICappedOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"466:13:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol","file":"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol","id":8055,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8612,"sourceUnit":3600,"src":"525:127:79","symbolAliases":[{"foreign":{"id":8054,"name":"IAccessControlManagerV8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"534:23:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8057,"name":"OracleInterface","nameLocations":["826:15:79"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"826:15:79"},"id":8058,"nodeType":"InheritanceSpecifier","src":"826:15:79"},{"baseName":{"id":8059,"name":"ICappedOracle","nameLocations":["843:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":4968,"src":"843:13:79"},"id":8060,"nodeType":"InheritanceSpecifier","src":"843:13:79"}],"canonicalName":"CorrelatedTokenOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":8056,"nodeType":"StructuredDocumentation","src":"654:128:79","text":" @title CorrelatedTokenOracle\n @notice This oracle fetches the price of a token that is correlated to another token."},"fullyImplemented":false,"id":8611,"linearizedBaseContracts":[8611,4968,5140],"name":"CorrelatedTokenOracle","nameLocation":"801:21:79","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":8061,"nodeType":"StructuredDocumentation","src":"863:43:79","text":"@notice Address of the correlated token"},"functionSelector":"69818a35","id":8063,"mutability":"immutable","name":"CORRELATED_TOKEN","nameLocation":"936:16:79","nodeType":"VariableDeclaration","scope":8611,"src":"911:41:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8062,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":8064,"nodeType":"StructuredDocumentation","src":"959:43:79","text":"@notice Address of the underlying token"},"functionSelector":"29db1be6","id":8066,"mutability":"immutable","name":"UNDERLYING_TOKEN","nameLocation":"1032:16:79","nodeType":"VariableDeclaration","scope":8611,"src":"1007:41:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8065,"name":"address","nodeType":"ElementaryTypeName","src":"1007:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":8067,"nodeType":"StructuredDocumentation","src":"1055:39:79","text":"@notice Address of Resilient Oracle"},"functionSelector":"a4edcd4c","id":8070,"mutability":"immutable","name":"RESILIENT_ORACLE","nameLocation":"1141:16:79","nodeType":"VariableDeclaration","scope":8611,"src":"1099:58:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"},"typeName":{"id":8069,"nodeType":"UserDefinedTypeName","pathNode":{"id":8068,"name":"ResilientOracleInterface","nameLocations":["1099:24:79"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"1099:24:79"},"referencedDeclaration":5160,"src":"1099:24:79","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"visibility":"public"},{"constant":false,"documentation":{"id":8071,"nodeType":"StructuredDocumentation","src":"1164:56:79","text":"@notice Address of the AccessControlManager contract"},"functionSelector":"45be2dc7","id":8074,"mutability":"immutable","name":"ACCESS_CONTROL_MANAGER","nameLocation":"1266:22:79","nodeType":"VariableDeclaration","scope":8611,"src":"1225:63:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"},"typeName":{"id":8073,"nodeType":"UserDefinedTypeName","pathNode":{"id":8072,"name":"IAccessControlManagerV8","nameLocations":["1225:23:79"],"nodeType":"IdentifierPath","referencedDeclaration":3599,"src":"1225:23:79"},"referencedDeclaration":3599,"src":"1225:23:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"visibility":"public"},{"constant":false,"functionSelector":"ac5a693e","id":8076,"mutability":"mutable","name":"growthRatePerSecond","nameLocation":"1379:19:79","nodeType":"VariableDeclaration","scope":8611,"src":"1364:34:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8075,"name":"uint256","nodeType":"ElementaryTypeName","src":"1364:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":8077,"nodeType":"StructuredDocumentation","src":"1405:36:79","text":"@notice Snapshot update interval"},"functionSelector":"07d0413c","id":8079,"mutability":"mutable","name":"snapshotInterval","nameLocation":"1461:16:79","nodeType":"VariableDeclaration","scope":8611,"src":"1446:31:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8078,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":8080,"nodeType":"StructuredDocumentation","src":"1484:54:79","text":"@notice Last stored snapshot maximum exchange rate"},"functionSelector":"596efe6f","id":8082,"mutability":"mutable","name":"snapshotMaxExchangeRate","nameLocation":"1558:23:79","nodeType":"VariableDeclaration","scope":8611,"src":"1543:38:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1543:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":8083,"nodeType":"StructuredDocumentation","src":"1588:42:79","text":"@notice Last stored snapshot timestamp"},"functionSelector":"9c43eb54","id":8085,"mutability":"mutable","name":"snapshotTimestamp","nameLocation":"1650:17:79","nodeType":"VariableDeclaration","scope":8611,"src":"1635:32:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1635:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":8086,"nodeType":"StructuredDocumentation","src":"1674:49:79","text":"@notice Gap to add when updating the snapshot"},"functionSelector":"4169d245","id":8088,"mutability":"mutable","name":"snapshotGap","nameLocation":"1743:11:79","nodeType":"VariableDeclaration","scope":8611,"src":"1728:26:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8087,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":8089,"nodeType":"StructuredDocumentation","src":"1761:48:79","text":"@notice Emitted when the snapshot is updated"},"eventSelector":"2c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d","id":8095,"name":"SnapshotUpdated","nameLocation":"1820:15:79","nodeType":"EventDefinition","parameters":{"id":8094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8091,"indexed":true,"mutability":"mutable","name":"maxExchangeRate","nameLocation":"1852:15:79","nodeType":"VariableDeclaration","scope":8095,"src":"1836:31:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1836:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8093,"indexed":true,"mutability":"mutable","name":"timestamp","nameLocation":"1885:9:79","nodeType":"VariableDeclaration","scope":8095,"src":"1869:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8092,"name":"uint256","nodeType":"ElementaryTypeName","src":"1869:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1835:60:79"},"src":"1814:82:79"},{"anonymous":false,"documentation":{"id":8096,"nodeType":"StructuredDocumentation","src":"1902:51:79","text":"@notice Emitted when the growth rate is updated"},"eventSelector":"a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608","id":8106,"name":"GrowthRateUpdated","nameLocation":"1964:17:79","nodeType":"EventDefinition","parameters":{"id":8105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8098,"indexed":true,"mutability":"mutable","name":"oldGrowthRatePerSecond","nameLocation":"2007:22:79","nodeType":"VariableDeclaration","scope":8106,"src":"1991:38:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8097,"name":"uint256","nodeType":"ElementaryTypeName","src":"1991:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8100,"indexed":true,"mutability":"mutable","name":"newGrowthRatePerSecond","nameLocation":"2055:22:79","nodeType":"VariableDeclaration","scope":8106,"src":"2039:38:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2039:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8102,"indexed":true,"mutability":"mutable","name":"oldSnapshotInterval","nameLocation":"2103:19:79","nodeType":"VariableDeclaration","scope":8106,"src":"2087:35:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8101,"name":"uint256","nodeType":"ElementaryTypeName","src":"2087:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8104,"indexed":false,"mutability":"mutable","name":"newSnapshotInterval","nameLocation":"2140:19:79","nodeType":"VariableDeclaration","scope":8106,"src":"2132:27:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1981:184:79"},"src":"1958:208:79"},{"anonymous":false,"documentation":{"id":8107,"nodeType":"StructuredDocumentation","src":"2172:52:79","text":"@notice Emitted when the snapshot gap is updated"},"eventSelector":"eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f","id":8113,"name":"SnapshotGapUpdated","nameLocation":"2235:18:79","nodeType":"EventDefinition","parameters":{"id":8112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8109,"indexed":true,"mutability":"mutable","name":"oldSnapshotGap","nameLocation":"2270:14:79","nodeType":"VariableDeclaration","scope":8113,"src":"2254:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8108,"name":"uint256","nodeType":"ElementaryTypeName","src":"2254:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8111,"indexed":true,"mutability":"mutable","name":"newSnapshotGap","nameLocation":"2302:14:79","nodeType":"VariableDeclaration","scope":8113,"src":"2286:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8110,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2253:64:79"},"src":"2229:89:79"},{"documentation":{"id":8114,"nodeType":"StructuredDocumentation","src":"2324:50:79","text":"@notice Thrown if the token address is invalid"},"errorSelector":"1eb00b06","id":8116,"name":"InvalidTokenAddress","nameLocation":"2385:19:79","nodeType":"ErrorDefinition","parameters":{"id":8115,"nodeType":"ParameterList","parameters":[],"src":"2404:2:79"},"src":"2379:28:79"},{"documentation":{"id":8117,"nodeType":"StructuredDocumentation","src":"2413:48:79","text":"@notice Thrown if the growth rate is invalid"},"errorSelector":"a76fcc8a","id":8119,"name":"InvalidGrowthRate","nameLocation":"2472:17:79","nodeType":"ErrorDefinition","parameters":{"id":8118,"nodeType":"ParameterList","parameters":[],"src":"2489:2:79"},"src":"2466:26:79"},{"documentation":{"id":8120,"nodeType":"StructuredDocumentation","src":"2498:53:79","text":"@notice Thrown if the initial snapshot is invalid"},"errorSelector":"b8a5589b","id":8122,"name":"InvalidInitialSnapshot","nameLocation":"2562:22:79","nodeType":"ErrorDefinition","parameters":{"id":8121,"nodeType":"ParameterList","parameters":[],"src":"2584:2:79"},"src":"2556:31:79"},{"documentation":{"id":8123,"nodeType":"StructuredDocumentation","src":"2593:63:79","text":"@notice Thrown if the max snapshot exchange rate is invalid"},"errorSelector":"5f183887","id":8125,"name":"InvalidSnapshotMaxExchangeRate","nameLocation":"2667:30:79","nodeType":"ErrorDefinition","parameters":{"id":8124,"nodeType":"ParameterList","parameters":[],"src":"2697:2:79"},"src":"2661:39:79"},{"documentation":{"id":8126,"nodeType":"StructuredDocumentation","src":"2706:80:79","text":"@notice @notice Thrown when the action is prohibited by AccessControlManager"},"errorSelector":"4a3fa293","id":8134,"name":"Unauthorized","nameLocation":"2797:12:79","nodeType":"ErrorDefinition","parameters":{"id":8133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8128,"mutability":"mutable","name":"sender","nameLocation":"2818:6:79","nodeType":"VariableDeclaration","scope":8134,"src":"2810:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8127,"name":"address","nodeType":"ElementaryTypeName","src":"2810:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8130,"mutability":"mutable","name":"calledContract","nameLocation":"2834:14:79","nodeType":"VariableDeclaration","scope":8134,"src":"2826:22:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8129,"name":"address","nodeType":"ElementaryTypeName","src":"2826:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8132,"mutability":"mutable","name":"methodSignature","nameLocation":"2857:15:79","nodeType":"VariableDeclaration","scope":8134,"src":"2850:22:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8131,"name":"string","nodeType":"ElementaryTypeName","src":"2850:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2809:64:79"},"src":"2791:83:79"},{"body":{"id":8252,"nodeType":"Block","src":"3495:1052:79","statements":[{"expression":{"id":8160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8156,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"3505:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8157,"name":"_annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"3527:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8158,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3613,"src":"3547:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3527:36:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3505:58:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8161,"nodeType":"ExpressionStatement","src":"3505:58:79"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8162,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"3579:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3602:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3579:24:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8165,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8145,"src":"3607:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3607:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3579:49:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3578:51:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8170,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"3634:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3634:23:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8173,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8145,"src":"3661:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3682:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3661:22:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3634:49:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3633:51:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3578:106:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8182,"nodeType":"IfStatement","src":"3574:150:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8179,"name":"InvalidGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"3705:17:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3705:19:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8181,"nodeType":"RevertStatement","src":"3698:26:79"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8183,"name":"_initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"3740:31:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3775:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3740:36:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8186,"name":"_initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8149,"src":"3780:25:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3809:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3780:30:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3740:70:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3739:72:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8191,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8145,"src":"3815:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3835:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3815:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3739:97:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8199,"nodeType":"IfStatement","src":"3735:159:79","trueBody":{"id":8198,"nodeType":"Block","src":"3838:56:79","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8195,"name":"InvalidInitialSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8122,"src":"3859:22:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:24:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8197,"nodeType":"RevertStatement","src":"3852:31:79"}]}},{"expression":{"arguments":[{"id":8201,"name":"_correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8137,"src":"3925:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8200,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"3904:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":8202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3904:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8203,"nodeType":"ExpressionStatement","src":"3904:38:79"},{"expression":{"arguments":[{"id":8205,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8139,"src":"3973:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8204,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"3952:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3952:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8207,"nodeType":"ExpressionStatement","src":"3952:38:79"},{"expression":{"arguments":[{"id":8209,"name":"_resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8141,"src":"4021:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8208,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"4000:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4000:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8211,"nodeType":"ExpressionStatement","src":"4000:38:79"},{"expression":{"arguments":[{"id":8213,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8151,"src":"4069:21:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8212,"name":"ensureNonzeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"4048:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4048:43:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8215,"nodeType":"ExpressionStatement","src":"4048:43:79"},{"expression":{"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8216,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"4102:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8217,"name":"_correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8137,"src":"4121:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4102:35:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8219,"nodeType":"ExpressionStatement","src":"4102:35:79"},{"expression":{"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8220,"name":"UNDERLYING_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"4147:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8221,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8139,"src":"4166:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4147:35:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8223,"nodeType":"ExpressionStatement","src":"4147:35:79"},{"expression":{"id":8228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8224,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"4192:16:79","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8226,"name":"_resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8141,"src":"4236:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8225,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"4211:24:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ResilientOracleInterface_$5160_$","typeString":"type(contract ResilientOracleInterface)"}},"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4211:42:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"src":"4192:61:79","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":8229,"nodeType":"ExpressionStatement","src":"4192:61:79"},{"expression":{"id":8232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8230,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"4263:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8231,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8145,"src":"4282:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4263:36:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8233,"nodeType":"ExpressionStatement","src":"4263:36:79"},{"expression":{"id":8236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8234,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"4310:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8235,"name":"_initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"4336:31:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4310:57:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8237,"nodeType":"ExpressionStatement","src":"4310:57:79"},{"expression":{"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8238,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"4377:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8239,"name":"_initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8149,"src":"4397:25:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4377:45:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8241,"nodeType":"ExpressionStatement","src":"4377:45:79"},{"expression":{"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8242,"name":"snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"4432:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8243,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"4446:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4432:26:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8245,"nodeType":"ExpressionStatement","src":"4432:26:79"},{"expression":{"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8246,"name":"ACCESS_CONTROL_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"4469:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8248,"name":"_accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8151,"src":"4518:21:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8247,"name":"IAccessControlManagerV8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"4494:23:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlManagerV8_$3599_$","typeString":"type(contract IAccessControlManagerV8)"}},"id":8249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4494:46:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"src":"4469:71:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"id":8251,"nodeType":"ExpressionStatement","src":"4469:71:79"}]},"documentation":{"id":8135,"nodeType":"StructuredDocumentation","src":"2880:259:79","text":" @notice Constructor for the implementation contract.\n @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n @custom:error InvalidInitialSnapshot error is thrown if the initial snapshot values are invalid"},"id":8253,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8137,"mutability":"mutable","name":"_correlatedToken","nameLocation":"3173:16:79","nodeType":"VariableDeclaration","scope":8253,"src":"3165:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8136,"name":"address","nodeType":"ElementaryTypeName","src":"3165:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8139,"mutability":"mutable","name":"_underlyingToken","nameLocation":"3207:16:79","nodeType":"VariableDeclaration","scope":8253,"src":"3199:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8138,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8141,"mutability":"mutable","name":"_resilientOracle","nameLocation":"3241:16:79","nodeType":"VariableDeclaration","scope":8253,"src":"3233:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8140,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8143,"mutability":"mutable","name":"_annualGrowthRate","nameLocation":"3275:17:79","nodeType":"VariableDeclaration","scope":8253,"src":"3267:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8142,"name":"uint256","nodeType":"ElementaryTypeName","src":"3267:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8145,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"3310:17:79","nodeType":"VariableDeclaration","scope":8253,"src":"3302:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8144,"name":"uint256","nodeType":"ElementaryTypeName","src":"3302:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8147,"mutability":"mutable","name":"_initialSnapshotMaxExchangeRate","nameLocation":"3345:31:79","nodeType":"VariableDeclaration","scope":8253,"src":"3337:39:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8146,"name":"uint256","nodeType":"ElementaryTypeName","src":"3337:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8149,"mutability":"mutable","name":"_initialSnapshotTimestamp","nameLocation":"3394:25:79","nodeType":"VariableDeclaration","scope":8253,"src":"3386:33:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8148,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8151,"mutability":"mutable","name":"_accessControlManager","nameLocation":"3437:21:79","nodeType":"VariableDeclaration","scope":8253,"src":"3429:29:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8150,"name":"address","nodeType":"ElementaryTypeName","src":"3429:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8153,"mutability":"mutable","name":"_snapshotGap","nameLocation":"3476:12:79","nodeType":"VariableDeclaration","scope":8253,"src":"3468:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8152,"name":"uint256","nodeType":"ElementaryTypeName","src":"3468:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3155:339:79"},"returnParameters":{"id":8155,"nodeType":"ParameterList","parameters":[],"src":"3495:0:79"},"scope":8611,"src":"3144:1403:79","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8278,"nodeType":"Block","src":"4935:252:79","statements":[{"expression":{"arguments":[{"hexValue":"736574536e617073686f742875696e743235362c75696e7432353629","id":8262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4965:30:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_7fc4e4a0635974110f3286221107f8652764591d4a7006b75510dca4b631b224","typeString":"literal_string \"setSnapshot(uint256,uint256)\""},"value":"setSnapshot(uint256,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7fc4e4a0635974110f3286221107f8652764591d4a7006b75510dca4b631b224","typeString":"literal_string \"setSnapshot(uint256,uint256)\""}],"id":8261,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"4945:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4945:51:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8264,"nodeType":"ExpressionStatement","src":"4945:51:79"},{"expression":{"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8265,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"5007:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8266,"name":"_snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8256,"src":"5033:24:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:50:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8268,"nodeType":"ExpressionStatement","src":"5007:50:79"},{"expression":{"id":8271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8269,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"5067:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8270,"name":"_snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8258,"src":"5087:18:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5067:38:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8272,"nodeType":"ExpressionStatement","src":"5067:38:79"},{"eventCall":{"arguments":[{"id":8274,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"5137:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8275,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"5162:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8273,"name":"SnapshotUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"5121:15:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:59:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8277,"nodeType":"EmitStatement","src":"5116:64:79"}]},"documentation":{"id":8254,"nodeType":"StructuredDocumentation","src":"4553:285:79","text":" @notice Directly sets the snapshot exchange rate and timestamp\n @param _snapshotMaxExchangeRate The exchange rate to set\n @param _snapshotTimestamp The timestamp to set\n @custom:event Emits SnapshotUpdated event on successful update of the snapshot"},"functionSelector":"7fc4e4a0","id":8279,"implemented":true,"kind":"function","modifiers":[],"name":"setSnapshot","nameLocation":"4852:11:79","nodeType":"FunctionDefinition","parameters":{"id":8259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8256,"mutability":"mutable","name":"_snapshotMaxExchangeRate","nameLocation":"4872:24:79","nodeType":"VariableDeclaration","scope":8279,"src":"4864:32:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8255,"name":"uint256","nodeType":"ElementaryTypeName","src":"4864:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8258,"mutability":"mutable","name":"_snapshotTimestamp","nameLocation":"4906:18:79","nodeType":"VariableDeclaration","scope":8279,"src":"4898:26:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8257,"name":"uint256","nodeType":"ElementaryTypeName","src":"4898:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4863:62:79"},"returnParameters":{"id":8260,"nodeType":"ParameterList","parameters":[],"src":"4935:0:79"},"scope":8611,"src":"4843:344:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8333,"nodeType":"Block","src":"5652:524:79","statements":[{"expression":{"arguments":[{"hexValue":"73657447726f777468526174652875696e743235362c75696e7432353629","id":8288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5682:32:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_643d813d07b410278bbf40c48f3bb7a1e319e798cf9794db078269ce38100918","typeString":"literal_string \"setGrowthRate(uint256,uint256)\""},"value":"setGrowthRate(uint256,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_643d813d07b410278bbf40c48f3bb7a1e319e798cf9794db078269ce38100918","typeString":"literal_string \"setGrowthRate(uint256,uint256)\""}],"id":8287,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"5662:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:53:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8290,"nodeType":"ExpressionStatement","src":"5662:53:79"},{"assignments":[8292],"declarations":[{"constant":false,"id":8292,"mutability":"mutable","name":"oldGrowthRatePerSecond","nameLocation":"5733:22:79","nodeType":"VariableDeclaration","scope":8333,"src":"5725:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8291,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8294,"initialValue":{"id":8293,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"5758:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5725:52:79"},{"expression":{"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8295,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"5788:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8296,"name":"_annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8282,"src":"5810:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8297,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3613,"src":"5830:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5810:36:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5788:58:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8300,"nodeType":"ExpressionStatement","src":"5788:58:79"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8301,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"5862:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5885:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5862:24:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8304,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8284,"src":"5890:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5910:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5890:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5862:49:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5861:51:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8309,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"5917:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5939:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5917:23:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8312,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8284,"src":"5944:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5965:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5944:22:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5917:49:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8316,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5916:51:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5861:106:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8321,"nodeType":"IfStatement","src":"5857:150:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8318,"name":"InvalidGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"5988:17:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5988:19:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8320,"nodeType":"RevertStatement","src":"5981:26:79"}},{"eventCall":{"arguments":[{"id":8323,"name":"oldGrowthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"6041:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8324,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"6065:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8325,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"6086:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8326,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8284,"src":"6104:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8322,"name":"GrowthRateUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"6023:17:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":8327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6023:99:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8328,"nodeType":"EmitStatement","src":"6018:104:79"},{"expression":{"id":8331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8329,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"6133:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8330,"name":"_snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8284,"src":"6152:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6133:36:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8332,"nodeType":"ExpressionStatement","src":"6133:36:79"}]},"documentation":{"id":8280,"nodeType":"StructuredDocumentation","src":"5193:368:79","text":" @notice Sets the growth rate and snapshot interval\n @param _annualGrowthRate The annual growth rate to set\n @param _snapshotInterval The snapshot interval to set\n @custom:error InvalidGrowthRate error is thrown if the growth rate is invalid\n @custom:event Emits GrowthRateUpdated event on successful update of the growth rate"},"functionSelector":"643d813d","id":8334,"implemented":true,"kind":"function","modifiers":[],"name":"setGrowthRate","nameLocation":"5575:13:79","nodeType":"FunctionDefinition","parameters":{"id":8285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8282,"mutability":"mutable","name":"_annualGrowthRate","nameLocation":"5597:17:79","nodeType":"VariableDeclaration","scope":8334,"src":"5589:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5589:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8284,"mutability":"mutable","name":"_snapshotInterval","nameLocation":"5624:17:79","nodeType":"VariableDeclaration","scope":8334,"src":"5616:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8283,"name":"uint256","nodeType":"ElementaryTypeName","src":"5616:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5588:54:79"},"returnParameters":{"id":8286,"nodeType":"ParameterList","parameters":[],"src":"5652:0:79"},"scope":8611,"src":"5566:610:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8353,"nodeType":"Block","src":"6434:161:79","statements":[{"expression":{"arguments":[{"hexValue":"736574536e617073686f744761702875696e7432353629","id":8341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6464:25:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_5213f9c8fe46854afc99d359660a7454b1e9fe4bb0082b1dc2ec55d43e0e044d","typeString":"literal_string \"setSnapshotGap(uint256)\""},"value":"setSnapshotGap(uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5213f9c8fe46854afc99d359660a7454b1e9fe4bb0082b1dc2ec55d43e0e044d","typeString":"literal_string \"setSnapshotGap(uint256)\""}],"id":8340,"name":"_checkAccessAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"6444:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) view"}},"id":8342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6444:46:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8343,"nodeType":"ExpressionStatement","src":"6444:46:79"},{"eventCall":{"arguments":[{"id":8345,"name":"snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"6525:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8346,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8337,"src":"6538:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8344,"name":"SnapshotGapUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8113,"src":"6506:18:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6506:45:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8348,"nodeType":"EmitStatement","src":"6501:50:79"},{"expression":{"id":8351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8349,"name":"snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"6562:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8350,"name":"_snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8337,"src":"6576:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6562:26:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8352,"nodeType":"ExpressionStatement","src":"6562:26:79"}]},"documentation":{"id":8335,"nodeType":"StructuredDocumentation","src":"6182:192:79","text":" @notice Sets the snapshot gap\n @param _snapshotGap The snapshot gap to set\n @custom:event Emits SnapshotGapUpdated event on successful update of the snapshot gap"},"functionSelector":"5213f9c8","id":8354,"implemented":true,"kind":"function","modifiers":[],"name":"setSnapshotGap","nameLocation":"6388:14:79","nodeType":"FunctionDefinition","parameters":{"id":8338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8337,"mutability":"mutable","name":"_snapshotGap","nameLocation":"6411:12:79","nodeType":"VariableDeclaration","scope":8354,"src":"6403:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8336,"name":"uint256","nodeType":"ElementaryTypeName","src":"6403:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6402:22:79"},"returnParameters":{"id":8339,"nodeType":"ParameterList","parameters":[],"src":"6434:0:79"},"scope":8611,"src":"6379:216:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8388,"nodeType":"Block","src":"6786:340:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8360,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"6800:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6820:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6800:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8366,"nodeType":"IfStatement","src":"6796:64:79","trueBody":{"id":8365,"nodeType":"Block","src":"6823:37:79","statements":[{"expression":{"hexValue":"66616c7365","id":8363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6844:5:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8359,"id":8364,"nodeType":"Return","src":"6837:12:79"}]}},{"assignments":[8368],"declarations":[{"constant":false,"id":8368,"mutability":"mutable","name":"maxAllowedExchangeRate","nameLocation":"6878:22:79","nodeType":"VariableDeclaration","scope":8388,"src":"6870:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8367,"name":"uint256","nodeType":"ElementaryTypeName","src":"6870:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8371,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8369,"name":"getMaxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8535,"src":"6903:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6870:60:79"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8372,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6944:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6970:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6944:27:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8378,"nodeType":"IfStatement","src":"6940:70:79","trueBody":{"id":8377,"nodeType":"Block","src":"6973:37:79","statements":[{"expression":{"hexValue":"66616c7365","id":8375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6994:5:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8359,"id":8376,"nodeType":"Return","src":"6987:12:79"}]}},{"assignments":[8380],"declarations":[{"constant":false,"id":8380,"mutability":"mutable","name":"exchangeRate","nameLocation":"7028:12:79","nodeType":"VariableDeclaration","scope":8388,"src":"7020:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8379,"name":"uint256","nodeType":"ElementaryTypeName","src":"7020:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8383,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8381,"name":"getUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8541,"src":"7043:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7043:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7020:44:79"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8384,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8380,"src":"7082:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8385,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"7097:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7082:37:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8359,"id":8387,"nodeType":"Return","src":"7075:44:79"}]},"documentation":{"id":8355,"nodeType":"StructuredDocumentation","src":"6601:123:79","text":" @notice Returns if the price is capped\n @return isCapped Boolean indicating if the price is capped"},"functionSelector":"671528d4","id":8389,"implemented":true,"kind":"function","modifiers":[],"name":"isCapped","nameLocation":"6738:8:79","nodeType":"FunctionDefinition","parameters":{"id":8356,"nodeType":"ParameterList","parameters":[],"src":"6746:2:79"},"returnParameters":{"id":8359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8389,"src":"6780:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8357,"name":"bool","nodeType":"ElementaryTypeName","src":"6780:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6779:6:79"},"scope":8611,"src":"6729:397:79","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[4967],"body":{"id":8451,"nodeType":"Block","src":"7442:652:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8394,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7456:5:79","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7462:9:79","memberName":"timestamp","nodeType":"MemberAccess","src":"7456:15:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8396,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"7474:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7456:35:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8398,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"7494:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7456:54:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8400,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"7514:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7534:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7514:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7456:79:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8405,"nodeType":"IfStatement","src":"7452:92:79","trueBody":{"functionReturnParameters":8393,"id":8404,"nodeType":"Return","src":"7537:7:79"}},{"assignments":[8407],"declarations":[{"constant":false,"id":8407,"mutability":"mutable","name":"exchangeRate","nameLocation":"7562:12:79","nodeType":"VariableDeclaration","scope":8451,"src":"7554:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8406,"name":"uint256","nodeType":"ElementaryTypeName","src":"7554:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8410,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8408,"name":"getUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8541,"src":"7577:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7577:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7554:44:79"},{"assignments":[8412],"declarations":[{"constant":false,"id":8412,"mutability":"mutable","name":"maxAllowedExchangeRate","nameLocation":"7616:22:79","nodeType":"VariableDeclaration","scope":8451,"src":"7608:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8411,"name":"uint256","nodeType":"ElementaryTypeName","src":"7608:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8415,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8413,"name":"getMaxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8535,"src":"7641:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7641:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7608:60:79"},{"expression":{"id":8426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8416,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"7679:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8417,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"7718:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8418,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"7733:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7718:37:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8421,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"7783:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7718:77:79","trueExpression":{"id":8420,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"7758:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7717:79:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8424,"name":"snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"7811:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7717:105:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7679:143:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8427,"nodeType":"ExpressionStatement","src":"7679:143:79"},{"expression":{"id":8431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8428,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"7832:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8429,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7852:5:79","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7858:9:79","memberName":"timestamp","nodeType":"MemberAccess","src":"7852:15:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7832:35:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8432,"nodeType":"ExpressionStatement","src":"7832:35:79"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8433,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"7882:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7909:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7882:28:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8439,"nodeType":"IfStatement","src":"7878:73:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8436,"name":"InvalidSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"7919:30:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7919:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8438,"nodeType":"RevertStatement","src":"7912:39:79"}},{"expression":{"arguments":[{"id":8443,"name":"UNDERLYING_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"7996:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8440,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"7962:16:79","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7979:16:79","memberName":"updateAssetPrice","nodeType":"MemberAccess","referencedDeclaration":5152,"src":"7962:33:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":8444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7962:51:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8445,"nodeType":"ExpressionStatement","src":"7962:51:79"},{"eventCall":{"arguments":[{"id":8447,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"8044:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8448,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"8069:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8446,"name":"SnapshotUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"8028:15:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8028:59:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8450,"nodeType":"EmitStatement","src":"8023:64:79"}]},"documentation":{"id":8390,"nodeType":"StructuredDocumentation","src":"7132:263:79","text":" @notice Updates the snapshot price and timestamp\n @custom:event Emits SnapshotUpdated event on successful update of the snapshot\n @custom:error InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero"},"functionSelector":"69240426","id":8452,"implemented":true,"kind":"function","modifiers":[],"name":"updateSnapshot","nameLocation":"7409:14:79","nodeType":"FunctionDefinition","overrides":{"id":8392,"nodeType":"OverrideSpecifier","overrides":[],"src":"7433:8:79"},"parameters":{"id":8391,"nodeType":"ParameterList","parameters":[],"src":"7423:2:79"},"returnParameters":{"id":8393,"nodeType":"ParameterList","parameters":[],"src":"7442:0:79"},"scope":8611,"src":"7400:694:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5139],"body":{"id":8505,"nodeType":"Block","src":"8513:525:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8461,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"8527:5:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8462,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"8536:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8527:25:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8467,"nodeType":"IfStatement","src":"8523:59:79","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8464,"name":"InvalidTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"8561:19:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8561:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8466,"nodeType":"RevertStatement","src":"8554:28:79"}},{"assignments":[8469],"declarations":[{"constant":false,"id":8469,"mutability":"mutable","name":"exchangeRate","nameLocation":"8601:12:79","nodeType":"VariableDeclaration","scope":8505,"src":"8593:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8468,"name":"uint256","nodeType":"ElementaryTypeName","src":"8593:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8472,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8470,"name":"getUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8541,"src":"8616:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8616:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8593:44:79"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8473,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8079,"src":"8652:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8672:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8652:21:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8481,"nodeType":"IfStatement","src":"8648:88:79","trueBody":{"id":8480,"nodeType":"Block","src":"8675:61:79","statements":[{"expression":{"arguments":[{"id":8477,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"8712:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8476,"name":"_calculatePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8580,"src":"8696:15:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8696:29:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8460,"id":8479,"nodeType":"Return","src":"8689:36:79"}]}},{"assignments":[8483],"declarations":[{"constant":false,"id":8483,"mutability":"mutable","name":"maxAllowedExchangeRate","nameLocation":"8754:22:79","nodeType":"VariableDeclaration","scope":8505,"src":"8746:30:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8482,"name":"uint256","nodeType":"ElementaryTypeName","src":"8746:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8486,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8484,"name":"getMaxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8535,"src":"8779:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8779:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8746:60:79"},{"assignments":[8488],"declarations":[{"constant":false,"id":8488,"mutability":"mutable","name":"finalExchangeRate","nameLocation":"8825:17:79","nodeType":"VariableDeclaration","scope":8505,"src":"8817:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8487,"name":"uint256","nodeType":"ElementaryTypeName","src":"8817:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8500,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8489,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"8846:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8490,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"8861:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8846:37:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8492,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"8887:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8913:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8887:27:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8846:68:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8845:70:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8498,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"8967:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8845:134:79","trueExpression":{"id":8497,"name":"maxAllowedExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"8930:22:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8817:162:79"},{"expression":{"arguments":[{"id":8502,"name":"finalExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8488,"src":"9013:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8501,"name":"_calculatePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8580,"src":"8997:15:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8997:34:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8460,"id":8504,"nodeType":"Return","src":"8990:41:79"}]},"documentation":{"id":8453,"nodeType":"StructuredDocumentation","src":"8100:336:79","text":" @notice Fetches the price of the token\n @param asset Address of the token\n @return price The price of the token in scaled decimal places. It can be capped\n to a maximum value taking into account the growth rate\n @custom:error InvalidTokenAddress error is thrown if the token address is invalid"},"functionSelector":"41976e09","id":8506,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"8450:8:79","nodeType":"FunctionDefinition","overrides":{"id":8457,"nodeType":"OverrideSpecifier","overrides":[],"src":"8486:8:79"},"parameters":{"id":8456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8455,"mutability":"mutable","name":"asset","nameLocation":"8467:5:79","nodeType":"VariableDeclaration","scope":8506,"src":"8459:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8454,"name":"address","nodeType":"ElementaryTypeName","src":"8459:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8458:15:79"},"returnParameters":{"id":8460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8506,"src":"8504:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8458,"name":"uint256","nodeType":"ElementaryTypeName","src":"8504:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8503:9:79"},"scope":8611,"src":"8441:597:79","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":8534,"nodeType":"Block","src":"9252:260:79","statements":[{"assignments":[8513],"declarations":[{"constant":false,"id":8513,"mutability":"mutable","name":"timeElapsed","nameLocation":"9270:11:79","nodeType":"VariableDeclaration","scope":8534,"src":"9262:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8512,"name":"uint256","nodeType":"ElementaryTypeName","src":"9262:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8514,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9284:5:79","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9290:9:79","memberName":"timestamp","nodeType":"MemberAccess","src":"9284:15:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8516,"name":"snapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"9302:17:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9284:35:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9262:57:79"},{"assignments":[8520],"declarations":[{"constant":false,"id":8520,"mutability":"mutable","name":"maxExchangeRate","nameLocation":"9337:15:79","nodeType":"VariableDeclaration","scope":8534,"src":"9329:23:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8519,"name":"uint256","nodeType":"ElementaryTypeName","src":"9329:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8531,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8521,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"9355:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8522,"name":"snapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"9394:23:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8523,"name":"growthRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"9420:19:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9394:45:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8525,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8513,"src":"9442:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9394:59:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9393:61:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":8528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9469:4:79","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"9393:80:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9355:118:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9329:144:79"},{"expression":{"id":8532,"name":"maxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8520,"src":"9490:15:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8511,"id":8533,"nodeType":"Return","src":"9483:22:79"}]},"documentation":{"id":8507,"nodeType":"StructuredDocumentation","src":"9044:136:79","text":" @notice Gets the maximum allowed exchange rate for token\n @return maxExchangeRate Maximum allowed exchange rate"},"functionSelector":"bdf13af2","id":8535,"implemented":true,"kind":"function","modifiers":[],"name":"getMaxAllowedExchangeRate","nameLocation":"9194:25:79","nodeType":"FunctionDefinition","parameters":{"id":8508,"nodeType":"ParameterList","parameters":[],"src":"9219:2:79"},"returnParameters":{"id":8511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8535,"src":"9243:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9243:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9242:9:79"},"scope":8611,"src":"9185:327:79","stateMutability":"view","virtual":false,"visibility":"public"},{"documentation":{"id":8536,"nodeType":"StructuredDocumentation","src":"9518:133:79","text":" @notice Gets the underlying amount for correlated token\n @return underlyingAmount Amount of underlying token"},"functionSelector":"abb85613","id":8541,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"9665:19:79","nodeType":"FunctionDefinition","parameters":{"id":8537,"nodeType":"ParameterList","parameters":[],"src":"9684:2:79"},"returnParameters":{"id":8540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8541,"src":"9716:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8538,"name":"uint256","nodeType":"ElementaryTypeName","src":"9716:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:9:79"},"scope":8611,"src":"9656:69:79","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8579,"nodeType":"Block","src":"10037:272:79","statements":[{"assignments":[8550],"declarations":[{"constant":false,"id":8550,"mutability":"mutable","name":"underlyingUSDPrice","nameLocation":"10055:18:79","nodeType":"VariableDeclaration","scope":8579,"src":"10047:26:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8549,"name":"uint256","nodeType":"ElementaryTypeName","src":"10047:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8555,"initialValue":{"arguments":[{"id":8553,"name":"UNDERLYING_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8066,"src":"10102:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8551,"name":"RESILIENT_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"10076:16:79","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":8552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10093:8:79","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"10076:25:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10076:43:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10047:72:79"},{"assignments":[8558],"declarations":[{"constant":false,"id":8558,"mutability":"mutable","name":"token","nameLocation":"10145:5:79","nodeType":"VariableDeclaration","scope":8579,"src":"10130:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"},"typeName":{"id":8557,"nodeType":"UserDefinedTypeName","pathNode":{"id":8556,"name":"IERC20Metadata","nameLocations":["10130:14:79"],"nodeType":"IdentifierPath","referencedDeclaration":2930,"src":"10130:14:79"},"referencedDeclaration":2930,"src":"10130:14:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"id":8562,"initialValue":{"arguments":[{"id":8560,"name":"CORRELATED_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"10168:16:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8559,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"10153:14:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2930_$","typeString":"type(contract IERC20Metadata)"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10153:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"nodeType":"VariableDeclarationStatement","src":"10130:55:79"},{"assignments":[8564],"declarations":[{"constant":false,"id":8564,"mutability":"mutable","name":"decimals","nameLocation":"10203:8:79","nodeType":"VariableDeclaration","scope":8579,"src":"10195:16:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8563,"name":"uint256","nodeType":"ElementaryTypeName","src":"10195:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8568,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8565,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"10214:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2930","typeString":"contract IERC20Metadata"}},"id":8566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10220:8:79","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"10214:14:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10214:16:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10195:35:79"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8569,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8544,"src":"10249:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8570,"name":"underlyingUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"10264:18:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10249:33:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8572,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10248:35:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":8573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:79","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":8574,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8564,"src":"10293:8:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10287:14:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8576,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10286:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10248:54:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8548,"id":8578,"nodeType":"Return","src":"10241:61:79"}]},"documentation":{"id":8542,"nodeType":"StructuredDocumentation","src":"9731:222:79","text":" @notice Fetches price of the token based on an underlying exchange rate\n @param exchangeRate The underlying exchange rate to use\n @return price The price of the token in scaled decimal places"},"id":8580,"implemented":true,"kind":"function","modifiers":[],"name":"_calculatePrice","nameLocation":"9967:15:79","nodeType":"FunctionDefinition","parameters":{"id":8545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8544,"mutability":"mutable","name":"exchangeRate","nameLocation":"9991:12:79","nodeType":"VariableDeclaration","scope":8580,"src":"9983:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8543,"name":"uint256","nodeType":"ElementaryTypeName","src":"9983:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9982:22:79"},"returnParameters":{"id":8548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8547,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8580,"src":"10028:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8546,"name":"uint256","nodeType":"ElementaryTypeName","src":"10028:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10027:9:79"},"scope":8611,"src":"9958:351:79","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8609,"nodeType":"Block","src":"10591:215:79","statements":[{"assignments":[8587],"declarations":[{"constant":false,"id":8587,"mutability":"mutable","name":"isAllowedToCall","nameLocation":"10606:15:79","nodeType":"VariableDeclaration","scope":8609,"src":"10601:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8586,"name":"bool","nodeType":"ElementaryTypeName","src":"10601:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8594,"initialValue":{"arguments":[{"expression":{"id":8590,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10663:3:79","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10667:6:79","memberName":"sender","nodeType":"MemberAccess","src":"10663:10:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8592,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8583,"src":"10675:9:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":8588,"name":"ACCESS_CONTROL_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"10624:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControlManagerV8_$3599","typeString":"contract IAccessControlManagerV8"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10647:15:79","memberName":"isAllowedToCall","nodeType":"MemberAccess","referencedDeclaration":3587,"src":"10624:38:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view external returns (bool)"}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10624:61:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10601:84:79"},{"condition":{"id":8596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10700:16:79","subExpression":{"id":8595,"name":"isAllowedToCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8587,"src":"10701:15:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8608,"nodeType":"IfStatement","src":"10696:104:79","trueBody":{"id":8607,"nodeType":"Block","src":"10718:82:79","statements":[{"errorCall":{"arguments":[{"expression":{"id":8598,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10752:3:79","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10756:6:79","memberName":"sender","nodeType":"MemberAccess","src":"10752:10:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8602,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10772:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracle_$8611","typeString":"contract CorrelatedTokenOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CorrelatedTokenOracle_$8611","typeString":"contract CorrelatedTokenOracle"}],"id":8601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10764:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8600,"name":"address","nodeType":"ElementaryTypeName","src":"10764:7:79","typeDescriptions":{}}},"id":8603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10764:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8604,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8583,"src":"10779:9:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8597,"name":"Unauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8134,"src":"10739:12:79","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,address,string memory) pure"}},"id":8605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10739:50:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8606,"nodeType":"RevertStatement","src":"10732:57:79"}]}}]},"documentation":{"id":8581,"nodeType":"StructuredDocumentation","src":"10315:203:79","text":" @notice Reverts if the call is not allowed by AccessControlManager\n @param signature Method signature\n @custom:error Unauthorized error is thrown if the call is not allowed"},"id":8610,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAccessAllowed","nameLocation":"10532:19:79","nodeType":"FunctionDefinition","parameters":{"id":8584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8583,"mutability":"mutable","name":"signature","nameLocation":"10566:9:79","nodeType":"VariableDeclaration","scope":8610,"src":"10552:23:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8582,"name":"string","nodeType":"ElementaryTypeName","src":"10552:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10551:25:79"},"returnParameters":{"id":8585,"nodeType":"ParameterList","parameters":[],"src":"10591:0:79"},"scope":8611,"src":"10523:283:79","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8612,"src":"783:10025:79","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:10768:79"}},"contracts/oracles/mocks/MockAccountant.sol":{"id":80,"ast":{"absolutePath":"contracts/oracles/mocks/MockAccountant.sol","exportedSymbols":{"Context":[3290],"IAccountant":[4924],"MockAccountant":[8649],"Ownable":[1206]},"id":8650,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8613,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:80"},{"absolutePath":"contracts/interfaces/IAccountant.sol","file":"../../interfaces/IAccountant.sol","id":8614,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8650,"sourceUnit":4925,"src":"66:42:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":8615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8650,"sourceUnit":1207,"src":"109:52:80","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8616,"name":"IAccountant","nameLocations":["190:11:80"],"nodeType":"IdentifierPath","referencedDeclaration":4924,"src":"190:11:80"},"id":8617,"nodeType":"InheritanceSpecifier","src":"190:11:80"},{"baseName":{"id":8618,"name":"Ownable","nameLocations":["203:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"203:7:80"},"id":8619,"nodeType":"InheritanceSpecifier","src":"203:7:80"}],"canonicalName":"MockAccountant","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8649,"linearizedBaseContracts":[8649,1206,3290,4924],"name":"MockAccountant","nameLocation":"172:14:80","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"2c4e722e","id":8621,"mutability":"mutable","name":"rate","nameLocation":"232:4:80","nodeType":"VariableDeclaration","scope":8649,"src":"217:19:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8620,"name":"uint256","nodeType":"ElementaryTypeName","src":"217:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":8626,"nodeType":"Block","src":"267:2:80","statements":[]},"id":8627,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":8624,"kind":"baseConstructorSpecifier","modifierName":{"id":8623,"name":"Ownable","nameLocations":["257:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"257:7:80"},"nodeType":"ModifierInvocation","src":"257:9:80"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8622,"nodeType":"ParameterList","parameters":[],"src":"254:2:80"},"returnParameters":{"id":8625,"nodeType":"ParameterList","parameters":[],"src":"267:0:80"},"scope":8649,"src":"243:26:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8638,"nodeType":"Block","src":"326:29:80","statements":[{"expression":{"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8634,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8621,"src":"336:4:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8635,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8629,"src":"343:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"336:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8637,"nodeType":"ExpressionStatement","src":"336:12:80"}]},"functionSelector":"34fcf437","id":8639,"implemented":true,"kind":"function","modifiers":[{"id":8632,"kind":"modifierInvocation","modifierName":{"id":8631,"name":"onlyOwner","nameLocations":["316:9:80"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"316:9:80"},"nodeType":"ModifierInvocation","src":"316:9:80"}],"name":"setRate","nameLocation":"284:7:80","nodeType":"FunctionDefinition","parameters":{"id":8630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8629,"mutability":"mutable","name":"_rate","nameLocation":"300:5:80","nodeType":"VariableDeclaration","scope":8639,"src":"292:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8628,"name":"uint256","nodeType":"ElementaryTypeName","src":"292:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"291:15:80"},"returnParameters":{"id":8633,"nodeType":"ParameterList","parameters":[],"src":"326:0:80"},"scope":8649,"src":"275:80:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4923],"body":{"id":8647,"nodeType":"Block","src":"425:28:80","statements":[{"expression":{"id":8645,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8621,"src":"442:4:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8644,"id":8646,"nodeType":"Return","src":"435:11:80"}]},"functionSelector":"282a8700","id":8648,"implemented":true,"kind":"function","modifiers":[],"name":"getRateSafe","nameLocation":"370:11:80","nodeType":"FunctionDefinition","overrides":{"id":8641,"nodeType":"OverrideSpecifier","overrides":[],"src":"398:8:80"},"parameters":{"id":8640,"nodeType":"ParameterList","parameters":[],"src":"381:2:80"},"returnParameters":{"id":8644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8648,"src":"416:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8642,"name":"uint256","nodeType":"ElementaryTypeName","src":"416:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"415:9:80"},"scope":8649,"src":"361:92:80","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8650,"src":"163:292:80","usedErrors":[],"usedEvents":[1107]}],"src":"41:415:80"}},"contracts/oracles/mocks/MockBinanceFeedRegistry.sol":{"id":81,"ast":{"absolutePath":"contracts/oracles/mocks/MockBinanceFeedRegistry.sol","exportedSymbols":{"FeedRegistryInterface":[4916],"MockBinanceFeedRegistry":[8722]},"id":8723,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8651,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:81"},{"absolutePath":"contracts/interfaces/FeedRegistryInterface.sol","file":"../../interfaces/FeedRegistryInterface.sol","id":8652,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8723,"sourceUnit":4917,"src":"66:52:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8653,"name":"FeedRegistryInterface","nameLocations":["156:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":4916,"src":"156:21:81"},"id":8654,"nodeType":"InheritanceSpecifier","src":"156:21:81"}],"canonicalName":"MockBinanceFeedRegistry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8722,"linearizedBaseContracts":[8722,4916],"name":"MockBinanceFeedRegistry","nameLocation":"129:23:81","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"f9172888","id":8658,"mutability":"mutable","name":"assetPrices","nameLocation":"218:11:81","nodeType":"VariableDeclaration","scope":8722,"src":"184:45:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"typeName":{"id":8657,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8655,"name":"string","nodeType":"ElementaryTypeName","src":"192:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"184:26:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8656,"name":"uint256","nodeType":"ElementaryTypeName","src":"202:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":8671,"nodeType":"Block","src":"303:42:81","statements":[{"expression":{"id":8669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8665,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8658,"src":"313:11:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":8667,"indexExpression":{"id":8666,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8660,"src":"325:4:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"313:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8668,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"333:5:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"313:25:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8670,"nodeType":"ExpressionStatement","src":"313:25:81"}]},"functionSelector":"b78107ca","id":8672,"implemented":true,"kind":"function","modifiers":[],"name":"setAssetPrice","nameLocation":"245:13:81","nodeType":"FunctionDefinition","parameters":{"id":8663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8660,"mutability":"mutable","name":"base","nameLocation":"273:4:81","nodeType":"VariableDeclaration","scope":8672,"src":"259:18:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8659,"name":"string","nodeType":"ElementaryTypeName","src":"259:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8662,"mutability":"mutable","name":"price","nameLocation":"287:5:81","nodeType":"VariableDeclaration","scope":8672,"src":"279:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8661,"name":"uint256","nodeType":"ElementaryTypeName","src":"279:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"258:35:81"},"returnParameters":{"id":8664,"nodeType":"ParameterList","parameters":[],"src":"303:0:81"},"scope":8722,"src":"236:109:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4906],"body":{"id":8707,"nodeType":"Block","src":"606:97:81","statements":[{"expression":{"id":8690,"name":"quote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"616:5:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":8691,"nodeType":"ExpressionStatement","src":"616:5:81"},{"expression":{"components":[{"hexValue":"30","id":8692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"639:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"baseExpression":{"id":8695,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8658,"src":"649:11:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":8697,"indexExpression":{"id":8696,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"661:4:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"649:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"642:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":8693,"name":"int256","nodeType":"ElementaryTypeName","src":"642:6:81","typeDescriptions":{}}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"642:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"hexValue":"30","id":8699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"669:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8700,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"672:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"678:9:81","memberName":"timestamp","nodeType":"MemberAccess","src":"672:15:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"3130","id":8702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"690:2:81","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"672:20:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":8704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"694:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8705,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"638:58:81","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_int256_$_t_rational_0_by_1_$_t_uint256_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int256,int_const 0,uint256,int_const 0)"}},"functionReturnParameters":8689,"id":8706,"nodeType":"Return","src":"631:65:81"}]},"functionSelector":"bfda5e71","id":8708,"implemented":true,"kind":"function","modifiers":[],"name":"latestRoundDataByName","nameLocation":"360:21:81","nodeType":"FunctionDefinition","overrides":{"id":8678,"nodeType":"OverrideSpecifier","overrides":[],"src":"483:8:81"},"parameters":{"id":8677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8674,"mutability":"mutable","name":"base","nameLocation":"405:4:81","nodeType":"VariableDeclaration","scope":8708,"src":"391:18:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8673,"name":"string","nodeType":"ElementaryTypeName","src":"391:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8676,"mutability":"mutable","name":"quote","nameLocation":"433:5:81","nodeType":"VariableDeclaration","scope":8708,"src":"419:19:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8675,"name":"string","nodeType":"ElementaryTypeName","src":"419:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"381:63:81"},"returnParameters":{"id":8689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8680,"mutability":"mutable","name":"roundId","nameLocation":"516:7:81","nodeType":"VariableDeclaration","scope":8708,"src":"509:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":8679,"name":"uint80","nodeType":"ElementaryTypeName","src":"509:6:81","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":8682,"mutability":"mutable","name":"answer","nameLocation":"532:6:81","nodeType":"VariableDeclaration","scope":8708,"src":"525:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8681,"name":"int256","nodeType":"ElementaryTypeName","src":"525:6:81","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8684,"mutability":"mutable","name":"startedAt","nameLocation":"548:9:81","nodeType":"VariableDeclaration","scope":8708,"src":"540:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8683,"name":"uint256","nodeType":"ElementaryTypeName","src":"540:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8686,"mutability":"mutable","name":"updatedAt","nameLocation":"567:9:81","nodeType":"VariableDeclaration","scope":8708,"src":"559:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8685,"name":"uint256","nodeType":"ElementaryTypeName","src":"559:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8688,"mutability":"mutable","name":"answeredInRound","nameLocation":"585:15:81","nodeType":"VariableDeclaration","scope":8708,"src":"578:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":8687,"name":"uint80","nodeType":"ElementaryTypeName","src":"578:6:81","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"508:93:81"},"scope":8722,"src":"351:352:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4915],"body":{"id":8720,"nodeType":"Block","src":"813:25:81","statements":[{"expression":{"hexValue":"38","id":8718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"830:1:81","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"functionReturnParameters":8717,"id":8719,"nodeType":"Return","src":"823:8:81"}]},"functionSelector":"6e91995a","id":8721,"implemented":true,"kind":"function","modifiers":[],"name":"decimalsByName","nameLocation":"718:14:81","nodeType":"FunctionDefinition","overrides":{"id":8714,"nodeType":"OverrideSpecifier","overrides":[],"src":"788:8:81"},"parameters":{"id":8713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8710,"mutability":"mutable","name":"base","nameLocation":"747:4:81","nodeType":"VariableDeclaration","scope":8721,"src":"733:18:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8709,"name":"string","nodeType":"ElementaryTypeName","src":"733:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8712,"mutability":"mutable","name":"quote","nameLocation":"767:5:81","nodeType":"VariableDeclaration","scope":8721,"src":"753:19:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8711,"name":"string","nodeType":"ElementaryTypeName","src":"753:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"732:41:81"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8721,"src":"806:5:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8715,"name":"uint8","nodeType":"ElementaryTypeName","src":"806:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"805:7:81"},"scope":8722,"src":"709:129:81","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8723,"src":"120:720:81","usedErrors":[],"usedEvents":[]}],"src":"41:800:81"}},"contracts/oracles/mocks/MockBinanceOracle.sol":{"id":82,"ast":{"absolutePath":"contracts/oracles/mocks/MockBinanceOracle.sol","exportedSymbols":{"MockBinanceOracle":[8773],"OracleInterface":[5140],"OwnableUpgradeable":[342]},"id":8774,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8724,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:82"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":8726,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":343,"src":"66:103:82","symbolAliases":[{"foreign":{"id":8725,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"75:18:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../../interfaces/OracleInterface.sol","id":8728,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":5173,"src":"170:71:82","symbolAliases":[{"foreign":{"id":8727,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"179:15:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8729,"name":"OwnableUpgradeable","nameLocations":["273:18:82"],"nodeType":"IdentifierPath","referencedDeclaration":342,"src":"273:18:82"},"id":8730,"nodeType":"InheritanceSpecifier","src":"273:18:82"},{"baseName":{"id":8731,"name":"OracleInterface","nameLocations":["293:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"293:15:82"},"id":8732,"nodeType":"InheritanceSpecifier","src":"293:15:82"}],"canonicalName":"MockBinanceOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8773,"linearizedBaseContracts":[8773,5140,342,1020,511],"name":"MockBinanceOracle","nameLocation":"252:17:82","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"5e9a523c","id":8736,"mutability":"mutable","name":"assetPrices","nameLocation":"350:11:82","nodeType":"VariableDeclaration","scope":8773,"src":"315:46:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8735,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8733,"name":"address","nodeType":"ElementaryTypeName","src":"323:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"315:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8734,"name":"uint256","nodeType":"ElementaryTypeName","src":"334:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":8739,"nodeType":"Block","src":"382:2:82","statements":[]},"id":8740,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8737,"nodeType":"ParameterList","parameters":[],"src":"379:2:82"},"returnParameters":{"id":8738,"nodeType":"ParameterList","parameters":[],"src":"382:0:82"},"scope":8773,"src":"368:16:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8745,"nodeType":"Block","src":"431:2:82","statements":[]},"functionSelector":"8129fc1c","id":8746,"implemented":true,"kind":"function","modifiers":[{"id":8743,"kind":"modifierInvocation","modifierName":{"id":8742,"name":"initializer","nameLocations":["419:11:82"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"419:11:82"},"nodeType":"ModifierInvocation","src":"419:11:82"}],"name":"initialize","nameLocation":"399:10:82","nodeType":"FunctionDefinition","parameters":{"id":8741,"nodeType":"ParameterList","parameters":[],"src":"409:2:82"},"returnParameters":{"id":8744,"nodeType":"ParameterList","parameters":[],"src":"431:0:82"},"scope":8773,"src":"390:43:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8759,"nodeType":"Block","src":"496:43:82","statements":[{"expression":{"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8753,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8736,"src":"506:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8755,"indexExpression":{"id":8754,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8748,"src":"518:5:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"506:18:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8756,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8750,"src":"527:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"506:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8758,"nodeType":"ExpressionStatement","src":"506:26:82"}]},"functionSelector":"00e4768b","id":8760,"implemented":true,"kind":"function","modifiers":[],"name":"setPrice","nameLocation":"448:8:82","nodeType":"FunctionDefinition","parameters":{"id":8751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8748,"mutability":"mutable","name":"asset","nameLocation":"465:5:82","nodeType":"VariableDeclaration","scope":8760,"src":"457:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8747,"name":"address","nodeType":"ElementaryTypeName","src":"457:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8750,"mutability":"mutable","name":"price","nameLocation":"480:5:82","nodeType":"VariableDeclaration","scope":8760,"src":"472:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8749,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"456:30:82"},"returnParameters":{"id":8752,"nodeType":"ParameterList","parameters":[],"src":"496:0:82"},"scope":8773,"src":"439:100:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":8771,"nodeType":"Block","src":"608:42:82","statements":[{"expression":{"baseExpression":{"id":8767,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8736,"src":"625:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8769,"indexExpression":{"id":8768,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"637:5:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"625:18:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8766,"id":8770,"nodeType":"Return","src":"618:25:82"}]},"functionSelector":"41976e09","id":8772,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"554:8:82","nodeType":"FunctionDefinition","parameters":{"id":8763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8762,"mutability":"mutable","name":"token","nameLocation":"571:5:82","nodeType":"VariableDeclaration","scope":8772,"src":"563:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8761,"name":"address","nodeType":"ElementaryTypeName","src":"563:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"562:15:82"},"returnParameters":{"id":8766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8772,"src":"599:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8764,"name":"uint256","nodeType":"ElementaryTypeName","src":"599:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"598:9:82"},"scope":8773,"src":"545:105:82","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":8774,"src":"243:409:82","usedErrors":[],"usedEvents":[227,357]}],"src":"41:612:82"}},"contracts/oracles/mocks/MockChainlinkOracle.sol":{"id":83,"ast":{"absolutePath":"contracts/oracles/mocks/MockChainlinkOracle.sol","exportedSymbols":{"MockChainlinkOracle":[8827],"OracleInterface":[5140],"OwnableUpgradeable":[342]},"id":8828,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8775,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:83"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":8777,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8828,"sourceUnit":343,"src":"66:103:83","symbolAliases":[{"foreign":{"id":8776,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"75:18:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../../interfaces/OracleInterface.sol","id":8779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8828,"sourceUnit":5173,"src":"170:71:83","symbolAliases":[{"foreign":{"id":8778,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"179:15:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8780,"name":"OwnableUpgradeable","nameLocations":["275:18:83"],"nodeType":"IdentifierPath","referencedDeclaration":342,"src":"275:18:83"},"id":8781,"nodeType":"InheritanceSpecifier","src":"275:18:83"},{"baseName":{"id":8782,"name":"OracleInterface","nameLocations":["295:15:83"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"295:15:83"},"id":8783,"nodeType":"InheritanceSpecifier","src":"295:15:83"}],"canonicalName":"MockChainlinkOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8827,"linearizedBaseContracts":[8827,5140,342,1020,511],"name":"MockChainlinkOracle","nameLocation":"252:19:83","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"5e9a523c","id":8787,"mutability":"mutable","name":"assetPrices","nameLocation":"352:11:83","nodeType":"VariableDeclaration","scope":8827,"src":"317:46:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8786,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8784,"name":"address","nodeType":"ElementaryTypeName","src":"325:7:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"317:27:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"336:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":8790,"nodeType":"Block","src":"423:2:83","statements":[]},"id":8791,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8788,"nodeType":"ParameterList","parameters":[],"src":"420:2:83"},"returnParameters":{"id":8789,"nodeType":"ParameterList","parameters":[],"src":"423:0:83"},"scope":8827,"src":"409:16:83","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8799,"nodeType":"Block","src":"472:33:83","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8796,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"482:14:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"482:16:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8798,"nodeType":"ExpressionStatement","src":"482:16:83"}]},"functionSelector":"8129fc1c","id":8800,"implemented":true,"kind":"function","modifiers":[{"id":8794,"kind":"modifierInvocation","modifierName":{"id":8793,"name":"initializer","nameLocations":["460:11:83"],"nodeType":"IdentifierPath","referencedDeclaration":413,"src":"460:11:83"},"nodeType":"ModifierInvocation","src":"460:11:83"}],"name":"initialize","nameLocation":"440:10:83","nodeType":"FunctionDefinition","parameters":{"id":8792,"nodeType":"ParameterList","parameters":[],"src":"450:2:83"},"returnParameters":{"id":8795,"nodeType":"ParameterList","parameters":[],"src":"472:0:83"},"scope":8827,"src":"431:74:83","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8813,"nodeType":"Block","src":"568:43:83","statements":[{"expression":{"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8807,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8787,"src":"578:11:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8809,"indexExpression":{"id":8808,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"590:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"578:18:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8810,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"599:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"578:26:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8812,"nodeType":"ExpressionStatement","src":"578:26:83"}]},"functionSelector":"00e4768b","id":8814,"implemented":true,"kind":"function","modifiers":[],"name":"setPrice","nameLocation":"520:8:83","nodeType":"FunctionDefinition","parameters":{"id":8805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8802,"mutability":"mutable","name":"asset","nameLocation":"537:5:83","nodeType":"VariableDeclaration","scope":8814,"src":"529:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8801,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8804,"mutability":"mutable","name":"price","nameLocation":"552:5:83","nodeType":"VariableDeclaration","scope":8814,"src":"544:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8803,"name":"uint256","nodeType":"ElementaryTypeName","src":"544:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"528:30:83"},"returnParameters":{"id":8806,"nodeType":"ParameterList","parameters":[],"src":"568:0:83"},"scope":8827,"src":"511:100:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":8825,"nodeType":"Block","src":"723:42:83","statements":[{"expression":{"baseExpression":{"id":8821,"name":"assetPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8787,"src":"740:11:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8823,"indexExpression":{"id":8822,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8816,"src":"752:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"740:18:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8820,"id":8824,"nodeType":"Return","src":"733:25:83"}]},"functionSelector":"41976e09","id":8826,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"669:8:83","nodeType":"FunctionDefinition","parameters":{"id":8817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8816,"mutability":"mutable","name":"token","nameLocation":"686:5:83","nodeType":"VariableDeclaration","scope":8826,"src":"678:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8815,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"677:15:83"},"returnParameters":{"id":8820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8826,"src":"714:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8818,"name":"uint256","nodeType":"ElementaryTypeName","src":"714:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"713:9:83"},"scope":8827,"src":"660:105:83","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":8828,"src":"243:524:83","usedErrors":[],"usedEvents":[227,357]}],"src":"41:727:83"}},"contracts/oracles/mocks/MockPendlePtOracle.sol":{"id":84,"ast":{"absolutePath":"contracts/oracles/mocks/MockPendlePtOracle.sol","exportedSymbols":{"Context":[3290],"IPendlePtOracle":[5042],"MockPendlePtOracle":[8945],"Ownable":[1206]},"id":8946,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8829,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:84"},{"absolutePath":"contracts/interfaces/IPendlePtOracle.sol","file":"../../interfaces/IPendlePtOracle.sol","id":8830,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8946,"sourceUnit":5043,"src":"66:46:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":8831,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8946,"sourceUnit":1207,"src":"113:52:84","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8832,"name":"IPendlePtOracle","nameLocations":["198:15:84"],"nodeType":"IdentifierPath","referencedDeclaration":5042,"src":"198:15:84"},"id":8833,"nodeType":"InheritanceSpecifier","src":"198:15:84"},{"baseName":{"id":8834,"name":"Ownable","nameLocations":["215:7:84"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"215:7:84"},"id":8835,"nodeType":"InheritanceSpecifier","src":"215:7:84"}],"canonicalName":"MockPendlePtOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8945,"linearizedBaseContracts":[8945,1206,3290,5042],"name":"MockPendlePtOracle","nameLocation":"176:18:84","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"67848275","id":8841,"mutability":"mutable","name":"ptToAssetRate","nameLocation":"283:13:84","nodeType":"VariableDeclaration","scope":8945,"src":"229:67:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"},"typeName":{"id":8840,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8836,"name":"address","nodeType":"ElementaryTypeName","src":"237:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"229:46:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8839,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8837,"name":"uint32","nodeType":"ElementaryTypeName","src":"256:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"248:26:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8838,"name":"uint256","nodeType":"ElementaryTypeName","src":"266:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"constant":false,"functionSelector":"b151c07f","id":8847,"mutability":"mutable","name":"ptToSyRate","nameLocation":"356:10:84","nodeType":"VariableDeclaration","scope":8945,"src":"302:64:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"},"typeName":{"id":8846,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8842,"name":"address","nodeType":"ElementaryTypeName","src":"310:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"302:46:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8845,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8843,"name":"uint32","nodeType":"ElementaryTypeName","src":"329:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"321:26:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8844,"name":"uint256","nodeType":"ElementaryTypeName","src":"339:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":8852,"nodeType":"Block","src":"397:2:84","statements":[]},"id":8853,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":8850,"kind":"baseConstructorSpecifier","modifierName":{"id":8849,"name":"Ownable","nameLocations":["387:7:84"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"387:7:84"},"nodeType":"ModifierInvocation","src":"387:9:84"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8848,"nodeType":"ParameterList","parameters":[],"src":"384:2:84"},"returnParameters":{"id":8851,"nodeType":"ParameterList","parameters":[],"src":"397:0:84"},"scope":8945,"src":"373:26:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8872,"nodeType":"Block","src":"497:55:84","statements":[{"expression":{"id":8870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8864,"name":"ptToAssetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8841,"src":"507:13:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"}},"id":8867,"indexExpression":{"id":8865,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8855,"src":"521:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"507:21:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"}},"id":8868,"indexExpression":{"id":8866,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8857,"src":"529:8:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"507:31:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8869,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8859,"src":"541:4:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"507:38:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8871,"nodeType":"ExpressionStatement","src":"507:38:84"}]},"functionSelector":"b861c67c","id":8873,"implemented":true,"kind":"function","modifiers":[{"id":8862,"kind":"modifierInvocation","modifierName":{"id":8861,"name":"onlyOwner","nameLocations":["487:9:84"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"487:9:84"},"nodeType":"ModifierInvocation","src":"487:9:84"}],"name":"setPtToAssetRate","nameLocation":"414:16:84","nodeType":"FunctionDefinition","parameters":{"id":8860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8855,"mutability":"mutable","name":"market","nameLocation":"439:6:84","nodeType":"VariableDeclaration","scope":8873,"src":"431:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8854,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8857,"mutability":"mutable","name":"duration","nameLocation":"454:8:84","nodeType":"VariableDeclaration","scope":8873,"src":"447:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8856,"name":"uint32","nodeType":"ElementaryTypeName","src":"447:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8859,"mutability":"mutable","name":"rate","nameLocation":"472:4:84","nodeType":"VariableDeclaration","scope":8873,"src":"464:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8858,"name":"uint256","nodeType":"ElementaryTypeName","src":"464:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"430:47:84"},"returnParameters":{"id":8863,"nodeType":"ParameterList","parameters":[],"src":"497:0:84"},"scope":8945,"src":"405:147:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8892,"nodeType":"Block","src":"647:52:84","statements":[{"expression":{"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8884,"name":"ptToSyRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8847,"src":"657:10:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"}},"id":8887,"indexExpression":{"id":8885,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8875,"src":"668:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"657:18:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"}},"id":8888,"indexExpression":{"id":8886,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"676:8:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"657:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8889,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8879,"src":"688:4:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"657:35:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8891,"nodeType":"ExpressionStatement","src":"657:35:84"}]},"functionSelector":"a109e12a","id":8893,"implemented":true,"kind":"function","modifiers":[{"id":8882,"kind":"modifierInvocation","modifierName":{"id":8881,"name":"onlyOwner","nameLocations":["637:9:84"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"637:9:84"},"nodeType":"ModifierInvocation","src":"637:9:84"}],"name":"setPtToSyRate","nameLocation":"567:13:84","nodeType":"FunctionDefinition","parameters":{"id":8880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8875,"mutability":"mutable","name":"market","nameLocation":"589:6:84","nodeType":"VariableDeclaration","scope":8893,"src":"581:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8874,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8877,"mutability":"mutable","name":"duration","nameLocation":"604:8:84","nodeType":"VariableDeclaration","scope":8893,"src":"597:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8876,"name":"uint32","nodeType":"ElementaryTypeName","src":"597:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":8879,"mutability":"mutable","name":"rate","nameLocation":"622:4:84","nodeType":"VariableDeclaration","scope":8893,"src":"614:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8878,"name":"uint256","nodeType":"ElementaryTypeName","src":"614:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"580:47:84"},"returnParameters":{"id":8883,"nodeType":"ParameterList","parameters":[],"src":"647:0:84"},"scope":8945,"src":"558:141:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5019],"body":{"id":8908,"nodeType":"Block","src":"796:55:84","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8902,"name":"ptToAssetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8841,"src":"813:13:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"}},"id":8904,"indexExpression":{"id":8903,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"827:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"813:21:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"}},"id":8906,"indexExpression":{"id":8905,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8897,"src":"835:8:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"813:31:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8901,"id":8907,"nodeType":"Return","src":"806:38:84"}]},"functionSelector":"abca0eab","id":8909,"implemented":true,"kind":"function","modifiers":[],"name":"getPtToAssetRate","nameLocation":"714:16:84","nodeType":"FunctionDefinition","parameters":{"id":8898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8895,"mutability":"mutable","name":"market","nameLocation":"739:6:84","nodeType":"VariableDeclaration","scope":8909,"src":"731:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8894,"name":"address","nodeType":"ElementaryTypeName","src":"731:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8897,"mutability":"mutable","name":"duration","nameLocation":"754:8:84","nodeType":"VariableDeclaration","scope":8909,"src":"747:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8896,"name":"uint32","nodeType":"ElementaryTypeName","src":"747:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"730:33:84"},"returnParameters":{"id":8901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8909,"src":"787:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8899,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"786:9:84"},"scope":8945,"src":"705:146:84","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5028],"body":{"id":8924,"nodeType":"Block","src":"945:52:84","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8918,"name":"ptToSyRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8847,"src":"962:10:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint32 => uint256))"}},"id":8920,"indexExpression":{"id":8919,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8911,"src":"973:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"962:18:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_uint256_$","typeString":"mapping(uint32 => uint256)"}},"id":8922,"indexExpression":{"id":8921,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"981:8:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"962:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8917,"id":8923,"nodeType":"Return","src":"955:35:84"}]},"functionSelector":"a31426d1","id":8925,"implemented":true,"kind":"function","modifiers":[],"name":"getPtToSyRate","nameLocation":"866:13:84","nodeType":"FunctionDefinition","parameters":{"id":8914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8911,"mutability":"mutable","name":"market","nameLocation":"888:6:84","nodeType":"VariableDeclaration","scope":8925,"src":"880:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8910,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8913,"mutability":"mutable","name":"duration","nameLocation":"903:8:84","nodeType":"VariableDeclaration","scope":8925,"src":"896:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8912,"name":"uint32","nodeType":"ElementaryTypeName","src":"896:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"879:33:84"},"returnParameters":{"id":8917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8925,"src":"936:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8915,"name":"uint256","nodeType":"ElementaryTypeName","src":"936:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"935:9:84"},"scope":8945,"src":"857:140:84","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5041],"body":{"id":8943,"nodeType":"Block","src":"1240:40:84","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1258:5:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":8939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1265:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":8940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1268:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"id":8941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1257:16:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_bool_$","typeString":"tuple(bool,int_const 0,bool)"}},"functionReturnParameters":8937,"id":8942,"nodeType":"Return","src":"1250:23:84"}]},"functionSelector":"873e9600","id":8944,"implemented":true,"kind":"function","modifiers":[],"name":"getOracleState","nameLocation":"1012:14:84","nodeType":"FunctionDefinition","parameters":{"id":8930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8944,"src":"1036:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8926,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8944,"src":"1066:6:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8928,"name":"uint32","nodeType":"ElementaryTypeName","src":"1066:6:84","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1026:67:84"},"returnParameters":{"id":8937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8932,"mutability":"mutable","name":"increaseCardinalityRequired","nameLocation":"1146:27:84","nodeType":"VariableDeclaration","scope":8944,"src":"1141:32:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8931,"name":"bool","nodeType":"ElementaryTypeName","src":"1141:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8934,"mutability":"mutable","name":"cardinalityRequired","nameLocation":"1182:19:84","nodeType":"VariableDeclaration","scope":8944,"src":"1175:26:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8933,"name":"uint16","nodeType":"ElementaryTypeName","src":"1175:6:84","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":8936,"mutability":"mutable","name":"oldestObservationSatisfied","nameLocation":"1208:26:84","nodeType":"VariableDeclaration","scope":8944,"src":"1203:31:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8935,"name":"bool","nodeType":"ElementaryTypeName","src":"1203:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1140:95:84"},"scope":8945,"src":"1003:277:84","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":8946,"src":"167:1115:84","usedErrors":[],"usedEvents":[1107]}],"src":"41:1242:84"}},"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol":{"id":85,"ast":{"absolutePath":"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol","exportedSymbols":{"Context":[3290],"ISfrxEthFraxOracle":[5069],"MockSfrxEthFraxOracle":[9006],"Ownable":[1206]},"id":9007,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":8947,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:85"},{"absolutePath":"contracts/interfaces/ISfrxEthFraxOracle.sol","file":"../../interfaces/ISfrxEthFraxOracle.sol","id":8948,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9007,"sourceUnit":5070,"src":"66:49:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":8949,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9007,"sourceUnit":1207,"src":"116:52:85","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8950,"name":"ISfrxEthFraxOracle","nameLocations":["204:18:85"],"nodeType":"IdentifierPath","referencedDeclaration":5069,"src":"204:18:85"},"id":8951,"nodeType":"InheritanceSpecifier","src":"204:18:85"},{"baseName":{"id":8952,"name":"Ownable","nameLocations":["224:7:85"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"224:7:85"},"id":8953,"nodeType":"InheritanceSpecifier","src":"224:7:85"}],"canonicalName":"MockSfrxEthFraxOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9006,"linearizedBaseContracts":[9006,1206,3290,5069],"name":"MockSfrxEthFraxOracle","nameLocation":"179:21:85","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"5648718b","id":8955,"mutability":"mutable","name":"isBadData","nameLocation":"250:9:85","nodeType":"VariableDeclaration","scope":9006,"src":"238:21:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8954,"name":"bool","nodeType":"ElementaryTypeName","src":"238:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"0683e4ca","id":8957,"mutability":"mutable","name":"priceLow","nameLocation":"280:8:85","nodeType":"VariableDeclaration","scope":9006,"src":"265:23:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8956,"name":"uint256","nodeType":"ElementaryTypeName","src":"265:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"be00a66e","id":8959,"mutability":"mutable","name":"priceHigh","nameLocation":"309:9:85","nodeType":"VariableDeclaration","scope":9006,"src":"294:24:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8958,"name":"uint256","nodeType":"ElementaryTypeName","src":"294:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":8964,"nodeType":"Block","src":"349:2:85","statements":[]},"id":8965,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":8962,"kind":"baseConstructorSpecifier","modifierName":{"id":8961,"name":"Ownable","nameLocations":["339:7:85"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"339:7:85"},"nodeType":"ModifierInvocation","src":"339:9:85"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8960,"nodeType":"ParameterList","parameters":[],"src":"336:2:85"},"returnParameters":{"id":8963,"nodeType":"ParameterList","parameters":[],"src":"349:0:85"},"scope":9006,"src":"325:26:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8988,"nodeType":"Block","src":"451:101:85","statements":[{"expression":{"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8976,"name":"isBadData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"461:9:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8977,"name":"_isBadData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"473:10:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"461:22:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8979,"nodeType":"ExpressionStatement","src":"461:22:85"},{"expression":{"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8980,"name":"priceLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"493:8:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8981,"name":"_priceLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8969,"src":"504:9:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"493:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8983,"nodeType":"ExpressionStatement","src":"493:20:85"},{"expression":{"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8984,"name":"priceHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"523:9:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8985,"name":"_priceHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8971,"src":"535:10:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"523:22:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8987,"nodeType":"ExpressionStatement","src":"523:22:85"}]},"functionSelector":"2ade707e","id":8989,"implemented":true,"kind":"function","modifiers":[{"id":8974,"kind":"modifierInvocation","modifierName":{"id":8973,"name":"onlyOwner","nameLocations":["441:9:85"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"441:9:85"},"nodeType":"ModifierInvocation","src":"441:9:85"}],"name":"setPrices","nameLocation":"366:9:85","nodeType":"FunctionDefinition","parameters":{"id":8972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8967,"mutability":"mutable","name":"_isBadData","nameLocation":"381:10:85","nodeType":"VariableDeclaration","scope":8989,"src":"376:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8966,"name":"bool","nodeType":"ElementaryTypeName","src":"376:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8969,"mutability":"mutable","name":"_priceLow","nameLocation":"401:9:85","nodeType":"VariableDeclaration","scope":8989,"src":"393:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8968,"name":"uint256","nodeType":"ElementaryTypeName","src":"393:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8971,"mutability":"mutable","name":"_priceHigh","nameLocation":"420:10:85","nodeType":"VariableDeclaration","scope":8989,"src":"412:18:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8970,"name":"uint256","nodeType":"ElementaryTypeName","src":"412:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:56:85"},"returnParameters":{"id":8975,"nodeType":"ParameterList","parameters":[],"src":"451:0:85"},"scope":9006,"src":"357:195:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5068],"body":{"id":9004,"nodeType":"Block","src":"635:56:85","statements":[{"expression":{"components":[{"id":8999,"name":"isBadData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"653:9:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9000,"name":"priceLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"664:8:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9001,"name":"priceHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"674:9:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"652:32:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"functionReturnParameters":8998,"id":9003,"nodeType":"Return","src":"645:39:85"}]},"functionSelector":"bd9a548b","id":9005,"implemented":true,"kind":"function","modifiers":[],"name":"getPrices","nameLocation":"567:9:85","nodeType":"FunctionDefinition","overrides":{"id":8991,"nodeType":"OverrideSpecifier","overrides":[],"src":"593:8:85"},"parameters":{"id":8990,"nodeType":"ParameterList","parameters":[],"src":"576:2:85"},"returnParameters":{"id":8998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9005,"src":"611:4:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8992,"name":"bool","nodeType":"ElementaryTypeName","src":"611:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9005,"src":"617:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8994,"name":"uint256","nodeType":"ElementaryTypeName","src":"617:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9005,"src":"626:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8996,"name":"uint256","nodeType":"ElementaryTypeName","src":"626:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"610:24:85"},"scope":9006,"src":"558:133:85","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9007,"src":"170:523:85","usedErrors":[],"usedEvents":[1107]}],"src":"41:653:85"}},"contracts/test/BEP20Harness.sol":{"id":86,"ast":{"absolutePath":"contracts/test/BEP20Harness.sol","exportedSymbols":{"BEP20Harness":[9054],"Context":[3290],"ERC20":[2827],"IERC20":[2905],"IERC20Metadata":[2930]},"id":9055,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":9008,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:86"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":9009,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9055,"sourceUnit":2828,"src":"66:55:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9010,"name":"ERC20","nameLocations":["148:5:86"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"148:5:86"},"id":9011,"nodeType":"InheritanceSpecifier","src":"148:5:86"}],"canonicalName":"BEP20Harness","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9054,"linearizedBaseContracts":[9054,2827,2930,2905,3290],"name":"BEP20Harness","nameLocation":"132:12:86","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"4511bf6b","id":9014,"mutability":"mutable","name":"decimalsInternal","nameLocation":"173:16:86","nodeType":"VariableDeclaration","scope":9054,"src":"160:34:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9012,"name":"uint8","nodeType":"ElementaryTypeName","src":"160:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":9013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"192:2:86","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"body":{"id":9031,"nodeType":"Block","src":"296:45:86","statements":[{"expression":{"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9027,"name":"decimalsInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"306:16:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9028,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9020,"src":"325:9:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"306:28:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9030,"nodeType":"ExpressionStatement","src":"306:28:86"}]},"id":9032,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9023,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9016,"src":"280:5:86","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9024,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"287:7:86","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9025,"kind":"baseConstructorSpecifier","modifierName":{"id":9022,"name":"ERC20","nameLocations":["274:5:86"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"274:5:86"},"nodeType":"ModifierInvocation","src":"274:21:86"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9016,"mutability":"mutable","name":"name_","nameLocation":"227:5:86","nodeType":"VariableDeclaration","scope":9032,"src":"213:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9015,"name":"string","nodeType":"ElementaryTypeName","src":"213:6:86","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9018,"mutability":"mutable","name":"symbol_","nameLocation":"248:7:86","nodeType":"VariableDeclaration","scope":9032,"src":"234:21:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9017,"name":"string","nodeType":"ElementaryTypeName","src":"234:6:86","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9020,"mutability":"mutable","name":"decimals_","nameLocation":"263:9:86","nodeType":"VariableDeclaration","scope":9032,"src":"257:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9019,"name":"uint8","nodeType":"ElementaryTypeName","src":"257:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"212:61:86"},"returnParameters":{"id":9026,"nodeType":"ParameterList","parameters":[],"src":"296:0:86"},"scope":9054,"src":"201:140:86","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9043,"nodeType":"Block","src":"388:42:86","statements":[{"expression":{"arguments":[{"expression":{"id":9038,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"404:3:86","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"408:6:86","memberName":"sender","nodeType":"MemberAccess","src":"404:10:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9040,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"416:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9037,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"398:5:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"398:25:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9042,"nodeType":"ExpressionStatement","src":"398:25:86"}]},"functionSelector":"57915897","id":9044,"implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"356:6:86","nodeType":"FunctionDefinition","parameters":{"id":9035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9034,"mutability":"mutable","name":"amount","nameLocation":"371:6:86","nodeType":"VariableDeclaration","scope":9044,"src":"363:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9033,"name":"uint256","nodeType":"ElementaryTypeName","src":"363:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"362:16:86"},"returnParameters":{"id":9036,"nodeType":"ParameterList","parameters":[],"src":"388:0:86"},"scope":9054,"src":"347:83:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2315],"body":{"id":9052,"nodeType":"Block","src":"501:40:86","statements":[{"expression":{"id":9050,"name":"decimalsInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"518:16:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9049,"id":9051,"nodeType":"Return","src":"511:23:86"}]},"functionSelector":"313ce567","id":9053,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"445:8:86","nodeType":"FunctionDefinition","overrides":{"id":9046,"nodeType":"OverrideSpecifier","overrides":[],"src":"476:8:86"},"parameters":{"id":9045,"nodeType":"ParameterList","parameters":[],"src":"453:2:86"},"returnParameters":{"id":9049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9053,"src":"494:5:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9047,"name":"uint8","nodeType":"ElementaryTypeName","src":"494:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"493:7:86"},"scope":9054,"src":"436:105:86","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9055,"src":"123:420:86","usedErrors":[],"usedEvents":[2839,2848]}],"src":"41:503:86"}},"contracts/test/MockAnkrBNB.sol":{"id":87,"ast":{"absolutePath":"contracts/test/MockAnkrBNB.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"IAnkrBNB":[4939],"MockAnkrBNB":[9149],"Ownable":[1206]},"id":9150,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9056,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:87"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":9058,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9150,"sourceUnit":2828,"src":"130:70:87","symbolAliases":[{"foreign":{"id":9057,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"139:5:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IAnkrBNB.sol","file":"../interfaces/IAnkrBNB.sol","id":9060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9150,"sourceUnit":4940,"src":"201:54:87","symbolAliases":[{"foreign":{"id":9059,"name":"IAnkrBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"210:8:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9061,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9150,"sourceUnit":1207,"src":"256:52:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9062,"name":"ERC20","nameLocations":["334:5:87"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"334:5:87"},"id":9063,"nodeType":"InheritanceSpecifier","src":"334:5:87"},{"baseName":{"id":9064,"name":"Ownable","nameLocations":["341:7:87"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"341:7:87"},"id":9065,"nodeType":"InheritanceSpecifier","src":"341:7:87"},{"baseName":{"id":9066,"name":"IAnkrBNB","nameLocations":["350:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":4939,"src":"350:8:87"},"id":9067,"nodeType":"InheritanceSpecifier","src":"350:8:87"}],"canonicalName":"MockAnkrBNB","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9149,"linearizedBaseContracts":[9149,4939,1206,2827,2930,2905,3290],"name":"MockAnkrBNB","nameLocation":"319:11:87","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9069,"mutability":"immutable","name":"_decimals","nameLocation":"389:9:87","nodeType":"VariableDeclaration","scope":9149,"src":"365:33:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9068,"name":"uint8","nodeType":"ElementaryTypeName","src":"365:5:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"functionSelector":"3ba0b9a9","id":9071,"mutability":"mutable","name":"exchangeRate","nameLocation":"419:12:87","nodeType":"VariableDeclaration","scope":9149,"src":"404:27:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9070,"name":"uint256","nodeType":"ElementaryTypeName","src":"404:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":9090,"nodeType":"Block","src":"543:38:87","statements":[{"expression":{"id":9088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9086,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"553:9:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9087,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9077,"src":"565:9:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"553:21:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9089,"nodeType":"ExpressionStatement","src":"553:21:87"}]},"id":9091,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9080,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9073,"src":"517:5:87","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9081,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"524:7:87","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9082,"kind":"baseConstructorSpecifier","modifierName":{"id":9079,"name":"ERC20","nameLocations":["511:5:87"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"511:5:87"},"nodeType":"ModifierInvocation","src":"511:21:87"},{"arguments":[],"id":9084,"kind":"baseConstructorSpecifier","modifierName":{"id":9083,"name":"Ownable","nameLocations":["533:7:87"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"533:7:87"},"nodeType":"ModifierInvocation","src":"533:9:87"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9073,"mutability":"mutable","name":"name_","nameLocation":"464:5:87","nodeType":"VariableDeclaration","scope":9091,"src":"450:19:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9072,"name":"string","nodeType":"ElementaryTypeName","src":"450:6:87","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9075,"mutability":"mutable","name":"symbol_","nameLocation":"485:7:87","nodeType":"VariableDeclaration","scope":9091,"src":"471:21:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9074,"name":"string","nodeType":"ElementaryTypeName","src":"471:6:87","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9077,"mutability":"mutable","name":"decimals_","nameLocation":"500:9:87","nodeType":"VariableDeclaration","scope":9091,"src":"494:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9076,"name":"uint8","nodeType":"ElementaryTypeName","src":"494:5:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"449:61:87"},"returnParameters":{"id":9085,"nodeType":"ParameterList","parameters":[],"src":"543:0:87"},"scope":9149,"src":"438:143:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9102,"nodeType":"Block","src":"628:42:87","statements":[{"expression":{"arguments":[{"expression":{"id":9097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"644:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"648:6:87","memberName":"sender","nodeType":"MemberAccess","src":"644:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9099,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"656:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9096,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"638:5:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"638:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9101,"nodeType":"ExpressionStatement","src":"638:25:87"}]},"functionSelector":"57915897","id":9103,"implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"596:6:87","nodeType":"FunctionDefinition","parameters":{"id":9094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9093,"mutability":"mutable","name":"amount","nameLocation":"611:6:87","nodeType":"VariableDeclaration","scope":9103,"src":"603:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9092,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"602:16:87"},"returnParameters":{"id":9095,"nodeType":"ParameterList","parameters":[],"src":"628:0:87"},"scope":9149,"src":"587:83:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9114,"nodeType":"Block","src":"735:36:87","statements":[{"expression":{"id":9112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9110,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"745:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9111,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"760:4:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"745:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9113,"nodeType":"ExpressionStatement","src":"745:19:87"}]},"functionSelector":"0904af85","id":9115,"implemented":true,"kind":"function","modifiers":[{"id":9108,"kind":"modifierInvocation","modifierName":{"id":9107,"name":"onlyOwner","nameLocations":["725:9:87"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"725:9:87"},"nodeType":"ModifierInvocation","src":"725:9:87"}],"name":"setSharesToBonds","nameLocation":"685:16:87","nodeType":"FunctionDefinition","parameters":{"id":9106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9105,"mutability":"mutable","name":"rate","nameLocation":"710:4:87","nodeType":"VariableDeclaration","scope":9115,"src":"702:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9104,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:14:87"},"returnParameters":{"id":9109,"nodeType":"ParameterList","parameters":[],"src":"735:0:87"},"scope":9149,"src":"676:95:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4933],"body":{"id":9136,"nodeType":"Block","src":"857:76:87","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9123,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"875:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9124,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"884:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"875:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9126,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"874:23:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"901:2:87","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"id":9130,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"915:9:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"907:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9128,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:87","typeDescriptions":{}}},"id":9131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"907:18:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"901:24:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9133,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"900:26:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"874:52:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9122,"id":9135,"nodeType":"Return","src":"867:59:87"}]},"functionSelector":"6c58d43d","id":9137,"implemented":true,"kind":"function","modifiers":[],"name":"sharesToBonds","nameLocation":"786:13:87","nodeType":"FunctionDefinition","overrides":{"id":9119,"nodeType":"OverrideSpecifier","overrides":[],"src":"830:8:87"},"parameters":{"id":9118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9117,"mutability":"mutable","name":"amount","nameLocation":"808:6:87","nodeType":"VariableDeclaration","scope":9137,"src":"800:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9116,"name":"uint256","nodeType":"ElementaryTypeName","src":"800:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"799:16:87"},"returnParameters":{"id":9122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9137,"src":"848:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9120,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"847:9:87"},"scope":9149,"src":"777:156:87","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2315,4938],"body":{"id":9147,"nodeType":"Block","src":"1021:33:87","statements":[{"expression":{"id":9145,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"1038:9:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9144,"id":9146,"nodeType":"Return","src":"1031:16:87"}]},"functionSelector":"313ce567","id":9148,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"948:8:87","nodeType":"FunctionDefinition","overrides":{"id":9141,"nodeType":"OverrideSpecifier","overrides":[{"id":9139,"name":"ERC20","nameLocations":["988:5:87"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"988:5:87"},{"id":9140,"name":"IAnkrBNB","nameLocations":["995:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":4939,"src":"995:8:87"}],"src":"979:25:87"},"parameters":{"id":9138,"nodeType":"ParameterList","parameters":[],"src":"956:2:87"},"returnParameters":{"id":9144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9148,"src":"1014:5:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9142,"name":"uint8","nodeType":"ElementaryTypeName","src":"1014:5:87","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1013:7:87"},"scope":9149,"src":"939:115:87","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9150,"src":"310:746:87","usedErrors":[],"usedEvents":[1107,2839,2848]}],"src":"105:952:87"}},"contracts/test/MockAsBNB.sol":{"id":88,"ast":{"absolutePath":"contracts/test/MockAsBNB.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"IAsBNB":[4952],"MockAsBNB":[9228],"Ownable":[1206]},"id":9229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9151,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:88"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":9153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9229,"sourceUnit":2828,"src":"130:70:88","symbolAliases":[{"foreign":{"id":9152,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"139:5:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IAsBNB.sol","file":"../interfaces/IAsBNB.sol","id":9155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9229,"sourceUnit":4953,"src":"201:50:88","symbolAliases":[{"foreign":{"id":9154,"name":"IAsBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4952,"src":"210:6:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9156,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9229,"sourceUnit":1207,"src":"252:52:88","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9157,"name":"ERC20","nameLocations":["328:5:88"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"328:5:88"},"id":9158,"nodeType":"InheritanceSpecifier","src":"328:5:88"},{"baseName":{"id":9159,"name":"Ownable","nameLocations":["335:7:88"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"335:7:88"},"id":9160,"nodeType":"InheritanceSpecifier","src":"335:7:88"},{"baseName":{"id":9161,"name":"IAsBNB","nameLocations":["344:6:88"],"nodeType":"IdentifierPath","referencedDeclaration":4952,"src":"344:6:88"},"id":9162,"nodeType":"InheritanceSpecifier","src":"344:6:88"}],"canonicalName":"MockAsBNB","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9228,"linearizedBaseContracts":[9228,4952,1206,2827,2930,2905,3290],"name":"MockAsBNB","nameLocation":"315:9:88","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9164,"mutability":"immutable","name":"_decimals","nameLocation":"381:9:88","nodeType":"VariableDeclaration","scope":9228,"src":"357:33:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9163,"name":"uint8","nodeType":"ElementaryTypeName","src":"357:5:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"baseFunctions":[4946],"constant":false,"functionSelector":"07546172","id":9166,"mutability":"mutable","name":"minter","nameLocation":"411:6:88","nodeType":"VariableDeclaration","scope":9228,"src":"396:21:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9165,"name":"address","nodeType":"ElementaryTypeName","src":"396:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":9191,"nodeType":"Block","src":"584:64:88","statements":[{"expression":{"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9183,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"594:9:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9184,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9172,"src":"606:9:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"594:21:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9186,"nodeType":"ExpressionStatement","src":"594:21:88"},{"expression":{"id":9189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9187,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"625:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9188,"name":"minter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9174,"src":"634:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"625:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9190,"nodeType":"ExpressionStatement","src":"625:16:88"}]},"id":9192,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9177,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9168,"src":"558:5:88","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9178,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"565:7:88","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9179,"kind":"baseConstructorSpecifier","modifierName":{"id":9176,"name":"ERC20","nameLocations":["552:5:88"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"552:5:88"},"nodeType":"ModifierInvocation","src":"552:21:88"},{"arguments":[],"id":9181,"kind":"baseConstructorSpecifier","modifierName":{"id":9180,"name":"Ownable","nameLocations":["574:7:88"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"574:7:88"},"nodeType":"ModifierInvocation","src":"574:9:88"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9168,"mutability":"mutable","name":"name_","nameLocation":"459:5:88","nodeType":"VariableDeclaration","scope":9192,"src":"445:19:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9167,"name":"string","nodeType":"ElementaryTypeName","src":"445:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9170,"mutability":"mutable","name":"symbol_","nameLocation":"488:7:88","nodeType":"VariableDeclaration","scope":9192,"src":"474:21:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9169,"name":"string","nodeType":"ElementaryTypeName","src":"474:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9172,"mutability":"mutable","name":"decimals_","nameLocation":"511:9:88","nodeType":"VariableDeclaration","scope":9192,"src":"505:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9171,"name":"uint8","nodeType":"ElementaryTypeName","src":"505:5:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9174,"mutability":"mutable","name":"minter_","nameLocation":"538:7:88","nodeType":"VariableDeclaration","scope":9192,"src":"530:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9173,"name":"address","nodeType":"ElementaryTypeName","src":"530:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"435:116:88"},"returnParameters":{"id":9182,"nodeType":"ParameterList","parameters":[],"src":"584:0:88"},"scope":9228,"src":"424:224:88","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9203,"nodeType":"Block","src":"695:42:88","statements":[{"expression":{"arguments":[{"expression":{"id":9198,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"711:3:88","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"715:6:88","memberName":"sender","nodeType":"MemberAccess","src":"711:10:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9200,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9194,"src":"723:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9197,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"705:5:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"705:25:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9202,"nodeType":"ExpressionStatement","src":"705:25:88"}]},"functionSelector":"57915897","id":9204,"implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"663:6:88","nodeType":"FunctionDefinition","parameters":{"id":9195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9194,"mutability":"mutable","name":"amount","nameLocation":"678:6:88","nodeType":"VariableDeclaration","scope":9204,"src":"670:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9193,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"669:16:88"},"returnParameters":{"id":9196,"nodeType":"ParameterList","parameters":[],"src":"695:0:88"},"scope":9228,"src":"654:83:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9215,"nodeType":"Block","src":"798:33:88","statements":[{"expression":{"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9211,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"808:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9212,"name":"minter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9206,"src":"817:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"808:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9214,"nodeType":"ExpressionStatement","src":"808:16:88"}]},"functionSelector":"fca3b5aa","id":9216,"implemented":true,"kind":"function","modifiers":[{"id":9209,"kind":"modifierInvocation","modifierName":{"id":9208,"name":"onlyOwner","nameLocations":["788:9:88"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"788:9:88"},"nodeType":"ModifierInvocation","src":"788:9:88"}],"name":"setMinter","nameLocation":"752:9:88","nodeType":"FunctionDefinition","parameters":{"id":9207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9206,"mutability":"mutable","name":"minter_","nameLocation":"770:7:88","nodeType":"VariableDeclaration","scope":9216,"src":"762:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9205,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"761:17:88"},"returnParameters":{"id":9210,"nodeType":"ParameterList","parameters":[],"src":"798:0:88"},"scope":9228,"src":"743:88:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2315,4951],"body":{"id":9226,"nodeType":"Block","src":"917:33:88","statements":[{"expression":{"id":9224,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"934:9:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9223,"id":9225,"nodeType":"Return","src":"927:16:88"}]},"functionSelector":"313ce567","id":9227,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"846:8:88","nodeType":"FunctionDefinition","overrides":{"id":9220,"nodeType":"OverrideSpecifier","overrides":[{"id":9218,"name":"ERC20","nameLocations":["886:5:88"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"886:5:88"},{"id":9219,"name":"IAsBNB","nameLocations":["893:6:88"],"nodeType":"IdentifierPath","referencedDeclaration":4952,"src":"893:6:88"}],"src":"877:23:88"},"parameters":{"id":9217,"nodeType":"ParameterList","parameters":[],"src":"854:2:88"},"returnParameters":{"id":9223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9227,"src":"910:5:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9221,"name":"uint8","nodeType":"ElementaryTypeName","src":"910:5:88","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"909:7:88"},"scope":9228,"src":"837:113:88","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9229,"src":"306:646:88","usedErrors":[],"usedEvents":[1107,2839,2848]}],"src":"105:848:88"}},"contracts/test/MockAsBNBMinter.sol":{"id":89,"ast":{"absolutePath":"contracts/test/MockAsBNBMinter.sol","exportedSymbols":{"IAsBNBMinter":[4962],"MockAsBNBMinter":[9246]},"id":9247,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9230,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:89"},{"absolutePath":"contracts/interfaces/IAsBNBMinter.sol","file":"../interfaces/IAsBNBMinter.sol","id":9232,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9247,"sourceUnit":4963,"src":"130:62:89","symbolAliases":[{"foreign":{"id":9231,"name":"IAsBNBMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"139:12:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9233,"name":"IAsBNBMinter","nameLocations":["222:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":4962,"src":"222:12:89"},"id":9234,"nodeType":"InheritanceSpecifier","src":"222:12:89"}],"canonicalName":"MockAsBNBMinter","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9246,"linearizedBaseContracts":[9246,4962],"name":"MockAsBNBMinter","nameLocation":"203:15:89","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[4961],"body":{"id":9244,"nodeType":"Block","src":"324:31:89","statements":[{"expression":{"id":9242,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"341:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9241,"id":9243,"nodeType":"Return","src":"334:14:89"}]},"functionSelector":"85906256","id":9245,"implemented":true,"kind":"function","modifiers":[],"name":"convertToTokens","nameLocation":"250:15:89","nodeType":"FunctionDefinition","overrides":{"id":9238,"nodeType":"OverrideSpecifier","overrides":[],"src":"297:8:89"},"parameters":{"id":9237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9236,"mutability":"mutable","name":"_amount","nameLocation":"274:7:89","nodeType":"VariableDeclaration","scope":9245,"src":"266:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9235,"name":"uint256","nodeType":"ElementaryTypeName","src":"266:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"265:17:89"},"returnParameters":{"id":9241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9245,"src":"315:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9239,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:9:89"},"scope":9246,"src":"241:114:89","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":9247,"src":"194:163:89","usedErrors":[],"usedEvents":[]}],"src":"105:253:89"}},"contracts/test/MockCallPrice.sol":{"id":90,"ast":{"absolutePath":"contracts/test/MockCallPrice.sol","exportedSymbols":{"CorrelatedTokenOracleInterface":[9262],"MockCallPrice":[9361],"OracleInterface":[5140],"ResilientOracleInterface":[5160]},"id":9362,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9248,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:90"},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":9251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9362,"sourceUnit":5173,"src":"130:94:90","symbolAliases":[{"foreign":{"id":9249,"name":"OracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"139:15:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9250,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"156:24:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CorrelatedTokenOracleInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9262,"linearizedBaseContracts":[9262],"name":"CorrelatedTokenOracleInterface","nameLocation":"236:30:90","nodeType":"ContractDefinition","nodes":[{"functionSelector":"69240426","id":9254,"implemented":false,"kind":"function","modifiers":[],"name":"updateSnapshot","nameLocation":"282:14:90","nodeType":"FunctionDefinition","parameters":{"id":9252,"nodeType":"ParameterList","parameters":[],"src":"296:2:90"},"returnParameters":{"id":9253,"nodeType":"ParameterList","parameters":[],"src":"307:0:90"},"scope":9262,"src":"273:35:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"41976e09","id":9261,"implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"322:8:90","nodeType":"FunctionDefinition","parameters":{"id":9257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9256,"mutability":"mutable","name":"asset","nameLocation":"339:5:90","nodeType":"VariableDeclaration","scope":9261,"src":"331:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9255,"name":"address","nodeType":"ElementaryTypeName","src":"331:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"330:15:90"},"returnParameters":{"id":9260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9261,"src":"369:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9258,"name":"uint256","nodeType":"ElementaryTypeName","src":"369:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"368:9:90"},"scope":9262,"src":"313:65:90","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9362,"src":"226:154:90","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"MockCallPrice","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9361,"linearizedBaseContracts":[9361],"name":"MockCallPrice","nameLocation":"391:13:90","nodeType":"ContractDefinition","nodes":[{"body":{"id":9289,"nodeType":"Block","src":"522:105:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9274,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"532:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracleInterface_$9262","typeString":"contract CorrelatedTokenOracleInterface"}},"id":9276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"539:14:90","memberName":"updateSnapshot","nodeType":"MemberAccess","referencedDeclaration":9254,"src":"532:21:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":9277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"532:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9278,"nodeType":"ExpressionStatement","src":"532:23:90"},{"expression":{"components":[{"arguments":[{"id":9281,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"589:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9279,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"573:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracleInterface_$9262","typeString":"contract CorrelatedTokenOracleInterface"}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"580:8:90","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":9261,"src":"573:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"573:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":9285,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"613:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9283,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"597:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracleInterface_$9262","typeString":"contract CorrelatedTokenOracleInterface"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"604:8:90","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":9261,"src":"597:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"597:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9287,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"572:48:90","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":9273,"id":9288,"nodeType":"Return","src":"565:55:90"}]},"functionSelector":"2cf689b4","id":9290,"implemented":true,"kind":"function","modifiers":[],"name":"getMultiPrice","nameLocation":"420:13:90","nodeType":"FunctionDefinition","parameters":{"id":9268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9265,"mutability":"mutable","name":"oracle","nameLocation":"465:6:90","nodeType":"VariableDeclaration","scope":9290,"src":"434:37:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracleInterface_$9262","typeString":"contract CorrelatedTokenOracleInterface"},"typeName":{"id":9264,"nodeType":"UserDefinedTypeName","pathNode":{"id":9263,"name":"CorrelatedTokenOracleInterface","nameLocations":["434:30:90"],"nodeType":"IdentifierPath","referencedDeclaration":9262,"src":"434:30:90"},"referencedDeclaration":9262,"src":"434:30:90","typeDescriptions":{"typeIdentifier":"t_contract$_CorrelatedTokenOracleInterface_$9262","typeString":"contract CorrelatedTokenOracleInterface"}},"visibility":"internal"},{"constant":false,"id":9267,"mutability":"mutable","name":"asset","nameLocation":"481:5:90","nodeType":"VariableDeclaration","scope":9290,"src":"473:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9266,"name":"address","nodeType":"ElementaryTypeName","src":"473:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"433:54:90"},"returnParameters":{"id":9273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9290,"src":"504:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9269,"name":"uint256","nodeType":"ElementaryTypeName","src":"504:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9290,"src":"513:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9271,"name":"uint256","nodeType":"ElementaryTypeName","src":"513:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"503:18:90"},"scope":9361,"src":"411:216:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9324,"nodeType":"Block","src":"781:166:90","statements":[{"expression":{"arguments":[{"id":9305,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"810:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9302,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"791:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"798:11:90","memberName":"updatePrice","nodeType":"MemberAccess","referencedDeclaration":5147,"src":"791:18:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"791:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9307,"nodeType":"ExpressionStatement","src":"791:26:90"},{"expression":{"arguments":[{"id":9311,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"846:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9308,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"827:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"834:11:90","memberName":"updatePrice","nodeType":"MemberAccess","referencedDeclaration":5147,"src":"827:18:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9313,"nodeType":"ExpressionStatement","src":"827:26:90"},{"expression":{"components":[{"arguments":[{"id":9316,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"897:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9314,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"871:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"878:18:90","memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":5159,"src":"871:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"871:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":9320,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"932:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9318,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"906:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"913:18:90","memberName":"getUnderlyingPrice","nodeType":"MemberAccess","referencedDeclaration":5159,"src":"906:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"906:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:70:90","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":9301,"id":9323,"nodeType":"Return","src":"863:77:90"}]},"functionSelector":"2bd6ec3e","id":9325,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingPriceResilientOracle","nameLocation":"642:33:90","nodeType":"FunctionDefinition","parameters":{"id":9296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9293,"mutability":"mutable","name":"oracle","nameLocation":"710:6:90","nodeType":"VariableDeclaration","scope":9325,"src":"685:31:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"},"typeName":{"id":9292,"nodeType":"UserDefinedTypeName","pathNode":{"id":9291,"name":"ResilientOracleInterface","nameLocations":["685:24:90"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"685:24:90"},"referencedDeclaration":5160,"src":"685:24:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"visibility":"internal"},{"constant":false,"id":9295,"mutability":"mutable","name":"vToken","nameLocation":"734:6:90","nodeType":"VariableDeclaration","scope":9325,"src":"726:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9294,"name":"address","nodeType":"ElementaryTypeName","src":"726:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"675:71:90"},"returnParameters":{"id":9301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9325,"src":"763:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9297,"name":"uint256","nodeType":"ElementaryTypeName","src":"763:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9325,"src":"772:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9299,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"762:18:90"},"scope":9361,"src":"633:314:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9359,"nodeType":"Block","src":"1095:152:90","statements":[{"expression":{"arguments":[{"id":9340,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"1129:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9337,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"1105:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1112:16:90","memberName":"updateAssetPrice","nodeType":"MemberAccess","referencedDeclaration":5152,"src":"1105:23:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1105:30:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9342,"nodeType":"ExpressionStatement","src":"1105:30:90"},{"expression":{"arguments":[{"id":9346,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"1169:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9343,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"1145:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1152:16:90","memberName":"updateAssetPrice","nodeType":"MemberAccess","referencedDeclaration":5152,"src":"1145:23:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1145:30:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9348,"nodeType":"ExpressionStatement","src":"1145:30:90"},{"expression":{"components":[{"arguments":[{"id":9351,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"1209:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9349,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"1193:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1200:8:90","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"1193:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1193:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":9355,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"1233:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9353,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"1217:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"id":9354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1224:8:90","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":5139,"src":"1217:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1217:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9357,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1192:48:90","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":9336,"id":9358,"nodeType":"Return","src":"1185:55:90"}]},"functionSelector":"0ddd2e27","id":9360,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetPriceResilientOracle","nameLocation":"962:28:90","nodeType":"FunctionDefinition","parameters":{"id":9331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9328,"mutability":"mutable","name":"oracle","nameLocation":"1025:6:90","nodeType":"VariableDeclaration","scope":9360,"src":"1000:31:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"},"typeName":{"id":9327,"nodeType":"UserDefinedTypeName","pathNode":{"id":9326,"name":"ResilientOracleInterface","nameLocations":["1000:24:90"],"nodeType":"IdentifierPath","referencedDeclaration":5160,"src":"1000:24:90"},"referencedDeclaration":5160,"src":"1000:24:90","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$5160","typeString":"contract ResilientOracleInterface"}},"visibility":"internal"},{"constant":false,"id":9330,"mutability":"mutable","name":"asset","nameLocation":"1049:5:90","nodeType":"VariableDeclaration","scope":9360,"src":"1041:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9329,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"990:70:90"},"returnParameters":{"id":9336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9360,"src":"1077:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9332,"name":"uint256","nodeType":"ElementaryTypeName","src":"1077:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9360,"src":"1086:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9334,"name":"uint256","nodeType":"ElementaryTypeName","src":"1086:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1076:18:90"},"scope":9361,"src":"953:294:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":9362,"src":"382:867:90","usedErrors":[],"usedEvents":[]}],"src":"105:1145:90"}},"contracts/test/MockEtherFiLiquidityPool.sol":{"id":91,"ast":{"absolutePath":"contracts/test/MockEtherFiLiquidityPool.sol","exportedSymbols":{"Context":[3290],"IEtherFiLiquidityPool":[4993],"MockEtherFiLiquidityPool":[9407],"Ownable":[1206]},"id":9408,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":9363,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:91"},{"absolutePath":"contracts/interfaces/IEtherFiLiquidityPool.sol","file":"../interfaces/IEtherFiLiquidityPool.sol","id":9364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9408,"sourceUnit":4994,"src":"66:49:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9365,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9408,"sourceUnit":1207,"src":"116:52:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9366,"name":"IEtherFiLiquidityPool","nameLocations":["207:21:91"],"nodeType":"IdentifierPath","referencedDeclaration":4993,"src":"207:21:91"},"id":9367,"nodeType":"InheritanceSpecifier","src":"207:21:91"},{"baseName":{"id":9368,"name":"Ownable","nameLocations":["230:7:91"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"230:7:91"},"id":9369,"nodeType":"InheritanceSpecifier","src":"230:7:91"}],"canonicalName":"MockEtherFiLiquidityPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9407,"linearizedBaseContracts":[9407,1206,3290,4993],"name":"MockEtherFiLiquidityPool","nameLocation":"179:24:91","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":9370,"nodeType":"StructuredDocumentation","src":"244:55:91","text":"@notice The amount of eETH per weETH scaled by 1e18"},"functionSelector":"7c5a227c","id":9372,"mutability":"mutable","name":"amountPerShare","nameLocation":"319:14:91","nodeType":"VariableDeclaration","scope":9407,"src":"304:29:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9371,"name":"uint256","nodeType":"ElementaryTypeName","src":"304:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":9377,"nodeType":"Block","src":"364:2:91","statements":[]},"id":9378,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":9375,"kind":"baseConstructorSpecifier","modifierName":{"id":9374,"name":"Ownable","nameLocations":["354:7:91"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"354:7:91"},"nodeType":"ModifierInvocation","src":"354:9:91"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9373,"nodeType":"ParameterList","parameters":[],"src":"351:2:91"},"returnParameters":{"id":9376,"nodeType":"ParameterList","parameters":[],"src":"364:0:91"},"scope":9407,"src":"340:26:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9389,"nodeType":"Block","src":"443:49:91","statements":[{"expression":{"id":9387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9385,"name":"amountPerShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9372,"src":"453:14:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9386,"name":"_amountPerShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"470:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"453:32:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9388,"nodeType":"ExpressionStatement","src":"453:32:91"}]},"functionSelector":"b1ef362d","id":9390,"implemented":true,"kind":"function","modifiers":[{"id":9383,"kind":"modifierInvocation","modifierName":{"id":9382,"name":"onlyOwner","nameLocations":["433:9:91"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"433:9:91"},"nodeType":"ModifierInvocation","src":"433:9:91"}],"name":"setAmountPerShare","nameLocation":"381:17:91","nodeType":"FunctionDefinition","parameters":{"id":9381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9380,"mutability":"mutable","name":"_amountPerShare","nameLocation":"407:15:91","nodeType":"VariableDeclaration","scope":9390,"src":"399:23:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9379,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"398:25:91"},"returnParameters":{"id":9384,"nodeType":"ParameterList","parameters":[],"src":"443:0:91"},"scope":9407,"src":"372:120:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4992],"body":{"id":9405,"nodeType":"Block","src":"579:56:91","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9398,"name":"_share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"597:6:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9399,"name":"amountPerShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9372,"src":"606:14:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"597:23:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9401,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"596:25:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":9402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"624:4:91","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"596:32:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9397,"id":9404,"nodeType":"Return","src":"589:39:91"}]},"functionSelector":"561bddf8","id":9406,"implemented":true,"kind":"function","modifiers":[],"name":"amountForShare","nameLocation":"507:14:91","nodeType":"FunctionDefinition","overrides":{"id":9394,"nodeType":"OverrideSpecifier","overrides":[],"src":"552:8:91"},"parameters":{"id":9393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9392,"mutability":"mutable","name":"_share","nameLocation":"530:6:91","nodeType":"VariableDeclaration","scope":9406,"src":"522:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9391,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"521:16:91"},"returnParameters":{"id":9397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9406,"src":"570:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9395,"name":"uint256","nodeType":"ElementaryTypeName","src":"570:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"569:9:91"},"scope":9407,"src":"498:137:91","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9408,"src":"170:467:91","usedErrors":[],"usedEvents":[1107]}],"src":"41:597:91"}},"contracts/test/MockSFrax.sol":{"id":92,"ast":{"absolutePath":"contracts/test/MockSFrax.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"ISFrax":[5057],"MockSFrax":[9502],"Ownable":[1206]},"id":9503,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9409,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:92"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":9411,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9503,"sourceUnit":2828,"src":"130:70:92","symbolAliases":[{"foreign":{"id":9410,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"139:5:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISFrax.sol","file":"../interfaces/ISFrax.sol","id":9413,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9503,"sourceUnit":5058,"src":"201:50:92","symbolAliases":[{"foreign":{"id":9412,"name":"ISFrax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"210:6:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9414,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9503,"sourceUnit":1207,"src":"252:52:92","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9415,"name":"ERC20","nameLocations":["328:5:92"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"328:5:92"},"id":9416,"nodeType":"InheritanceSpecifier","src":"328:5:92"},{"baseName":{"id":9417,"name":"Ownable","nameLocations":["335:7:92"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"335:7:92"},"id":9418,"nodeType":"InheritanceSpecifier","src":"335:7:92"},{"baseName":{"id":9419,"name":"ISFrax","nameLocations":["344:6:92"],"nodeType":"IdentifierPath","referencedDeclaration":5057,"src":"344:6:92"},"id":9420,"nodeType":"InheritanceSpecifier","src":"344:6:92"}],"canonicalName":"MockSFrax","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9502,"linearizedBaseContracts":[9502,5057,1206,2827,2930,2905,3290],"name":"MockSFrax","nameLocation":"315:9:92","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9422,"mutability":"immutable","name":"_decimals","nameLocation":"381:9:92","nodeType":"VariableDeclaration","scope":9502,"src":"357:33:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9421,"name":"uint8","nodeType":"ElementaryTypeName","src":"357:5:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"functionSelector":"3ba0b9a9","id":9424,"mutability":"mutable","name":"exchangeRate","nameLocation":"411:12:92","nodeType":"VariableDeclaration","scope":9502,"src":"396:27:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9423,"name":"uint256","nodeType":"ElementaryTypeName","src":"396:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":9443,"nodeType":"Block","src":"535:38:92","statements":[{"expression":{"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9439,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9422,"src":"545:9:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9440,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9430,"src":"557:9:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"545:21:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9442,"nodeType":"ExpressionStatement","src":"545:21:92"}]},"id":9444,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9433,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9426,"src":"509:5:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9434,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9428,"src":"516:7:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9435,"kind":"baseConstructorSpecifier","modifierName":{"id":9432,"name":"ERC20","nameLocations":["503:5:92"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"503:5:92"},"nodeType":"ModifierInvocation","src":"503:21:92"},{"arguments":[],"id":9437,"kind":"baseConstructorSpecifier","modifierName":{"id":9436,"name":"Ownable","nameLocations":["525:7:92"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"525:7:92"},"nodeType":"ModifierInvocation","src":"525:9:92"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9426,"mutability":"mutable","name":"name_","nameLocation":"456:5:92","nodeType":"VariableDeclaration","scope":9444,"src":"442:19:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9425,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9428,"mutability":"mutable","name":"symbol_","nameLocation":"477:7:92","nodeType":"VariableDeclaration","scope":9444,"src":"463:21:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9427,"name":"string","nodeType":"ElementaryTypeName","src":"463:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9430,"mutability":"mutable","name":"decimals_","nameLocation":"492:9:92","nodeType":"VariableDeclaration","scope":9444,"src":"486:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9429,"name":"uint8","nodeType":"ElementaryTypeName","src":"486:5:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"441:61:92"},"returnParameters":{"id":9438,"nodeType":"ParameterList","parameters":[],"src":"535:0:92"},"scope":9502,"src":"430:143:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9455,"nodeType":"Block","src":"620:42:92","statements":[{"expression":{"arguments":[{"expression":{"id":9450,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"636:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"640:6:92","memberName":"sender","nodeType":"MemberAccess","src":"636:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9452,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9446,"src":"648:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9449,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"630:5:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"630:25:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9454,"nodeType":"ExpressionStatement","src":"630:25:92"}]},"functionSelector":"57915897","id":9456,"implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"588:6:92","nodeType":"FunctionDefinition","parameters":{"id":9447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9446,"mutability":"mutable","name":"amount","nameLocation":"603:6:92","nodeType":"VariableDeclaration","scope":9456,"src":"595:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9445,"name":"uint256","nodeType":"ElementaryTypeName","src":"595:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"594:16:92"},"returnParameters":{"id":9448,"nodeType":"ParameterList","parameters":[],"src":"620:0:92"},"scope":9502,"src":"579:83:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9467,"nodeType":"Block","src":"718:36:92","statements":[{"expression":{"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9463,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9424,"src":"728:12:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9464,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9458,"src":"743:4:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"728:19:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9466,"nodeType":"ExpressionStatement","src":"728:19:92"}]},"functionSelector":"34fcf437","id":9468,"implemented":true,"kind":"function","modifiers":[{"id":9461,"kind":"modifierInvocation","modifierName":{"id":9460,"name":"onlyOwner","nameLocations":["708:9:92"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"708:9:92"},"nodeType":"ModifierInvocation","src":"708:9:92"}],"name":"setRate","nameLocation":"677:7:92","nodeType":"FunctionDefinition","parameters":{"id":9459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9458,"mutability":"mutable","name":"rate","nameLocation":"693:4:92","nodeType":"VariableDeclaration","scope":9468,"src":"685:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9457,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"684:14:92"},"returnParameters":{"id":9462,"nodeType":"ParameterList","parameters":[],"src":"718:0:92"},"scope":9502,"src":"668:86:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5051],"body":{"id":9489,"nodeType":"Block","src":"842:76:92","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9476,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"860:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9477,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9424,"src":"869:12:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"860:21:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"859:23:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"886:2:92","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"id":9483,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9422,"src":"900:9:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"892:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9481,"name":"uint256","nodeType":"ElementaryTypeName","src":"892:7:92","typeDescriptions":{}}},"id":9484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"892:18:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"886:24:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"885:26:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"859:52:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9475,"id":9488,"nodeType":"Return","src":"852:59:92"}]},"functionSelector":"07a2d13a","id":9490,"implemented":true,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"769:15:92","nodeType":"FunctionDefinition","overrides":{"id":9472,"nodeType":"OverrideSpecifier","overrides":[],"src":"815:8:92"},"parameters":{"id":9471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9470,"mutability":"mutable","name":"shares","nameLocation":"793:6:92","nodeType":"VariableDeclaration","scope":9490,"src":"785:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9469,"name":"uint256","nodeType":"ElementaryTypeName","src":"785:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"784:16:92"},"returnParameters":{"id":9475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9490,"src":"833:7:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9473,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:9:92"},"scope":9502,"src":"760:158:92","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2315,5056],"body":{"id":9500,"nodeType":"Block","src":"1004:33:92","statements":[{"expression":{"id":9498,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9422,"src":"1021:9:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9497,"id":9499,"nodeType":"Return","src":"1014:16:92"}]},"functionSelector":"313ce567","id":9501,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"933:8:92","nodeType":"FunctionDefinition","overrides":{"id":9494,"nodeType":"OverrideSpecifier","overrides":[{"id":9492,"name":"ERC20","nameLocations":["973:5:92"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"973:5:92"},{"id":9493,"name":"ISFrax","nameLocations":["980:6:92"],"nodeType":"IdentifierPath","referencedDeclaration":5057,"src":"980:6:92"}],"src":"964:23:92"},"parameters":{"id":9491,"nodeType":"ParameterList","parameters":[],"src":"941:2:92"},"returnParameters":{"id":9497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9501,"src":"997:5:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9495,"name":"uint8","nodeType":"ElementaryTypeName","src":"997:5:92","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"996:7:92"},"scope":9502,"src":"924:113:92","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9503,"src":"306:733:92","usedErrors":[],"usedEvents":[1107,2839,2848]}],"src":"105:935:92"}},"contracts/test/MockSimpleOracle.sol":{"id":93,"ast":{"absolutePath":"contracts/test/MockSimpleOracle.sol","exportedSymbols":{"BoundValidatorInterface":[5172],"MockBoundValidator":[9613],"MockSimpleOracle":[9554],"OracleInterface":[5140],"ResilientOracleInterface":[5160]},"id":9614,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":9504,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:93"},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../interfaces/OracleInterface.sol","id":9505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9614,"sourceUnit":5173,"src":"66:43:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9506,"name":"OracleInterface","nameLocations":["140:15:93"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"140:15:93"},"id":9507,"nodeType":"InheritanceSpecifier","src":"140:15:93"}],"canonicalName":"MockSimpleOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9554,"linearizedBaseContracts":[9554,5140],"name":"MockSimpleOracle","nameLocation":"120:16:93","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"cfed246b","id":9511,"mutability":"mutable","name":"prices","nameLocation":"197:6:93","nodeType":"VariableDeclaration","scope":9554,"src":"162:41:93","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":9510,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9508,"name":"address","nodeType":"ElementaryTypeName","src":"170:7:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"162:27:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9509,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":9514,"nodeType":"Block","src":"224:18:93","statements":[]},"id":9515,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9512,"nodeType":"ParameterList","parameters":[],"src":"221:2:93"},"returnParameters":{"id":9513,"nodeType":"ParameterList","parameters":[],"src":"224:0:93"},"scope":9554,"src":"210:32:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9526,"nodeType":"Block","src":"324:38:93","statements":[{"expression":{"baseExpression":{"id":9522,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"341:6:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9524,"indexExpression":{"id":9523,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9517,"src":"348:6:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"341:14:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9521,"id":9525,"nodeType":"Return","src":"334:21:93"}]},"functionSelector":"fc57d4df","id":9527,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nameLocation":"257:18:93","nodeType":"FunctionDefinition","parameters":{"id":9518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9517,"mutability":"mutable","name":"vToken","nameLocation":"284:6:93","nodeType":"VariableDeclaration","scope":9527,"src":"276:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9516,"name":"address","nodeType":"ElementaryTypeName","src":"276:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"275:16:93"},"returnParameters":{"id":9521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9520,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9527,"src":"315:7:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9519,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:9:93"},"scope":9554,"src":"248:114:93","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5139],"body":{"id":9538,"nodeType":"Block","src":"433:37:93","statements":[{"expression":{"baseExpression":{"id":9534,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"450:6:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9536,"indexExpression":{"id":9535,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9529,"src":"457:5:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"450:13:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9533,"id":9537,"nodeType":"Return","src":"443:20:93"}]},"functionSelector":"41976e09","id":9539,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"377:8:93","nodeType":"FunctionDefinition","parameters":{"id":9530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9529,"mutability":"mutable","name":"asset","nameLocation":"394:5:93","nodeType":"VariableDeclaration","scope":9539,"src":"386:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9528,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"385:15:93"},"returnParameters":{"id":9533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9539,"src":"424:7:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9531,"name":"uint256","nodeType":"ElementaryTypeName","src":"424:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"423:9:93"},"scope":9554,"src":"368:102:93","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9552,"nodeType":"Block","src":"532:39:93","statements":[{"expression":{"id":9550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9546,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"542:6:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9548,"indexExpression":{"id":9547,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"549:6:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"542:14:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9549,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"559:5:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"542:22:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9551,"nodeType":"ExpressionStatement","src":"542:22:93"}]},"functionSelector":"00e4768b","id":9553,"implemented":true,"kind":"function","modifiers":[],"name":"setPrice","nameLocation":"485:8:93","nodeType":"FunctionDefinition","parameters":{"id":9544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9541,"mutability":"mutable","name":"vToken","nameLocation":"502:6:93","nodeType":"VariableDeclaration","scope":9553,"src":"494:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9540,"name":"address","nodeType":"ElementaryTypeName","src":"494:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9543,"mutability":"mutable","name":"price","nameLocation":"518:5:93","nodeType":"VariableDeclaration","scope":9553,"src":"510:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9542,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"493:31:93"},"returnParameters":{"id":9545,"nodeType":"ParameterList","parameters":[],"src":"532:0:93"},"scope":9554,"src":"476:95:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":9614,"src":"111:462:93","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":9555,"name":"BoundValidatorInterface","nameLocations":["606:23:93"],"nodeType":"IdentifierPath","referencedDeclaration":5172,"src":"606:23:93"},"id":9556,"nodeType":"InheritanceSpecifier","src":"606:23:93"}],"canonicalName":"MockBoundValidator","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9613,"linearizedBaseContracts":[9613,5172],"name":"MockBoundValidator","nameLocation":"584:18:93","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"a050bcb3","id":9560,"mutability":"mutable","name":"validateResults","nameLocation":"668:15:93","nodeType":"VariableDeclaration","scope":9613,"src":"636:47:93","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":9559,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9557,"name":"address","nodeType":"ElementaryTypeName","src":"644:7:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"636:24:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9558,"name":"bool","nodeType":"ElementaryTypeName","src":"655:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"8146bf7f","id":9562,"mutability":"mutable","name":"twapUpdated","nameLocation":"701:11:93","nodeType":"VariableDeclaration","scope":9613,"src":"689:23:93","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9561,"name":"bool","nodeType":"ElementaryTypeName","src":"689:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":9565,"nodeType":"Block","src":"733:18:93","statements":[]},"id":9566,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9563,"nodeType":"ParameterList","parameters":[],"src":"730:2:93"},"returnParameters":{"id":9564,"nodeType":"ParameterList","parameters":[],"src":"733:0:93"},"scope":9613,"src":"719:32:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5171],"body":{"id":9581,"nodeType":"Block","src":"914:47:93","statements":[{"expression":{"baseExpression":{"id":9577,"name":"validateResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9560,"src":"931:15:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9579,"indexExpression":{"id":9578,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"947:6:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"931:23:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9576,"id":9580,"nodeType":"Return","src":"924:30:93"}]},"functionSelector":"97c7033e","id":9582,"implemented":true,"kind":"function","modifiers":[],"name":"validatePriceWithAnchorPrice","nameLocation":"766:28:93","nodeType":"FunctionDefinition","parameters":{"id":9573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9568,"mutability":"mutable","name":"vToken","nameLocation":"812:6:93","nodeType":"VariableDeclaration","scope":9582,"src":"804:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9567,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9570,"mutability":"mutable","name":"reporterPrice","nameLocation":"836:13:93","nodeType":"VariableDeclaration","scope":9582,"src":"828:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9569,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9572,"mutability":"mutable","name":"anchorPrice","nameLocation":"867:11:93","nodeType":"VariableDeclaration","scope":9582,"src":"859:19:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9571,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"794:90:93"},"returnParameters":{"id":9576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9582,"src":"908:4:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9574,"name":"bool","nodeType":"ElementaryTypeName","src":"908:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"907:6:93"},"scope":9613,"src":"757:204:93","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9597,"nodeType":"Block","src":"1128:46:93","statements":[{"expression":{"baseExpression":{"id":9593,"name":"validateResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9560,"src":"1145:15:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9595,"indexExpression":{"id":9594,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9584,"src":"1161:5:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1145:22:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9592,"id":9596,"nodeType":"Return","src":"1138:29:93"}]},"functionSelector":"28d0ef67","id":9598,"implemented":true,"kind":"function","modifiers":[],"name":"validateAssetPriceWithAnchorPrice","nameLocation":"976:33:93","nodeType":"FunctionDefinition","parameters":{"id":9589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9584,"mutability":"mutable","name":"asset","nameLocation":"1027:5:93","nodeType":"VariableDeclaration","scope":9598,"src":"1019:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9583,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9586,"mutability":"mutable","name":"reporterPrice","nameLocation":"1050:13:93","nodeType":"VariableDeclaration","scope":9598,"src":"1042:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9585,"name":"uint256","nodeType":"ElementaryTypeName","src":"1042:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9588,"mutability":"mutable","name":"anchorPrice","nameLocation":"1081:11:93","nodeType":"VariableDeclaration","scope":9598,"src":"1073:19:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9587,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1009:89:93"},"returnParameters":{"id":9592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9591,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9598,"src":"1122:4:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9590,"name":"bool","nodeType":"ElementaryTypeName","src":"1122:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1121:6:93"},"scope":9613,"src":"967:207:93","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9611,"nodeType":"Block","src":"1240:46:93","statements":[{"expression":{"id":9609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9605,"name":"validateResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9560,"src":"1250:15:93","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9607,"indexExpression":{"id":9606,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9600,"src":"1266:5:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1250:22:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9608,"name":"pass","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"1275:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1250:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9610,"nodeType":"ExpressionStatement","src":"1250:29:93"}]},"functionSelector":"79c5e512","id":9612,"implemented":true,"kind":"function","modifiers":[],"name":"setValidateResult","nameLocation":"1189:17:93","nodeType":"FunctionDefinition","parameters":{"id":9603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9600,"mutability":"mutable","name":"token","nameLocation":"1215:5:93","nodeType":"VariableDeclaration","scope":9612,"src":"1207:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9599,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9602,"mutability":"mutable","name":"pass","nameLocation":"1227:4:93","nodeType":"VariableDeclaration","scope":9612,"src":"1222:9:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9601,"name":"bool","nodeType":"ElementaryTypeName","src":"1222:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1206:26:93"},"returnParameters":{"id":9604,"nodeType":"ParameterList","parameters":[],"src":"1240:0:93"},"scope":9613,"src":"1180:106:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":9614,"src":"575:713:93","usedErrors":[],"usedEvents":[]}],"src":"41:1248:93"}},"contracts/test/MockV3Aggregator.sol":{"id":94,"ast":{"absolutePath":"contracts/test/MockV3Aggregator.sol","exportedSymbols":{"AggregatorInterface":[47],"AggregatorV2V3Interface":[56],"AggregatorV3Interface":[102],"MockV3Aggregator":[9809]},"id":9810,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":9615,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:94"},{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol","file":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol","id":9616,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9810,"sourceUnit":57,"src":"66:78:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9618,"name":"AggregatorV2V3Interface","nameLocations":["438:23:94"],"nodeType":"IdentifierPath","referencedDeclaration":56,"src":"438:23:94"},"id":9619,"nodeType":"InheritanceSpecifier","src":"438:23:94"}],"canonicalName":"MockV3Aggregator","contractDependencies":[],"contractKind":"contract","documentation":{"id":9617,"nodeType":"StructuredDocumentation","src":"146:262:94","text":" @title MockV3Aggregator\n @notice Based on the FluxAggregator contract\n @notice Use this contract when you need to test\n other contract's ability to read data from an\n aggregator contract, but how the aggregator got\n its answer is unimportant"},"fullyImplemented":true,"id":9809,"linearizedBaseContracts":[9809,56,102,47],"name":"MockV3Aggregator","nameLocation":"418:16:94","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[73],"constant":true,"functionSelector":"54fd4d50","id":9622,"mutability":"constant","name":"version","nameLocation":"492:7:94","nodeType":"VariableDeclaration","scope":9809,"src":"468:35:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9620,"name":"uint256","nodeType":"ElementaryTypeName","src":"468:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":9621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"502:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"baseFunctions":[63],"constant":false,"functionSelector":"313ce567","id":9624,"mutability":"mutable","name":"decimals","nameLocation":"523:8:94","nodeType":"VariableDeclaration","scope":9809,"src":"510:21:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9623,"name":"uint8","nodeType":"ElementaryTypeName","src":"510:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"baseFunctions":[6],"constant":false,"functionSelector":"50d25bcd","id":9626,"mutability":"mutable","name":"latestAnswer","nameLocation":"551:12:94","nodeType":"VariableDeclaration","scope":9809,"src":"537:26:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9625,"name":"int256","nodeType":"ElementaryTypeName","src":"537:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"public"},{"baseFunctions":[11],"constant":false,"functionSelector":"8205bf6a","id":9628,"mutability":"mutable","name":"latestTimestamp","nameLocation":"584:15:94","nodeType":"VariableDeclaration","scope":9809,"src":"569:30:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9627,"name":"uint256","nodeType":"ElementaryTypeName","src":"569:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[16],"constant":false,"functionSelector":"668a0f02","id":9630,"mutability":"mutable","name":"latestRound","nameLocation":"620:11:94","nodeType":"VariableDeclaration","scope":9809,"src":"605:26:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9629,"name":"uint256","nodeType":"ElementaryTypeName","src":"605:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[23],"constant":false,"functionSelector":"b5ab58dc","id":9634,"mutability":"mutable","name":"getAnswer","nameLocation":"672:9:94","nodeType":"VariableDeclaration","scope":9809,"src":"638:43:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"},"typeName":{"id":9633,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9631,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"638:26:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9632,"name":"int256","nodeType":"ElementaryTypeName","src":"657:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},"visibility":"public"},{"baseFunctions":[30],"constant":false,"functionSelector":"b633620c","id":9638,"mutability":"mutable","name":"getTimestamp","nameLocation":"722:12:94","nodeType":"VariableDeclaration","scope":9809,"src":"687:47:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":9637,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9635,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"687:27:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9636,"name":"uint256","nodeType":"ElementaryTypeName","src":"706:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":9642,"mutability":"mutable","name":"getStartedAt","nameLocation":"776:12:94","nodeType":"VariableDeclaration","scope":9809,"src":"740:48:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":9641,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9639,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"740:27:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9640,"name":"uint256","nodeType":"ElementaryTypeName","src":"759:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":9657,"nodeType":"Block","src":"847:75:94","statements":[{"expression":{"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9649,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9624,"src":"857:8:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9650,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"868:9:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"857:20:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9652,"nodeType":"ExpressionStatement","src":"857:20:94"},{"expression":{"arguments":[{"id":9654,"name":"_initialAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9646,"src":"900:14:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9653,"name":"updateAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9766,"src":"887:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$returns$__$","typeString":"function (int256)"}},"id":9655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"887:28:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9656,"nodeType":"ExpressionStatement","src":"887:28:94"}]},"id":9658,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9644,"mutability":"mutable","name":"_decimals","nameLocation":"813:9:94","nodeType":"VariableDeclaration","scope":9658,"src":"807:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9643,"name":"uint8","nodeType":"ElementaryTypeName","src":"807:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9646,"mutability":"mutable","name":"_initialAnswer","nameLocation":"831:14:94","nodeType":"VariableDeclaration","scope":9658,"src":"824:21:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9645,"name":"int256","nodeType":"ElementaryTypeName","src":"824:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"806:40:94"},"returnParameters":{"id":9648,"nodeType":"ParameterList","parameters":[],"src":"847:0:94"},"scope":9809,"src":"795:127:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[88],"body":{"id":9686,"nodeType":"Block","src":"1125:113:94","statements":[{"expression":{"components":[{"id":9673,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9660,"src":"1143:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"baseExpression":{"id":9674,"name":"getAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9634,"src":"1153:9:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"}},"id":9676,"indexExpression":{"id":9675,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9660,"src":"1163:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1153:19:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"baseExpression":{"id":9677,"name":"getStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"1174:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9679,"indexExpression":{"id":9678,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9660,"src":"1187:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1174:22:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":9680,"name":"getTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"1198:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9682,"indexExpression":{"id":9681,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9660,"src":"1211:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1198:22:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9683,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9660,"src":"1222:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":9684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1142:89:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"functionReturnParameters":9672,"id":9685,"nodeType":"Return","src":"1135:96:94"}]},"functionSelector":"9a6fc8f5","id":9687,"implemented":true,"kind":"function","modifiers":[],"name":"getRoundData","nameLocation":"937:12:94","nodeType":"FunctionDefinition","parameters":{"id":9661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9660,"mutability":"mutable","name":"_roundId","nameLocation":"966:8:94","nodeType":"VariableDeclaration","scope":9687,"src":"959:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9659,"name":"uint80","nodeType":"ElementaryTypeName","src":"959:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"949:31:94"},"returnParameters":{"id":9672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9663,"mutability":"mutable","name":"roundId","nameLocation":"1035:7:94","nodeType":"VariableDeclaration","scope":9687,"src":"1028:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9662,"name":"uint80","nodeType":"ElementaryTypeName","src":"1028:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":9665,"mutability":"mutable","name":"answer","nameLocation":"1051:6:94","nodeType":"VariableDeclaration","scope":9687,"src":"1044:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9664,"name":"int256","nodeType":"ElementaryTypeName","src":"1044:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9667,"mutability":"mutable","name":"startedAt","nameLocation":"1067:9:94","nodeType":"VariableDeclaration","scope":9687,"src":"1059:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9666,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9669,"mutability":"mutable","name":"updatedAt","nameLocation":"1086:9:94","nodeType":"VariableDeclaration","scope":9687,"src":"1078:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1078:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9671,"mutability":"mutable","name":"answeredInRound","nameLocation":"1104:15:94","nodeType":"VariableDeclaration","scope":9687,"src":"1097:22:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9670,"name":"uint80","nodeType":"ElementaryTypeName","src":"1097:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"1027:93:94"},"scope":9809,"src":"928:310:94","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[101],"body":{"id":9719,"nodeType":"Block","src":"1415:214:94","statements":[{"expression":{"components":[{"arguments":[{"id":9702,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1453:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1446:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":9700,"name":"uint80","nodeType":"ElementaryTypeName","src":"1446:6:94","typeDescriptions":{}}},"id":9703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1446:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},{"baseExpression":{"id":9704,"name":"getAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9634,"src":"1479:9:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"}},"id":9706,"indexExpression":{"id":9705,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1489:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1479:22:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"baseExpression":{"id":9707,"name":"getStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"1515:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9709,"indexExpression":{"id":9708,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1528:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1515:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":9710,"name":"getTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"1554:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9712,"indexExpression":{"id":9711,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1567:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1554:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":9715,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1600:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1593:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":9713,"name":"uint80","nodeType":"ElementaryTypeName","src":"1593:6:94","typeDescriptions":{}}},"id":9716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1593:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}}],"id":9717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1432:190:94","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"functionReturnParameters":9699,"id":9718,"nodeType":"Return","src":"1425:197:94"}]},"functionSelector":"feaf968c","id":9720,"implemented":true,"kind":"function","modifiers":[],"name":"latestRoundData","nameLocation":"1253:15:94","nodeType":"FunctionDefinition","parameters":{"id":9688,"nodeType":"ParameterList","parameters":[],"src":"1268:2:94"},"returnParameters":{"id":9699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9690,"mutability":"mutable","name":"roundId","nameLocation":"1325:7:94","nodeType":"VariableDeclaration","scope":9720,"src":"1318:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9689,"name":"uint80","nodeType":"ElementaryTypeName","src":"1318:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":9692,"mutability":"mutable","name":"answer","nameLocation":"1341:6:94","nodeType":"VariableDeclaration","scope":9720,"src":"1334:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9691,"name":"int256","nodeType":"ElementaryTypeName","src":"1334:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9694,"mutability":"mutable","name":"startedAt","nameLocation":"1357:9:94","nodeType":"VariableDeclaration","scope":9720,"src":"1349:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9693,"name":"uint256","nodeType":"ElementaryTypeName","src":"1349:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9696,"mutability":"mutable","name":"updatedAt","nameLocation":"1376:9:94","nodeType":"VariableDeclaration","scope":9720,"src":"1368:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9698,"mutability":"mutable","name":"answeredInRound","nameLocation":"1394:15:94","nodeType":"VariableDeclaration","scope":9720,"src":"1387:22:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9697,"name":"uint80","nodeType":"ElementaryTypeName","src":"1387:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"1317:93:94"},"scope":9809,"src":"1244:385:94","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[68],"body":{"id":9727,"nodeType":"Block","src":"1696:57:94","statements":[{"expression":{"hexValue":"76302e362f74657374732f4d6f636b563341676772656761746f722e736f6c","id":9725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1713:33:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_f07fb5b1ad79aac528cd96a1cc4b4ec6f7cefc63060a932b3b6750094ba19ff0","typeString":"literal_string \"v0.6/tests/MockV3Aggregator.sol\""},"value":"v0.6/tests/MockV3Aggregator.sol"},"functionReturnParameters":9724,"id":9726,"nodeType":"Return","src":"1706:40:94"}]},"functionSelector":"7284e416","id":9728,"implemented":true,"kind":"function","modifiers":[],"name":"description","nameLocation":"1644:11:94","nodeType":"FunctionDefinition","parameters":{"id":9721,"nodeType":"ParameterList","parameters":[],"src":"1655:2:94"},"returnParameters":{"id":9724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9728,"src":"1681:13:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9722,"name":"string","nodeType":"ElementaryTypeName","src":"1681:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1680:15:94"},"scope":9809,"src":"1635:118:94","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":9765,"nodeType":"Block","src":"1804:253:94","statements":[{"expression":{"id":9735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9733,"name":"latestAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"1814:12:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9734,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"1829:7:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1814:22:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9736,"nodeType":"ExpressionStatement","src":"1814:22:94"},{"expression":{"id":9740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9737,"name":"latestTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9628,"src":"1846:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9738,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1864:5:94","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1870:9:94","memberName":"timestamp","nodeType":"MemberAccess","src":"1864:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1846:33:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9741,"nodeType":"ExpressionStatement","src":"1846:33:94"},{"expression":{"id":9743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1889:13:94","subExpression":{"id":9742,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1889:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9744,"nodeType":"ExpressionStatement","src":"1889:13:94"},{"expression":{"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9745,"name":"getAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9634,"src":"1912:9:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"}},"id":9747,"indexExpression":{"id":9746,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1922:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1912:22:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9748,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"1937:7:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1912:32:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9750,"nodeType":"ExpressionStatement","src":"1912:32:94"},{"expression":{"id":9756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9751,"name":"getTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"1954:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9753,"indexExpression":{"id":9752,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"1967:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1954:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9754,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1982:5:94","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1988:9:94","memberName":"timestamp","nodeType":"MemberAccess","src":"1982:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1954:43:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9757,"nodeType":"ExpressionStatement","src":"1954:43:94"},{"expression":{"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9758,"name":"getStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"2007:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9760,"indexExpression":{"id":9759,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"2020:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2007:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9761,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2035:5:94","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2041:9:94","memberName":"timestamp","nodeType":"MemberAccess","src":"2035:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2007:43:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9764,"nodeType":"ExpressionStatement","src":"2007:43:94"}]},"functionSelector":"a87a20ce","id":9766,"implemented":true,"kind":"function","modifiers":[],"name":"updateAnswer","nameLocation":"1768:12:94","nodeType":"FunctionDefinition","parameters":{"id":9731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"_answer","nameLocation":"1788:7:94","nodeType":"VariableDeclaration","scope":9766,"src":"1781:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9729,"name":"int256","nodeType":"ElementaryTypeName","src":"1781:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1780:16:94"},"returnParameters":{"id":9732,"nodeType":"ParameterList","parameters":[],"src":"1804:0:94"},"scope":9809,"src":"1759:298:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9807,"nodeType":"Block","src":"2168:247:94","statements":[{"expression":{"id":9779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9777,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"2178:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9778,"name":"_roundId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"2192:8:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"2178:22:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9780,"nodeType":"ExpressionStatement","src":"2178:22:94"},{"expression":{"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9781,"name":"latestAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"2210:12:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9782,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"2225:7:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2210:22:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9784,"nodeType":"ExpressionStatement","src":"2210:22:94"},{"expression":{"id":9787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9785,"name":"latestTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9628,"src":"2242:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9786,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"2260:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2242:28:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9788,"nodeType":"ExpressionStatement","src":"2242:28:94"},{"expression":{"id":9793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9789,"name":"getAnswer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9634,"src":"2280:9:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_int256_$","typeString":"mapping(uint256 => int256)"}},"id":9791,"indexExpression":{"id":9790,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"2290:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2280:22:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9792,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"2305:7:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2280:32:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9794,"nodeType":"ExpressionStatement","src":"2280:32:94"},{"expression":{"id":9799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9795,"name":"getTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"2322:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9797,"indexExpression":{"id":9796,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"2335:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2322:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9798,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"2350:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2322:38:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9800,"nodeType":"ExpressionStatement","src":"2322:38:94"},{"expression":{"id":9805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9801,"name":"getStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"2370:12:94","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9803,"indexExpression":{"id":9802,"name":"latestRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"2383:11:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2370:25:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9804,"name":"_startedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9774,"src":"2398:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2370:38:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9806,"nodeType":"ExpressionStatement","src":"2370:38:94"}]},"functionSelector":"4aa2011f","id":9808,"implemented":true,"kind":"function","modifiers":[],"name":"updateRoundData","nameLocation":"2072:15:94","nodeType":"FunctionDefinition","parameters":{"id":9775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9768,"mutability":"mutable","name":"_roundId","nameLocation":"2095:8:94","nodeType":"VariableDeclaration","scope":9808,"src":"2088:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":9767,"name":"uint80","nodeType":"ElementaryTypeName","src":"2088:6:94","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":9770,"mutability":"mutable","name":"_answer","nameLocation":"2112:7:94","nodeType":"VariableDeclaration","scope":9808,"src":"2105:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9769,"name":"int256","nodeType":"ElementaryTypeName","src":"2105:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9772,"mutability":"mutable","name":"_timestamp","nameLocation":"2129:10:94","nodeType":"VariableDeclaration","scope":9808,"src":"2121:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9771,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9774,"mutability":"mutable","name":"_startedAt","nameLocation":"2149:10:94","nodeType":"VariableDeclaration","scope":9808,"src":"2141:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9773,"name":"uint256","nodeType":"ElementaryTypeName","src":"2141:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2087:73:94"},"returnParameters":{"id":9776,"nodeType":"ParameterList","parameters":[],"src":"2168:0:94"},"scope":9809,"src":"2063:352:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":9810,"src":"409:2008:94","usedErrors":[],"usedEvents":[38,46]}],"src":"41:2377:94"}},"contracts/test/MockWBETH.sol":{"id":95,"ast":{"absolutePath":"contracts/test/MockWBETH.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"IWBETH":[5117],"MockWBETH":[9883],"Ownable":[1206]},"id":9884,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9811,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:95"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":9813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9884,"sourceUnit":2828,"src":"130:70:95","symbolAliases":[{"foreign":{"id":9812,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"139:5:95","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IWBETH.sol","file":"../interfaces/IWBETH.sol","id":9815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9884,"sourceUnit":5118,"src":"201:50:95","symbolAliases":[{"foreign":{"id":9814,"name":"IWBETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"210:6:95","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9816,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9884,"sourceUnit":1207,"src":"252:52:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9817,"name":"ERC20","nameLocations":["328:5:95"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"328:5:95"},"id":9818,"nodeType":"InheritanceSpecifier","src":"328:5:95"},{"baseName":{"id":9819,"name":"Ownable","nameLocations":["335:7:95"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"335:7:95"},"id":9820,"nodeType":"InheritanceSpecifier","src":"335:7:95"},{"baseName":{"id":9821,"name":"IWBETH","nameLocations":["344:6:95"],"nodeType":"IdentifierPath","referencedDeclaration":5117,"src":"344:6:95"},"id":9822,"nodeType":"InheritanceSpecifier","src":"344:6:95"}],"canonicalName":"MockWBETH","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9883,"linearizedBaseContracts":[9883,5117,1206,2827,2930,2905,3290],"name":"MockWBETH","nameLocation":"315:9:95","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9824,"mutability":"immutable","name":"_decimals","nameLocation":"381:9:95","nodeType":"VariableDeclaration","scope":9883,"src":"357:33:95","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9823,"name":"uint8","nodeType":"ElementaryTypeName","src":"357:5:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"baseFunctions":[5111],"constant":false,"functionSelector":"3ba0b9a9","id":9827,"mutability":"mutable","name":"exchangeRate","nameLocation":"420:12:95","nodeType":"VariableDeclaration","overrides":{"id":9826,"nodeType":"OverrideSpecifier","overrides":[],"src":"411:8:95"},"scope":9883,"src":"396:36:95","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9825,"name":"uint256","nodeType":"ElementaryTypeName","src":"396:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":9846,"nodeType":"Block","src":"544:38:95","statements":[{"expression":{"id":9844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9842,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9824,"src":"554:9:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9843,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"566:9:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"554:21:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":9845,"nodeType":"ExpressionStatement","src":"554:21:95"}]},"id":9847,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9836,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9829,"src":"518:5:95","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9837,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9831,"src":"525:7:95","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9838,"kind":"baseConstructorSpecifier","modifierName":{"id":9835,"name":"ERC20","nameLocations":["512:5:95"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"512:5:95"},"nodeType":"ModifierInvocation","src":"512:21:95"},{"arguments":[],"id":9840,"kind":"baseConstructorSpecifier","modifierName":{"id":9839,"name":"Ownable","nameLocations":["534:7:95"],"nodeType":"IdentifierPath","referencedDeclaration":1206,"src":"534:7:95"},"nodeType":"ModifierInvocation","src":"534:9:95"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9829,"mutability":"mutable","name":"name_","nameLocation":"465:5:95","nodeType":"VariableDeclaration","scope":9847,"src":"451:19:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9828,"name":"string","nodeType":"ElementaryTypeName","src":"451:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9831,"mutability":"mutable","name":"symbol_","nameLocation":"486:7:95","nodeType":"VariableDeclaration","scope":9847,"src":"472:21:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9830,"name":"string","nodeType":"ElementaryTypeName","src":"472:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9833,"mutability":"mutable","name":"decimals_","nameLocation":"501:9:95","nodeType":"VariableDeclaration","scope":9847,"src":"495:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9832,"name":"uint8","nodeType":"ElementaryTypeName","src":"495:5:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"450:61:95"},"returnParameters":{"id":9841,"nodeType":"ParameterList","parameters":[],"src":"544:0:95"},"scope":9883,"src":"439:143:95","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9858,"nodeType":"Block","src":"629:42:95","statements":[{"expression":{"arguments":[{"expression":{"id":9853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"645:3:95","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"649:6:95","memberName":"sender","nodeType":"MemberAccess","src":"645:10:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9855,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9849,"src":"657:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9852,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"639:5:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"639:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9857,"nodeType":"ExpressionStatement","src":"639:25:95"}]},"functionSelector":"57915897","id":9859,"implemented":true,"kind":"function","modifiers":[],"name":"faucet","nameLocation":"597:6:95","nodeType":"FunctionDefinition","parameters":{"id":9850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9849,"mutability":"mutable","name":"amount","nameLocation":"612:6:95","nodeType":"VariableDeclaration","scope":9859,"src":"604:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9848,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"603:16:95"},"returnParameters":{"id":9851,"nodeType":"ParameterList","parameters":[],"src":"629:0:95"},"scope":9883,"src":"588:83:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9870,"nodeType":"Block","src":"735:36:95","statements":[{"expression":{"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9866,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9827,"src":"745:12:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9867,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9861,"src":"760:4:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"745:19:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9869,"nodeType":"ExpressionStatement","src":"745:19:95"}]},"functionSelector":"db068e0e","id":9871,"implemented":true,"kind":"function","modifiers":[{"id":9864,"kind":"modifierInvocation","modifierName":{"id":9863,"name":"onlyOwner","nameLocations":["725:9:95"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"725:9:95"},"nodeType":"ModifierInvocation","src":"725:9:95"}],"name":"setExchangeRate","nameLocation":"686:15:95","nodeType":"FunctionDefinition","parameters":{"id":9862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9861,"mutability":"mutable","name":"rate","nameLocation":"710:4:95","nodeType":"VariableDeclaration","scope":9871,"src":"702:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9860,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:14:95"},"returnParameters":{"id":9865,"nodeType":"ParameterList","parameters":[],"src":"735:0:95"},"scope":9883,"src":"677:94:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2315,5116],"body":{"id":9881,"nodeType":"Block","src":"857:33:95","statements":[{"expression":{"id":9879,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9824,"src":"874:9:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9878,"id":9880,"nodeType":"Return","src":"867:16:95"}]},"functionSelector":"313ce567","id":9882,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"786:8:95","nodeType":"FunctionDefinition","overrides":{"id":9875,"nodeType":"OverrideSpecifier","overrides":[{"id":9873,"name":"ERC20","nameLocations":["826:5:95"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"826:5:95"},{"id":9874,"name":"IWBETH","nameLocations":["833:6:95"],"nodeType":"IdentifierPath","referencedDeclaration":5117,"src":"833:6:95"}],"src":"817:23:95"},"parameters":{"id":9872,"nodeType":"ParameterList","parameters":[],"src":"794:2:95"},"returnParameters":{"id":9878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9882,"src":"850:5:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9876,"name":"uint8","nodeType":"ElementaryTypeName","src":"850:5:95","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"849:7:95"},"scope":9883,"src":"777:113:95","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9884,"src":"306:586:95","usedErrors":[],"usedEvents":[1107,2839,2848]}],"src":"105:788:95"}},"contracts/test/PancakePairHarness.sol":{"id":96,"ast":{"absolutePath":"contracts/test/PancakePairHarness.sol","exportedSymbols":{"Math":[9959],"PancakePairHarness":[10186],"UQ112x112":[10001]},"id":10187,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":9885,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:96"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":9959,"linearizedBaseContracts":[9959],"name":"Math","nameLocation":"127:4:96","nodeType":"ContractDefinition","nodes":[{"body":{"id":9903,"nodeType":"Block","src":"207:34:96","statements":[{"expression":{"id":9901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9894,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9892,"src":"217:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9895,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9887,"src":"221:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9896,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"225:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"221:5:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9899,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"233:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"221:13:96","trueExpression":{"id":9898,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9887,"src":"229:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"217:17:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9902,"nodeType":"ExpressionStatement","src":"217:17:96"}]},"id":9904,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"147:3:96","nodeType":"FunctionDefinition","parameters":{"id":9890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9887,"mutability":"mutable","name":"x","nameLocation":"159:1:96","nodeType":"VariableDeclaration","scope":9904,"src":"151:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9886,"name":"uint256","nodeType":"ElementaryTypeName","src":"151:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9889,"mutability":"mutable","name":"y","nameLocation":"170:1:96","nodeType":"VariableDeclaration","scope":9904,"src":"162:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9888,"name":"uint256","nodeType":"ElementaryTypeName","src":"162:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"150:22:96"},"returnParameters":{"id":9893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9892,"mutability":"mutable","name":"z","nameLocation":"204:1:96","nodeType":"VariableDeclaration","scope":9904,"src":"196:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9891,"name":"uint256","nodeType":"ElementaryTypeName","src":"196:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"195:11:96"},"scope":9959,"src":"138:103:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9957,"nodeType":"Block","src":"415:242:96","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9911,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"429:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"33","id":9912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"433:1:96","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"429:5:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9947,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"613:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"618:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"613:6:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9955,"nodeType":"IfStatement","src":"609:42:96","trueBody":{"id":9954,"nodeType":"Block","src":"621:30:96","statements":[{"expression":{"id":9952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9950,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9909,"src":"635:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":9951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"639:1:96","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"635:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9953,"nodeType":"ExpressionStatement","src":"635:5:96"}]}},"id":9956,"nodeType":"IfStatement","src":"425:226:96","trueBody":{"id":9946,"nodeType":"Block","src":"436:167:96","statements":[{"expression":{"id":9916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9914,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9909,"src":"450:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9915,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"454:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"450:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9917,"nodeType":"ExpressionStatement","src":"450:5:96"},{"assignments":[9919],"declarations":[{"constant":false,"id":9919,"mutability":"mutable","name":"x","nameLocation":"477:1:96","nodeType":"VariableDeclaration","scope":9946,"src":"469:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9918,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9925,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9920,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"481:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485:1:96","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"481:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"489:1:96","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"481:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"469:21:96"},{"body":{"id":9944,"nodeType":"Block","src":"518:75:96","statements":[{"expression":{"id":9931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9929,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9909,"src":"536:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9930,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"540:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"536:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9932,"nodeType":"ExpressionStatement","src":"536:5:96"},{"expression":{"id":9942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9933,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"559:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9934,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"564:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9935,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"568:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"564:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9937,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"572:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"564:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9939,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"563:11:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"577:1:96","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"563:15:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"559:19:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9943,"nodeType":"ExpressionStatement","src":"559:19:96"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9926,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"511:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9927,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9909,"src":"515:1:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"511:5:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9945,"nodeType":"WhileStatement","src":"504:89:96"}]}}]},"id":9958,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"365:4:96","nodeType":"FunctionDefinition","parameters":{"id":9907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9906,"mutability":"mutable","name":"y","nameLocation":"378:1:96","nodeType":"VariableDeclaration","scope":9958,"src":"370:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9905,"name":"uint256","nodeType":"ElementaryTypeName","src":"370:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"369:11:96"},"returnParameters":{"id":9910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9909,"mutability":"mutable","name":"z","nameLocation":"412:1:96","nodeType":"VariableDeclaration","scope":9958,"src":"404:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9908,"name":"uint256","nodeType":"ElementaryTypeName","src":"404:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:11:96"},"scope":9959,"src":"356:301:96","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10187,"src":"119:540:96","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"UQ112x112","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":10001,"linearizedBaseContracts":[10001],"name":"UQ112x112","nameLocation":"722:9:96","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":9964,"mutability":"constant","name":"Q112","nameLocation":"804:4:96","nodeType":"VariableDeclaration","scope":10001,"src":"787:32:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":9960,"name":"uint224","nodeType":"ElementaryTypeName","src":"787:7:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":{"commonType":{"typeIdentifier":"t_rational_5192296858534827628530496329220096_by_1","typeString":"int_const 5192...(26 digits omitted)...0096"},"id":9963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:1:96","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"313132","id":9962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"816:3:96","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"src":"811:8:96","typeDescriptions":{"typeIdentifier":"t_rational_5192296858534827628530496329220096_by_1","typeString":"int_const 5192...(26 digits omitted)...0096"}},"visibility":"internal"},{"body":{"id":9980,"nodeType":"Block","src":"926:57:96","statements":[{"expression":{"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9971,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9969,"src":"936:1:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9974,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9966,"src":"948:1:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":9973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"940:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":9972,"name":"uint224","nodeType":"ElementaryTypeName","src":"940:7:96","typeDescriptions":{}}},"id":9975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"940:10:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9976,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"953:4:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"940:17:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"936:21:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":9979,"nodeType":"ExpressionStatement","src":"936:21:96"}]},"id":9981,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"874:6:96","nodeType":"FunctionDefinition","parameters":{"id":9967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9966,"mutability":"mutable","name":"y","nameLocation":"889:1:96","nodeType":"VariableDeclaration","scope":9981,"src":"881:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":9965,"name":"uint112","nodeType":"ElementaryTypeName","src":"881:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"880:11:96"},"returnParameters":{"id":9970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9969,"mutability":"mutable","name":"z","nameLocation":"923:1:96","nodeType":"VariableDeclaration","scope":9981,"src":"915:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":9968,"name":"uint224","nodeType":"ElementaryTypeName","src":"915:7:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"914:11:96"},"scope":10001,"src":"865:118:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9999,"nodeType":"Block","src":"1122:35:96","statements":[{"expression":{"id":9997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9990,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9988,"src":"1132:1:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":9996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9991,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9983,"src":"1136:1:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":9994,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9985,"src":"1148:1:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":9993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1140:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":9992,"name":"uint224","nodeType":"ElementaryTypeName","src":"1140:7:96","typeDescriptions":{}}},"id":9995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:10:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"1136:14:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"1132:18:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":9998,"nodeType":"ExpressionStatement","src":"1132:18:96"}]},"id":10000,"implemented":true,"kind":"function","modifiers":[],"name":"uqdiv","nameLocation":"1060:5:96","nodeType":"FunctionDefinition","parameters":{"id":9986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9983,"mutability":"mutable","name":"x","nameLocation":"1074:1:96","nodeType":"VariableDeclaration","scope":10000,"src":"1066:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":9982,"name":"uint224","nodeType":"ElementaryTypeName","src":"1066:7:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":9985,"mutability":"mutable","name":"y","nameLocation":"1085:1:96","nodeType":"VariableDeclaration","scope":10000,"src":"1077:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":9984,"name":"uint112","nodeType":"ElementaryTypeName","src":"1077:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1065:22:96"},"returnParameters":{"id":9989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9988,"mutability":"mutable","name":"z","nameLocation":"1119:1:96","nodeType":"VariableDeclaration","scope":10000,"src":"1111:9:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":9987,"name":"uint224","nodeType":"ElementaryTypeName","src":"1111:7:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"1110:11:96"},"scope":10001,"src":"1051:106:96","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10187,"src":"714:445:96","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"PancakePairHarness","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10186,"linearizedBaseContracts":[10186],"name":"PancakePairHarness","nameLocation":"1170:18:96","nodeType":"ContractDefinition","nodes":[{"global":false,"id":10004,"libraryName":{"id":10002,"name":"UQ112x112","nameLocations":["1201:9:96"],"nodeType":"IdentifierPath","referencedDeclaration":10001,"src":"1201:9:96"},"nodeType":"UsingForDirective","src":"1195:28:96","typeName":{"id":10003,"name":"uint224","nodeType":"ElementaryTypeName","src":"1215:7:96","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}},{"constant":false,"functionSelector":"0dfe1681","id":10006,"mutability":"mutable","name":"token0","nameLocation":"1244:6:96","nodeType":"VariableDeclaration","scope":10186,"src":"1229:21:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10005,"name":"address","nodeType":"ElementaryTypeName","src":"1229:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"d21220a7","id":10008,"mutability":"mutable","name":"token1","nameLocation":"1271:6:96","nodeType":"VariableDeclaration","scope":10186,"src":"1256:21:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10007,"name":"address","nodeType":"ElementaryTypeName","src":"1256:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":10010,"mutability":"mutable","name":"reserve0","nameLocation":"1300:8:96","nodeType":"VariableDeclaration","scope":10186,"src":"1284:24:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10009,"name":"uint112","nodeType":"ElementaryTypeName","src":"1284:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"private"},{"constant":false,"id":10012,"mutability":"mutable","name":"reserve1","nameLocation":"1386:8:96","nodeType":"VariableDeclaration","scope":10186,"src":"1370:24:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10011,"name":"uint112","nodeType":"ElementaryTypeName","src":"1370:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"private"},{"constant":false,"id":10014,"mutability":"mutable","name":"blockTimestampLast","nameLocation":"1471:18:96","nodeType":"VariableDeclaration","scope":10186,"src":"1456:33:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10013,"name":"uint32","nodeType":"ElementaryTypeName","src":"1456:6:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"constant":false,"functionSelector":"5909c0d5","id":10016,"mutability":"mutable","name":"price0CumulativeLast","nameLocation":"1567:20:96","nodeType":"VariableDeclaration","scope":10186,"src":"1552:35:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10015,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"5a3d5493","id":10018,"mutability":"mutable","name":"price1CumulativeLast","nameLocation":"1608:20:96","nodeType":"VariableDeclaration","scope":10186,"src":"1593:35:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"7464fc3d","id":10020,"mutability":"mutable","name":"kLast","nameLocation":"1649:5:96","nodeType":"VariableDeclaration","scope":10186,"src":"1634:20:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10019,"name":"uint256","nodeType":"ElementaryTypeName","src":"1634:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":10035,"nodeType":"Block","src":"1860:59:96","statements":[{"expression":{"id":10029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10027,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10006,"src":"1870:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10028,"name":"_token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10022,"src":"1879:7:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1870:16:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10030,"nodeType":"ExpressionStatement","src":"1870:16:96"},{"expression":{"id":10033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10031,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"1896:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10032,"name":"_token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10024,"src":"1905:7:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1896:16:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10034,"nodeType":"ExpressionStatement","src":"1896:16:96"}]},"functionSelector":"485cc955","id":10036,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1806:10:96","nodeType":"FunctionDefinition","parameters":{"id":10025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10022,"mutability":"mutable","name":"_token0","nameLocation":"1825:7:96","nodeType":"VariableDeclaration","scope":10036,"src":"1817:15:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10021,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10024,"mutability":"mutable","name":"_token1","nameLocation":"1842:7:96","nodeType":"VariableDeclaration","scope":10036,"src":"1834:15:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10023,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1816:34:96"},"returnParameters":{"id":10026,"nodeType":"ParameterList","parameters":[],"src":"1860:0:96"},"scope":10186,"src":"1797:122:96","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10146,"nodeType":"Block","src":"2100:789:96","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10048,"name":"balance0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10038,"src":"2118:8:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":10051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2135:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10050,"name":"uint112","nodeType":"ElementaryTypeName","src":"2135:7:96","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":10049,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2130:4:96","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2130:13:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":10053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2144:3:96","memberName":"max","nodeType":"MemberAccess","src":"2130:17:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2118:29:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10055,"name":"balance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10040,"src":"2151:8:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":10058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2168:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10057,"name":"uint112","nodeType":"ElementaryTypeName","src":"2168:7:96","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":10056,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2163:4:96","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:13:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":10060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2177:3:96","memberName":"max","nodeType":"MemberAccess","src":"2163:17:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2151:29:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2118:62:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50616e63616b6556323a204f564552464c4f57","id":10063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:21:96","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c38718d0c6470d154463a6b081335b725692175cc621cf72fca8b0d9b990df","typeString":"literal_string \"PancakeV2: OVERFLOW\""},"value":"PancakeV2: OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c38718d0c6470d154463a6b081335b725692175cc621cf72fca8b0d9b990df","typeString":"literal_string \"PancakeV2: OVERFLOW\""}],"id":10047,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2110:7:96","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2110:94:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10065,"nodeType":"ExpressionStatement","src":"2110:94:96"},{"assignments":[10067],"declarations":[{"constant":false,"id":10067,"mutability":"mutable","name":"blockTimestamp","nameLocation":"2221:14:96","nodeType":"VariableDeclaration","scope":10146,"src":"2214:21:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10066,"name":"uint32","nodeType":"ElementaryTypeName","src":"2214:6:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":10077,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10070,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2245:5:96","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2251:9:96","memberName":"timestamp","nodeType":"MemberAccess","src":"2245:15:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":10074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2263:1:96","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:2:96","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2263:7:96","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"2245:25:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2238:6:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":10068,"name":"uint32","nodeType":"ElementaryTypeName","src":"2238:6:96","typeDescriptions":{}}},"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2238:33:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2214:57:96"},{"id":10127,"nodeType":"UncheckedBlock","src":"2281:481:96","statements":[{"assignments":[10079],"declarations":[{"constant":false,"id":10079,"mutability":"mutable","name":"timeElapsed","nameLocation":"2312:11:96","nodeType":"VariableDeclaration","scope":10127,"src":"2305:18:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10078,"name":"uint32","nodeType":"ElementaryTypeName","src":"2305:6:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":10083,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":10082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10080,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10067,"src":"2326:14:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10081,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10014,"src":"2343:18:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2326:35:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2305:56:96"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":10086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10084,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10079,"src":"2402:11:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2416:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2402:15:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":10089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10087,"name":"_reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10042,"src":"2421:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2434:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2421:14:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2402:33:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":10093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10091,"name":"_reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"2439:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2452:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2439:14:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2402:51:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10126,"nodeType":"IfStatement","src":"2398:354:96","trueBody":{"id":10125,"nodeType":"Block","src":"2455:297:96","statements":[{"expression":{"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10095,"name":"price0CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10016,"src":"2537:20:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":10103,"name":"_reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10042,"src":"2603:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"arguments":[{"id":10100,"name":"_reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"2586:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":10098,"name":"UQ112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"2569:9:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UQ112x112_$10001_$","typeString":"type(library UQ112x112)"}},"id":10099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2579:6:96","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":9981,"src":"2569:16:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$returns$_t_uint224_$","typeString":"function (uint112) pure returns (uint224)"}},"id":10101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2569:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2597:5:96","memberName":"uqdiv","nodeType":"MemberAccess","referencedDeclaration":10000,"src":"2569:33:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$attached_to$_t_uint224_$","typeString":"function (uint224,uint112) pure returns (uint224)"}},"id":10104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2569:44:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":10097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2561:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2561:7:96","typeDescriptions":{}}},"id":10105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2561:53:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10106,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10079,"src":"2617:11:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2561:67:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2537:91:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10109,"nodeType":"ExpressionStatement","src":"2537:91:96"},{"expression":{"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10110,"name":"price1CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"2646:20:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":10118,"name":"_reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"2712:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"arguments":[{"id":10115,"name":"_reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10042,"src":"2695:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":10113,"name":"UQ112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"2678:9:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UQ112x112_$10001_$","typeString":"type(library UQ112x112)"}},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2688:6:96","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":9981,"src":"2678:16:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint112_$returns$_t_uint224_$","typeString":"function (uint112) pure returns (uint224)"}},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2678:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":10117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2706:5:96","memberName":"uqdiv","nodeType":"MemberAccess","referencedDeclaration":10000,"src":"2678:33:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$attached_to$_t_uint224_$","typeString":"function (uint224,uint112) pure returns (uint224)"}},"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2678:44:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":10112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2670:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10111,"name":"uint256","nodeType":"ElementaryTypeName","src":"2670:7:96","typeDescriptions":{}}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2670:53:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10121,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10079,"src":"2726:11:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2670:67:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2646:91:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10124,"nodeType":"ExpressionStatement","src":"2646:91:96"}]}}]},{"expression":{"id":10133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10128,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"2771:8:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10131,"name":"balance0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10038,"src":"2790:8:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2782:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10129,"name":"uint112","nodeType":"ElementaryTypeName","src":"2782:7:96","typeDescriptions":{}}},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2782:17:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2771:28:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"id":10134,"nodeType":"ExpressionStatement","src":"2771:28:96"},{"expression":{"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10135,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"2809:8:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10138,"name":"balance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10040,"src":"2828:8:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2820:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10136,"name":"uint112","nodeType":"ElementaryTypeName","src":"2820:7:96","typeDescriptions":{}}},"id":10139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2820:17:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2809:28:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"id":10141,"nodeType":"ExpressionStatement","src":"2809:28:96"},{"expression":{"id":10144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10142,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10014,"src":"2847:18:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10143,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10067,"src":"2868:14:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2847:35:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":10145,"nodeType":"ExpressionStatement","src":"2847:35:96"}]},"functionSelector":"d9fc83c6","id":10147,"implemented":true,"kind":"function","modifiers":[],"name":"update","nameLocation":"2010:6:96","nodeType":"FunctionDefinition","parameters":{"id":10045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10038,"mutability":"mutable","name":"balance0","nameLocation":"2025:8:96","nodeType":"VariableDeclaration","scope":10147,"src":"2017:16:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10037,"name":"uint256","nodeType":"ElementaryTypeName","src":"2017:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10040,"mutability":"mutable","name":"balance1","nameLocation":"2043:8:96","nodeType":"VariableDeclaration","scope":10147,"src":"2035:16:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10039,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10042,"mutability":"mutable","name":"_reserve0","nameLocation":"2061:9:96","nodeType":"VariableDeclaration","scope":10147,"src":"2053:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10041,"name":"uint112","nodeType":"ElementaryTypeName","src":"2053:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10044,"mutability":"mutable","name":"_reserve1","nameLocation":"2080:9:96","nodeType":"VariableDeclaration","scope":10147,"src":"2072:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10043,"name":"uint112","nodeType":"ElementaryTypeName","src":"2072:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"2016:74:96"},"returnParameters":{"id":10046,"nodeType":"ParameterList","parameters":[],"src":"2100:0:96"},"scope":10186,"src":"2001:888:96","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10162,"nodeType":"Block","src":"2959:57:96","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10154,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2983:5:96","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2989:9:96","memberName":"timestamp","nodeType":"MemberAccess","src":"2983:15:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":10158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3001:1:96","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3006:2:96","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3001:7:96","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"2983:25:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2976:6:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":10152,"name":"uint32","nodeType":"ElementaryTypeName","src":"2976:6:96","typeDescriptions":{}}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2976:33:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":10151,"id":10161,"nodeType":"Return","src":"2969:40:96"}]},"functionSelector":"abf81272","id":10163,"implemented":true,"kind":"function","modifiers":[],"name":"currentBlockTimestamp","nameLocation":"2904:21:96","nodeType":"FunctionDefinition","parameters":{"id":10148,"nodeType":"ParameterList","parameters":[],"src":"2925:2:96"},"returnParameters":{"id":10151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10163,"src":"2951:6:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10149,"name":"uint32","nodeType":"ElementaryTypeName","src":"2951:6:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2950:8:96"},"scope":10186,"src":"2895:121:96","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10184,"nodeType":"Block","src":"3132:117:96","statements":[{"expression":{"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10172,"name":"_reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"3142:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10173,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"3154:8:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3142:20:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"id":10175,"nodeType":"ExpressionStatement","src":"3142:20:96"},{"expression":{"id":10178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10176,"name":"_reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10168,"src":"3172:9:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10177,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"3184:8:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3172:20:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"id":10179,"nodeType":"ExpressionStatement","src":"3172:20:96"},{"expression":{"id":10182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10180,"name":"_blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"3202:19:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10181,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10014,"src":"3224:18:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3202:40:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":10183,"nodeType":"ExpressionStatement","src":"3202:40:96"}]},"functionSelector":"0902f1ac","id":10185,"implemented":true,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"3031:11:96","nodeType":"FunctionDefinition","parameters":{"id":10164,"nodeType":"ParameterList","parameters":[],"src":"3042:2:96"},"returnParameters":{"id":10171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10166,"mutability":"mutable","name":"_reserve0","nameLocation":"3074:9:96","nodeType":"VariableDeclaration","scope":10185,"src":"3066:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10165,"name":"uint112","nodeType":"ElementaryTypeName","src":"3066:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10168,"mutability":"mutable","name":"_reserve1","nameLocation":"3093:9:96","nodeType":"VariableDeclaration","scope":10185,"src":"3085:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10167,"name":"uint112","nodeType":"ElementaryTypeName","src":"3085:7:96","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10170,"mutability":"mutable","name":"_blockTimestampLast","nameLocation":"3111:19:96","nodeType":"VariableDeclaration","scope":10185,"src":"3104:26:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10169,"name":"uint32","nodeType":"ElementaryTypeName","src":"3104:6:96","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3065:66:96"},"scope":10186,"src":"3022:227:96","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":10187,"src":"1161:2090:96","usedErrors":[],"usedEvents":[]}],"src":"41:3211:96"}},"contracts/test/VBEP20Harness.sol":{"id":97,"ast":{"absolutePath":"contracts/test/VBEP20Harness.sol","exportedSymbols":{"BEP20Harness":[9054],"Context":[3290],"ERC20":[2827],"IERC20":[2905],"IERC20Metadata":[2930],"VBEP20Harness":[10216]},"id":10217,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":10188,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:97"},{"absolutePath":"contracts/test/BEP20Harness.sol","file":"./BEP20Harness.sol","id":10189,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10217,"sourceUnit":9055,"src":"66:28:97","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10190,"name":"BEP20Harness","nameLocations":["122:12:97"],"nodeType":"IdentifierPath","referencedDeclaration":9054,"src":"122:12:97"},"id":10191,"nodeType":"InheritanceSpecifier","src":"122:12:97"}],"canonicalName":"VBEP20Harness","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10216,"linearizedBaseContracts":[10216,9054,2827,2930,2905,3290],"name":"VBEP20Harness","nameLocation":"105:13:97","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":10192,"nodeType":"StructuredDocumentation","src":"141:59:97","text":" @notice Underlying asset for this VToken"},"functionSelector":"6f307dc3","id":10194,"mutability":"mutable","name":"underlying","nameLocation":"220:10:97","nodeType":"VariableDeclaration","scope":10216,"src":"205:25:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10193,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":10214,"nodeType":"Block","src":"407:41:97","statements":[{"expression":{"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10210,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"417:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10211,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10202,"src":"430:11:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"417:24:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10213,"nodeType":"ExpressionStatement","src":"417:24:97"}]},"id":10215,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10205,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"381:5:97","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10206,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"388:7:97","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10207,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10200,"src":"397:8:97","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10208,"kind":"baseConstructorSpecifier","modifierName":{"id":10204,"name":"BEP20Harness","nameLocations":["368:12:97"],"nodeType":"IdentifierPath","referencedDeclaration":9054,"src":"368:12:97"},"nodeType":"ModifierInvocation","src":"368:38:97"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10196,"mutability":"mutable","name":"name_","nameLocation":"272:5:97","nodeType":"VariableDeclaration","scope":10215,"src":"258:19:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10195,"name":"string","nodeType":"ElementaryTypeName","src":"258:6:97","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10198,"mutability":"mutable","name":"symbol_","nameLocation":"301:7:97","nodeType":"VariableDeclaration","scope":10215,"src":"287:21:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10197,"name":"string","nodeType":"ElementaryTypeName","src":"287:6:97","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10200,"mutability":"mutable","name":"decimals","nameLocation":"324:8:97","nodeType":"VariableDeclaration","scope":10215,"src":"318:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10199,"name":"uint8","nodeType":"ElementaryTypeName","src":"318:5:97","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10202,"mutability":"mutable","name":"underlying_","nameLocation":"350:11:97","nodeType":"VariableDeclaration","scope":10215,"src":"342:19:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10201,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"248:119:97"},"returnParameters":{"id":10209,"nodeType":"ParameterList","parameters":[],"src":"407:0:97"},"scope":10216,"src":"237:211:97","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":10217,"src":"96:354:97","usedErrors":[],"usedEvents":[2839,2848]}],"src":"41:410:97"}},"contracts/test/oracles/MockCorrelatedTokenOracle.sol":{"id":98,"ast":{"absolutePath":"contracts/test/oracles/MockCorrelatedTokenOracle.sol","exportedSymbols":{"CorrelatedTokenOracle":[8611],"MockCorrelatedTokenOracle":[10277]},"id":10278,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":10218,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:98"},{"absolutePath":"contracts/oracles/common/CorrelatedTokenOracle.sol","file":"../../oracles/common/CorrelatedTokenOracle.sol","id":10220,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10278,"sourceUnit":8612,"src":"66:87:98","symbolAliases":[{"foreign":{"id":10219,"name":"CorrelatedTokenOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8611,"src":"75:21:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10221,"name":"CorrelatedTokenOracle","nameLocations":["193:21:98"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"193:21:98"},"id":10222,"nodeType":"InheritanceSpecifier","src":"193:21:98"}],"canonicalName":"MockCorrelatedTokenOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10277,"linearizedBaseContracts":[10277,8611,4968,5140],"name":"MockCorrelatedTokenOracle","nameLocation":"164:25:98","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"99fd8939","id":10224,"mutability":"mutable","name":"mockUnderlyingAmount","nameLocation":"236:20:98","nodeType":"VariableDeclaration","scope":10277,"src":"221:35:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10223,"name":"uint256","nodeType":"ElementaryTypeName","src":"221:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":10256,"nodeType":"Block","src":"937:2:98","statements":[]},"id":10257,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10245,"name":"correlatedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10226,"src":"648:15:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10246,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10228,"src":"677:15:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10247,"name":"resilientOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"706:15:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10248,"name":"annualGrowthRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10232,"src":"735:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10249,"name":"snapshotInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"765:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10250,"name":"initialSnapshotMaxExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10236,"src":"795:30:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10251,"name":"initialSnapshotTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10238,"src":"839:24:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10252,"name":"accessControlManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10240,"src":"877:20:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10253,"name":"snapshotGap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10242,"src":"911:11:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10254,"kind":"baseConstructorSpecifier","modifierName":{"id":10244,"name":"CorrelatedTokenOracle","nameLocations":["613:21:98"],"nodeType":"IdentifierPath","referencedDeclaration":8611,"src":"613:21:98"},"nodeType":"ModifierInvocation","src":"613:319:98"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10226,"mutability":"mutable","name":"correlatedToken","nameLocation":"292:15:98","nodeType":"VariableDeclaration","scope":10257,"src":"284:23:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10225,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10228,"mutability":"mutable","name":"underlyingToken","nameLocation":"325:15:98","nodeType":"VariableDeclaration","scope":10257,"src":"317:23:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10227,"name":"address","nodeType":"ElementaryTypeName","src":"317:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10230,"mutability":"mutable","name":"resilientOracle","nameLocation":"358:15:98","nodeType":"VariableDeclaration","scope":10257,"src":"350:23:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10229,"name":"address","nodeType":"ElementaryTypeName","src":"350:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10232,"mutability":"mutable","name":"annualGrowthRate","nameLocation":"391:16:98","nodeType":"VariableDeclaration","scope":10257,"src":"383:24:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10231,"name":"uint256","nodeType":"ElementaryTypeName","src":"383:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10234,"mutability":"mutable","name":"snapshotInterval","nameLocation":"425:16:98","nodeType":"VariableDeclaration","scope":10257,"src":"417:24:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10233,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10236,"mutability":"mutable","name":"initialSnapshotMaxExchangeRate","nameLocation":"459:30:98","nodeType":"VariableDeclaration","scope":10257,"src":"451:38:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10235,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10238,"mutability":"mutable","name":"initialSnapshotTimestamp","nameLocation":"507:24:98","nodeType":"VariableDeclaration","scope":10257,"src":"499:32:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10237,"name":"uint256","nodeType":"ElementaryTypeName","src":"499:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10240,"mutability":"mutable","name":"accessControlManager","nameLocation":"549:20:98","nodeType":"VariableDeclaration","scope":10257,"src":"541:28:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10239,"name":"address","nodeType":"ElementaryTypeName","src":"541:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10242,"mutability":"mutable","name":"snapshotGap","nameLocation":"587:11:98","nodeType":"VariableDeclaration","scope":10257,"src":"579:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10241,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"274:330:98"},"returnParameters":{"id":10255,"nodeType":"ParameterList","parameters":[],"src":"937:0:98"},"scope":10277,"src":"263:676:98","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10266,"nodeType":"Block","src":"1003:46:98","statements":[{"expression":{"id":10264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10262,"name":"mockUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"1013:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10263,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10259,"src":"1036:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1013:29:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10265,"nodeType":"ExpressionStatement","src":"1013:29:98"}]},"functionSelector":"df67747a","id":10267,"implemented":true,"kind":"function","modifiers":[],"name":"setMockUnderlyingAmount","nameLocation":"954:23:98","nodeType":"FunctionDefinition","parameters":{"id":10260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10259,"mutability":"mutable","name":"amount","nameLocation":"986:6:98","nodeType":"VariableDeclaration","scope":10267,"src":"978:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10258,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"977:16:98"},"returnParameters":{"id":10261,"nodeType":"ParameterList","parameters":[],"src":"1003:0:98"},"scope":10277,"src":"945:104:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[8541],"body":{"id":10275,"nodeType":"Block","src":"1125:44:98","statements":[{"expression":{"id":10273,"name":"mockUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"1142:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10272,"id":10274,"nodeType":"Return","src":"1135:27:98"}]},"functionSelector":"abb85613","id":10276,"implemented":true,"kind":"function","modifiers":[],"name":"getUnderlyingAmount","nameLocation":"1064:19:98","nodeType":"FunctionDefinition","overrides":{"id":10269,"nodeType":"OverrideSpecifier","overrides":[],"src":"1098:8:98"},"parameters":{"id":10268,"nodeType":"ParameterList","parameters":[],"src":"1083:2:98"},"returnParameters":{"id":10272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10276,"src":"1116:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10270,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1115:9:98"},"scope":10277,"src":"1055:114:98","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":10278,"src":"155:1016:98","usedErrors":[3618,8116,8119,8122,8125,8134],"usedEvents":[8095,8106,8113]}],"src":"41:1131:98"}},"contracts/test/oracles/MockERC20.sol":{"id":99,"ast":{"absolutePath":"contracts/test/oracles/MockERC20.sol","exportedSymbols":{"Context":[3290],"ERC20":[2827],"IERC20":[2905],"IERC20Metadata":[2930],"MockERC20":[10310]},"id":10311,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":10279,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:99"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":10280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10311,"sourceUnit":2828,"src":"66:55:99","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10281,"name":"ERC20","nameLocations":["145:5:99"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"145:5:99"},"id":10282,"nodeType":"InheritanceSpecifier","src":"145:5:99"}],"canonicalName":"MockERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10310,"linearizedBaseContracts":[10310,2827,2930,2905,3290],"name":"MockERC20","nameLocation":"132:9:99","nodeType":"ContractDefinition","nodes":[{"body":{"id":10308,"nodeType":"Block","src":"247:68:99","statements":[{"expression":{"arguments":[{"expression":{"id":10296,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"263:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"267:6:99","memberName":"sender","nodeType":"MemberAccess","src":"263:10:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030303030","id":10298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"275:6:99","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"284:2:99","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"id":10302,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"298:8:99","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":10301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"290:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10300,"name":"uint256","nodeType":"ElementaryTypeName","src":"290:7:99","typeDescriptions":{}}},"id":10303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"290:17:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"284:23:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"275:32:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10295,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"257:5:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"257:51:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10307,"nodeType":"ExpressionStatement","src":"257:51:99"}]},"id":10309,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10291,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"233:4:99","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10292,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10286,"src":"239:6:99","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":10293,"kind":"baseConstructorSpecifier","modifierName":{"id":10290,"name":"ERC20","nameLocations":["227:5:99"],"nodeType":"IdentifierPath","referencedDeclaration":2827,"src":"227:5:99"},"nodeType":"ModifierInvocation","src":"227:19:99"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10284,"mutability":"mutable","name":"name","nameLocation":"183:4:99","nodeType":"VariableDeclaration","scope":10309,"src":"169:18:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10283,"name":"string","nodeType":"ElementaryTypeName","src":"169:6:99","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10286,"mutability":"mutable","name":"symbol","nameLocation":"203:6:99","nodeType":"VariableDeclaration","scope":10309,"src":"189:20:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10285,"name":"string","nodeType":"ElementaryTypeName","src":"189:6:99","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10288,"mutability":"mutable","name":"decimals","nameLocation":"217:8:99","nodeType":"VariableDeclaration","scope":10309,"src":"211:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10287,"name":"uint8","nodeType":"ElementaryTypeName","src":"211:5:99","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"168:58:99"},"returnParameters":{"id":10294,"nodeType":"ParameterList","parameters":[],"src":"247:0:99"},"scope":10310,"src":"157:158:99","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":10311,"src":"123:194:99","usedErrors":[],"usedEvents":[2839,2848]}],"src":"41:277:99"}},"contracts/test/oracles/MockResilientOracle.sol":{"id":100,"ast":{"absolutePath":"contracts/test/oracles/MockResilientOracle.sol","exportedSymbols":{"BoundValidatorInterface":[5172],"MockOracle":[10346],"OracleInterface":[5140],"ResilientOracleInterface":[5160]},"id":10347,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":10312,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"41:23:100"},{"absolutePath":"contracts/interfaces/OracleInterface.sol","file":"../../interfaces/OracleInterface.sol","id":10313,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10347,"sourceUnit":5173,"src":"66:46:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10314,"name":"OracleInterface","nameLocations":["137:15:100"],"nodeType":"IdentifierPath","referencedDeclaration":5140,"src":"137:15:100"},"id":10315,"nodeType":"InheritanceSpecifier","src":"137:15:100"}],"canonicalName":"MockOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10346,"linearizedBaseContracts":[10346,5140],"name":"MockOracle","nameLocation":"123:10:100","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"cfed246b","id":10319,"mutability":"mutable","name":"prices","nameLocation":"194:6:100","nodeType":"VariableDeclaration","scope":10346,"src":"159:41:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10318,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10316,"name":"address","nodeType":"ElementaryTypeName","src":"167:7:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"159:27:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10317,"name":"uint256","nodeType":"ElementaryTypeName","src":"178:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[5139],"body":{"id":10330,"nodeType":"Block","src":"272:37:100","statements":[{"expression":{"baseExpression":{"id":10326,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"289:6:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10328,"indexExpression":{"id":10327,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"296:5:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"289:13:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10325,"id":10329,"nodeType":"Return","src":"282:20:100"}]},"functionSelector":"41976e09","id":10331,"implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"216:8:100","nodeType":"FunctionDefinition","parameters":{"id":10322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10321,"mutability":"mutable","name":"asset","nameLocation":"233:5:100","nodeType":"VariableDeclaration","scope":10331,"src":"225:13:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10320,"name":"address","nodeType":"ElementaryTypeName","src":"225:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"224:15:100"},"returnParameters":{"id":10325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10331,"src":"263:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10323,"name":"uint256","nodeType":"ElementaryTypeName","src":"263:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"262:9:100"},"scope":10346,"src":"207:102:100","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10344,"nodeType":"Block","src":"371:39:100","statements":[{"expression":{"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10338,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"381:6:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10340,"indexExpression":{"id":10339,"name":"vToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"388:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"381:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10341,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"398:5:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"381:22:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10343,"nodeType":"ExpressionStatement","src":"381:22:100"}]},"functionSelector":"00e4768b","id":10345,"implemented":true,"kind":"function","modifiers":[],"name":"setPrice","nameLocation":"324:8:100","nodeType":"FunctionDefinition","parameters":{"id":10336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10333,"mutability":"mutable","name":"vToken","nameLocation":"341:6:100","nodeType":"VariableDeclaration","scope":10345,"src":"333:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10332,"name":"address","nodeType":"ElementaryTypeName","src":"333:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10335,"mutability":"mutable","name":"price","nameLocation":"357:5:100","nodeType":"VariableDeclaration","scope":10345,"src":"349:13:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10334,"name":"uint256","nodeType":"ElementaryTypeName","src":"349:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"332:31:100"},"returnParameters":{"id":10337,"nodeType":"ParameterList","parameters":[],"src":"371:0:100"},"scope":10346,"src":"315:95:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":10347,"src":"114:298:100","usedErrors":[],"usedEvents":[]}],"src":"41:372:100"}},"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol":{"id":101,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol","exportedSymbols":{"Context":[11521],"Ownable":[10452]},"id":10453,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10348,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:101"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol","file":"../utils/Context.sol","id":10349,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10453,"sourceUnit":11522,"src":"112:30:101","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10351,"name":"Context","nameLocations":["668:7:101"],"nodeType":"IdentifierPath","referencedDeclaration":11521,"src":"668:7:101"},"id":10352,"nodeType":"InheritanceSpecifier","src":"668:7:101"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10350,"nodeType":"StructuredDocumentation","src":"144:494:101","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":10452,"linearizedBaseContracts":[10452,11521],"name":"Ownable","nameLocation":"657:7:101","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10354,"mutability":"mutable","name":"_owner","nameLocation":"698:6:101","nodeType":"VariableDeclaration","scope":10452,"src":"682:22:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10353,"name":"address","nodeType":"ElementaryTypeName","src":"682:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":10360,"name":"OwnershipTransferred","nameLocation":"717:20:101","nodeType":"EventDefinition","parameters":{"id":10359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10356,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"754:13:101","nodeType":"VariableDeclaration","scope":10360,"src":"738:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10355,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10358,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"785:8:101","nodeType":"VariableDeclaration","scope":10360,"src":"769:24:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10357,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:57:101"},"src":"711:84:101"},{"body":{"id":10370,"nodeType":"Block","src":"932:49:101","statements":[{"expression":{"arguments":[{"id":10367,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10363,"src":"961:12:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10366,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"942:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"942:32:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10369,"nodeType":"ExpressionStatement","src":"942:32:101"}]},"documentation":{"id":10361,"nodeType":"StructuredDocumentation","src":"801:91:101","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":10371,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10363,"mutability":"mutable","name":"initialOwner","nameLocation":"918:12:101","nodeType":"VariableDeclaration","scope":10371,"src":"910:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10362,"name":"address","nodeType":"ElementaryTypeName","src":"910:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"909:22:101"},"returnParameters":{"id":10365,"nodeType":"ParameterList","parameters":[],"src":"932:0:101"},"scope":10452,"src":"897:84:101","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10379,"nodeType":"Block","src":"1112:30:101","statements":[{"expression":{"id":10377,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10354,"src":"1129:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10376,"id":10378,"nodeType":"Return","src":"1122:13:101"}]},"documentation":{"id":10372,"nodeType":"StructuredDocumentation","src":"987:65:101","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":10380,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1066:5:101","nodeType":"FunctionDefinition","parameters":{"id":10373,"nodeType":"ParameterList","parameters":[],"src":"1071:2:101"},"returnParameters":{"id":10376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10380,"src":"1103:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10374,"name":"address","nodeType":"ElementaryTypeName","src":"1103:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1102:9:101"},"scope":10452,"src":"1057:85:101","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":10393,"nodeType":"Block","src":"1251:96:101","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"1269:5:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1269:7:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10386,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"1280:10:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1280:12:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1269:23:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":10389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1294:34:101","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":10383,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1261:7:101","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1261:68:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10391,"nodeType":"ExpressionStatement","src":"1261:68:101"},{"id":10392,"nodeType":"PlaceholderStatement","src":"1339:1:101"}]},"documentation":{"id":10381,"nodeType":"StructuredDocumentation","src":"1148:77:101","text":" @dev Throws if called by any account other than the owner."},"id":10394,"name":"onlyOwner","nameLocation":"1239:9:101","nodeType":"ModifierDefinition","parameters":{"id":10382,"nodeType":"ParameterList","parameters":[],"src":"1248:2:101"},"src":"1230:117:101","virtual":false,"visibility":"internal"},{"body":{"id":10407,"nodeType":"Block","src":"1743:47:101","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":10403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1780:1:101","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":10402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10401,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:101","typeDescriptions":{}}},"id":10404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:10:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10400,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"1753:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1753:30:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10406,"nodeType":"ExpressionStatement","src":"1753:30:101"}]},"documentation":{"id":10395,"nodeType":"StructuredDocumentation","src":"1353:331:101","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":10408,"implemented":true,"kind":"function","modifiers":[{"id":10398,"kind":"modifierInvocation","modifierName":{"id":10397,"name":"onlyOwner","nameLocations":["1733:9:101"],"nodeType":"IdentifierPath","referencedDeclaration":10394,"src":"1733:9:101"},"nodeType":"ModifierInvocation","src":"1733:9:101"}],"name":"renounceOwnership","nameLocation":"1698:17:101","nodeType":"FunctionDefinition","parameters":{"id":10396,"nodeType":"ParameterList","parameters":[],"src":"1715:2:101"},"returnParameters":{"id":10399,"nodeType":"ParameterList","parameters":[],"src":"1743:0:101"},"scope":10452,"src":"1689:101:101","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":10430,"nodeType":"Block","src":"2009:128:101","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10417,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10411,"src":"2027:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2047:1:101","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":10419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2039:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10418,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:101","typeDescriptions":{}}},"id":10421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2039:10:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2027:22:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":10423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2051:40:101","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":10416,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2019:7:101","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2019:73:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10425,"nodeType":"ExpressionStatement","src":"2019:73:101"},{"expression":{"arguments":[{"id":10427,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10411,"src":"2121:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10426,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"2102:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2102:28:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10429,"nodeType":"ExpressionStatement","src":"2102:28:101"}]},"documentation":{"id":10409,"nodeType":"StructuredDocumentation","src":"1796:138:101","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":10431,"implemented":true,"kind":"function","modifiers":[{"id":10414,"kind":"modifierInvocation","modifierName":{"id":10413,"name":"onlyOwner","nameLocations":["1999:9:101"],"nodeType":"IdentifierPath","referencedDeclaration":10394,"src":"1999:9:101"},"nodeType":"ModifierInvocation","src":"1999:9:101"}],"name":"transferOwnership","nameLocation":"1948:17:101","nodeType":"FunctionDefinition","parameters":{"id":10412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10411,"mutability":"mutable","name":"newOwner","nameLocation":"1974:8:101","nodeType":"VariableDeclaration","scope":10431,"src":"1966:16:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10410,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1965:18:101"},"returnParameters":{"id":10415,"nodeType":"ParameterList","parameters":[],"src":"2009:0:101"},"scope":10452,"src":"1939:198:101","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":10450,"nodeType":"Block","src":"2354:124:101","statements":[{"assignments":[10438],"declarations":[{"constant":false,"id":10438,"mutability":"mutable","name":"oldOwner","nameLocation":"2372:8:101","nodeType":"VariableDeclaration","scope":10450,"src":"2364:16:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10437,"name":"address","nodeType":"ElementaryTypeName","src":"2364:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10440,"initialValue":{"id":10439,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10354,"src":"2383:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2364:25:101"},{"expression":{"id":10443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10441,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10354,"src":"2399:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10442,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10434,"src":"2408:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2399:17:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10444,"nodeType":"ExpressionStatement","src":"2399:17:101"},{"eventCall":{"arguments":[{"id":10446,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10438,"src":"2452:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10447,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10434,"src":"2462:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10445,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10360,"src":"2431:20:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2431:40:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10449,"nodeType":"EmitStatement","src":"2426:45:101"}]},"documentation":{"id":10432,"nodeType":"StructuredDocumentation","src":"2143:143:101","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":10451,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2300:18:101","nodeType":"FunctionDefinition","parameters":{"id":10435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10434,"mutability":"mutable","name":"newOwner","nameLocation":"2327:8:101","nodeType":"VariableDeclaration","scope":10451,"src":"2319:16:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10433,"name":"address","nodeType":"ElementaryTypeName","src":"2319:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2318:18:101"},"returnParameters":{"id":10436,"nodeType":"ParameterList","parameters":[],"src":"2354:0:101"},"scope":10452,"src":"2291:187:101","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":10453,"src":"639:1841:101","usedErrors":[],"usedEvents":[10360]}],"src":"87:2394:101"}},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"id":102,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[10462]},"id":10463,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10454,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:102"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":10455,"nodeType":"StructuredDocumentation","src":"143:203:102","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":10462,"linearizedBaseContracts":[10462],"name":"IERC1822Proxiable","nameLocation":"357:17:102","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10456,"nodeType":"StructuredDocumentation","src":"381:438:102","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":10461,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"833:13:102","nodeType":"FunctionDefinition","parameters":{"id":10457,"nodeType":"ParameterList","parameters":[],"src":"846:2:102"},"returnParameters":{"id":10460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10461,"src":"872:7:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10458,"name":"bytes32","nodeType":"ElementaryTypeName","src":"872:7:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"871:9:102"},"scope":10462,"src":"824:57:102","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10463,"src":"347:536:102","usedErrors":[],"usedEvents":[]}],"src":"118:766:102"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"id":103,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[11499],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"Proxy":[10885],"StorageSlot":[11581]},"id":10516,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10464,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:103"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol","file":"../Proxy.sol","id":10465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10516,"sourceUnit":10886,"src":"124:22:103","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":10466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10516,"sourceUnit":10834,"src":"147:30:103","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10468,"name":"Proxy","nameLocations":["577:5:103"],"nodeType":"IdentifierPath","referencedDeclaration":10885,"src":"577:5:103"},"id":10469,"nodeType":"InheritanceSpecifier","src":"577:5:103"},{"baseName":{"id":10470,"name":"ERC1967Upgrade","nameLocations":["584:14:103"],"nodeType":"IdentifierPath","referencedDeclaration":10833,"src":"584:14:103"},"id":10471,"nodeType":"InheritanceSpecifier","src":"584:14:103"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":10467,"nodeType":"StructuredDocumentation","src":"179:372:103","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":10515,"linearizedBaseContracts":[10515,10833,10885],"name":"ERC1967Proxy","nameLocation":"561:12:103","nodeType":"ContractDefinition","nodes":[{"body":{"id":10501,"nodeType":"Block","src":"1001:161:103","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":10480,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"1018:20:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e696d706c656d656e746174696f6e","id":10486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1068:30:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""},"value":"eip1967.proxy.implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""}],"id":10485,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1058:9:103","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1058:41:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1050:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10483,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:103","typeDescriptions":{}}},"id":10488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1050:50:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1103:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1050:54:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1042:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10481,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1042:7:103","typeDescriptions":{}}},"id":10491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1018:87:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10479,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1011:6:103","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1011:95:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10494,"nodeType":"ExpressionStatement","src":"1011:95:103"},{"expression":{"arguments":[{"id":10496,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10474,"src":"1134:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10497,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10476,"src":"1142:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":10498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1149:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10495,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"1116:17:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:39:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10500,"nodeType":"ExpressionStatement","src":"1116:39:103"}]},"documentation":{"id":10472,"nodeType":"StructuredDocumentation","src":"605:335:103","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializating the storage of the proxy like a Solidity constructor."},"id":10502,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10474,"mutability":"mutable","name":"_logic","nameLocation":"965:6:103","nodeType":"VariableDeclaration","scope":10502,"src":"957:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10473,"name":"address","nodeType":"ElementaryTypeName","src":"957:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10476,"mutability":"mutable","name":"_data","nameLocation":"986:5:103","nodeType":"VariableDeclaration","scope":10502,"src":"973:18:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10475,"name":"bytes","nodeType":"ElementaryTypeName","src":"973:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"956:36:103"},"returnParameters":{"id":10478,"nodeType":"ParameterList","parameters":[],"src":"1001:0:103"},"scope":10515,"src":"945:217:103","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[10850],"body":{"id":10513,"nodeType":"Block","src":"1321:59:103","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10509,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10833,"src":"1338:14:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$10833_$","typeString":"type(contract ERC1967Upgrade)"}},"id":10510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1353:18:103","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":10547,"src":"1338:33:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1338:35:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10508,"id":10512,"nodeType":"Return","src":"1331:42:103"}]},"documentation":{"id":10503,"nodeType":"StructuredDocumentation","src":"1168:67:103","text":" @dev Returns the current implementation address."},"id":10514,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1249:15:103","nodeType":"FunctionDefinition","overrides":{"id":10505,"nodeType":"OverrideSpecifier","overrides":[],"src":"1289:8:103"},"parameters":{"id":10504,"nodeType":"ParameterList","parameters":[],"src":"1264:2:103"},"returnParameters":{"id":10508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10507,"mutability":"mutable","name":"impl","nameLocation":"1315:4:103","nodeType":"VariableDeclaration","scope":10514,"src":"1307:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10506,"name":"address","nodeType":"ElementaryTypeName","src":"1307:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1306:14:103"},"scope":10515,"src":"1240:140:103","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":10516,"src":"552:830:103","usedErrors":[],"usedEvents":[10534,10680,10745]}],"src":"99:1284:103"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"id":104,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[11499],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"StorageSlot":[11581]},"id":10834,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10517,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"121:23:104"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":10518,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10834,"sourceUnit":10896,"src":"146:31:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":10519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10834,"sourceUnit":10463,"src":"178:45:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol","file":"../../utils/Address.sol","id":10520,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10834,"sourceUnit":11500,"src":"224:33:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":10521,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10834,"sourceUnit":11582,"src":"258:37:104","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":10522,"nodeType":"StructuredDocumentation","src":"297:236:104","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._\n @custom:oz-upgrades-unsafe-allow delegatecall"},"fullyImplemented":true,"id":10833,"linearizedBaseContracts":[10833],"name":"ERC1967Upgrade","nameLocation":"552:14:104","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":10525,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"677:14:104","nodeType":"VariableDeclaration","scope":10833,"src":"652:108:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"652:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":10524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"694:66:104","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":10526,"nodeType":"StructuredDocumentation","src":"767:214:104","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, and is\n validated in the constructor."},"id":10529,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1012:20:104","nodeType":"VariableDeclaration","scope":10833,"src":"986:115:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"986:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":10528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:66:104","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":10530,"nodeType":"StructuredDocumentation","src":"1108:68:104","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":10534,"name":"Upgraded","nameLocation":"1187:8:104","nodeType":"EventDefinition","parameters":{"id":10533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10532,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"1212:14:104","nodeType":"VariableDeclaration","scope":10534,"src":"1196:30:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10531,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1195:32:104"},"src":"1181:47:104"},{"body":{"id":10546,"nodeType":"Block","src":"1368:78:104","statements":[{"expression":{"expression":{"arguments":[{"id":10542,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"1412:20:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10540,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"1385:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1397:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"1385:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:48:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1434:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"1385:54:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10539,"id":10545,"nodeType":"Return","src":"1378:61:104"}]},"documentation":{"id":10535,"nodeType":"StructuredDocumentation","src":"1234:67:104","text":" @dev Returns the current implementation address."},"id":10547,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1315:18:104","nodeType":"FunctionDefinition","parameters":{"id":10536,"nodeType":"ParameterList","parameters":[],"src":"1333:2:104"},"returnParameters":{"id":10539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10547,"src":"1359:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10537,"name":"address","nodeType":"ElementaryTypeName","src":"1359:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1358:9:104"},"scope":10833,"src":"1306:140:104","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10570,"nodeType":"Block","src":"1600:196:104","statements":[{"expression":{"arguments":[{"arguments":[{"id":10556,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"1637:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10554,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"1618:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$11499_$","typeString":"type(library Address)"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1626:10:104","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":11222,"src":"1618:18:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1618:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":10558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1657:47:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":10553,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1610:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:95:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10560,"nodeType":"ExpressionStatement","src":"1610:95:104"},{"expression":{"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":10564,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"1742:20:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10561,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"1715:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1727:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"1715:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1715:48:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1764:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"1715:54:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10567,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"1772:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1715:74:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10569,"nodeType":"ExpressionStatement","src":"1715:74:104"}]},"documentation":{"id":10548,"nodeType":"StructuredDocumentation","src":"1452:80:104","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":10571,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1546:18:104","nodeType":"FunctionDefinition","parameters":{"id":10551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10550,"mutability":"mutable","name":"newImplementation","nameLocation":"1573:17:104","nodeType":"VariableDeclaration","scope":10571,"src":"1565:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10549,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1564:27:104"},"returnParameters":{"id":10552,"nodeType":"ParameterList","parameters":[],"src":"1600:0:104"},"scope":10833,"src":"1537:259:104","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10585,"nodeType":"Block","src":"1958:96:104","statements":[{"expression":{"arguments":[{"id":10578,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10574,"src":"1987:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10577,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"1968:18:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10580,"nodeType":"ExpressionStatement","src":"1968:37:104"},{"eventCall":{"arguments":[{"id":10582,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10574,"src":"2029:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10581,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10534,"src":"2020:8:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:27:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10584,"nodeType":"EmitStatement","src":"2015:32:104"}]},"documentation":{"id":10572,"nodeType":"StructuredDocumentation","src":"1802:95:104","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":10586,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1911:10:104","nodeType":"FunctionDefinition","parameters":{"id":10575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10574,"mutability":"mutable","name":"newImplementation","nameLocation":"1930:17:104","nodeType":"VariableDeclaration","scope":10586,"src":"1922:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10573,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1921:27:104"},"returnParameters":{"id":10576,"nodeType":"ParameterList","parameters":[],"src":"1958:0:104"},"scope":10833,"src":"1902:152:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10615,"nodeType":"Block","src":"2316:167:104","statements":[{"expression":{"arguments":[{"id":10597,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10589,"src":"2337:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10596,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"2326:10:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:29:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10599,"nodeType":"ExpressionStatement","src":"2326:29:104"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10600,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"2369:4:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2374:6:104","memberName":"length","nodeType":"MemberAccess","src":"2369:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2369:15:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":10604,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10593,"src":"2388:9:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2369:28:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10614,"nodeType":"IfStatement","src":"2365:112:104","trueBody":{"id":10613,"nodeType":"Block","src":"2399:78:104","statements":[{"expression":{"arguments":[{"id":10609,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10589,"src":"2442:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10610,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"2461:4:104","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":10606,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"2413:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$11499_$","typeString":"type(library Address)"}},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2421:20:104","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":11432,"src":"2413:28:104","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":10611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:53:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10612,"nodeType":"ExpressionStatement","src":"2413:53:104"}]}}]},"documentation":{"id":10587,"nodeType":"StructuredDocumentation","src":"2060:123:104","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":10616,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2197:17:104","nodeType":"FunctionDefinition","parameters":{"id":10594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10589,"mutability":"mutable","name":"newImplementation","nameLocation":"2232:17:104","nodeType":"VariableDeclaration","scope":10616,"src":"2224:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10588,"name":"address","nodeType":"ElementaryTypeName","src":"2224:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10591,"mutability":"mutable","name":"data","nameLocation":"2272:4:104","nodeType":"VariableDeclaration","scope":10616,"src":"2259:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10590,"name":"bytes","nodeType":"ElementaryTypeName","src":"2259:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10593,"mutability":"mutable","name":"forceCall","nameLocation":"2291:9:104","nodeType":"VariableDeclaration","scope":10616,"src":"2286:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10592,"name":"bool","nodeType":"ElementaryTypeName","src":"2286:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2214:92:104"},"returnParameters":{"id":10595,"nodeType":"ParameterList","parameters":[],"src":"2316:0:104"},"scope":10833,"src":"2188:295:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10668,"nodeType":"Block","src":"2787:820:104","statements":[{"condition":{"expression":{"arguments":[{"id":10628,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10525,"src":"3128:14:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10626,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"3101:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3113:14:104","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":11558,"src":"3101:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$11530_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3101:42:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$11530_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":10630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3144:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11529,"src":"3101:48:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10666,"nodeType":"Block","src":"3219:382:104","statements":[{"clauses":[{"block":{"id":10651,"nodeType":"Block","src":"3313:115:104","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10645,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10642,"src":"3339:4:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10646,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"3347:20:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3339:28:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":10648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3369:43:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":10644,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3331:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3331:82:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10650,"nodeType":"ExpressionStatement","src":"3331:82:104"}]},"errorName":"","id":10652,"nodeType":"TryCatchClause","parameters":{"id":10643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10642,"mutability":"mutable","name":"slot","nameLocation":"3307:4:104","nodeType":"VariableDeclaration","scope":10652,"src":"3299:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3299:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3298:14:104"},"src":"3290:138:104"},{"block":{"id":10657,"nodeType":"Block","src":"3435:89:104","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":10654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3460:48:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":10653,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3453:6:104","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":10655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3453:56:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10656,"nodeType":"ExpressionStatement","src":"3453:56:104"}]},"errorName":"","id":10658,"nodeType":"TryCatchClause","src":"3429:95:104"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10637,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"3255:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10636,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"3237:17:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$10462_$","typeString":"type(contract IERC1822Proxiable)"}},"id":10638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3237:36:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$10462","typeString":"contract IERC1822Proxiable"}},"id":10639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3274:13:104","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":10461,"src":"3237:50:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":10640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3237:52:104","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10659,"nodeType":"TryStatement","src":"3233:291:104"},{"expression":{"arguments":[{"id":10661,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"3555:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10662,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10621,"src":"3574:4:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10663,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"3580:9:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10660,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"3537:17:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":10664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:53:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10665,"nodeType":"ExpressionStatement","src":"3537:53:104"}]},"id":10667,"nodeType":"IfStatement","src":"3097:504:104","trueBody":{"id":10635,"nodeType":"Block","src":"3151:62:104","statements":[{"expression":{"arguments":[{"id":10632,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"3184:17:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10631,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"3165:18:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3165:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10634,"nodeType":"ExpressionStatement","src":"3165:37:104"}]}}]},"documentation":{"id":10617,"nodeType":"StructuredDocumentation","src":"2489:161:104","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":10669,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2664:21:104","nodeType":"FunctionDefinition","parameters":{"id":10624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10619,"mutability":"mutable","name":"newImplementation","nameLocation":"2703:17:104","nodeType":"VariableDeclaration","scope":10669,"src":"2695:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10618,"name":"address","nodeType":"ElementaryTypeName","src":"2695:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10621,"mutability":"mutable","name":"data","nameLocation":"2743:4:104","nodeType":"VariableDeclaration","scope":10669,"src":"2730:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10620,"name":"bytes","nodeType":"ElementaryTypeName","src":"2730:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10623,"mutability":"mutable","name":"forceCall","nameLocation":"2762:9:104","nodeType":"VariableDeclaration","scope":10669,"src":"2757:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10622,"name":"bool","nodeType":"ElementaryTypeName","src":"2757:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2685:92:104"},"returnParameters":{"id":10625,"nodeType":"ParameterList","parameters":[],"src":"2787:0:104"},"scope":10833,"src":"2655:952:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":10670,"nodeType":"StructuredDocumentation","src":"3613:189:104","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":10673,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3833:11:104","nodeType":"VariableDeclaration","scope":10833,"src":"3807:106:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10671,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3807:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":10672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3847:66:104","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":10674,"nodeType":"StructuredDocumentation","src":"3920:67:104","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":10680,"name":"AdminChanged","nameLocation":"3998:12:104","nodeType":"EventDefinition","parameters":{"id":10679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10676,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"4019:13:104","nodeType":"VariableDeclaration","scope":10680,"src":"4011:21:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10675,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10678,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"4042:8:104","nodeType":"VariableDeclaration","scope":10680,"src":"4034:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10677,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:41:104"},"src":"3992:60:104"},{"body":{"id":10692,"nodeType":"Block","src":"4174:69:104","statements":[{"expression":{"expression":{"arguments":[{"id":10688,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"4218:11:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10686,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"4191:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4203:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"4191:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:39:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4231:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"4191:45:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10685,"id":10691,"nodeType":"Return","src":"4184:52:104"}]},"documentation":{"id":10681,"nodeType":"StructuredDocumentation","src":"4058:50:104","text":" @dev Returns the current admin."},"id":10693,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4122:9:104","nodeType":"FunctionDefinition","parameters":{"id":10682,"nodeType":"ParameterList","parameters":[],"src":"4131:2:104"},"returnParameters":{"id":10685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10693,"src":"4165:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10683,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4164:9:104"},"scope":10833,"src":"4113:130:104","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10718,"nodeType":"Block","src":"4370:156:104","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10700,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4388:8:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4408:1:104","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":10702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4400:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10701,"name":"address","nodeType":"ElementaryTypeName","src":"4400:7:104","typeDescriptions":{}}},"id":10704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:10:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4388:22:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":10706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4412:40:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":10699,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4380:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4380:73:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10708,"nodeType":"ExpressionStatement","src":"4380:73:104"},{"expression":{"id":10716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":10712,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"4490:11:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10709,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"4463:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4475:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"4463:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4463:39:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4503:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"4463:45:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10715,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10696,"src":"4511:8:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4463:56:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10717,"nodeType":"ExpressionStatement","src":"4463:56:104"}]},"documentation":{"id":10694,"nodeType":"StructuredDocumentation","src":"4249:71:104","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":10719,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4334:9:104","nodeType":"FunctionDefinition","parameters":{"id":10697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10696,"mutability":"mutable","name":"newAdmin","nameLocation":"4352:8:104","nodeType":"VariableDeclaration","scope":10719,"src":"4344:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10695,"name":"address","nodeType":"ElementaryTypeName","src":"4344:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4343:18:104"},"returnParameters":{"id":10698,"nodeType":"ParameterList","parameters":[],"src":"4370:0:104"},"scope":10833,"src":"4325:201:104","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10735,"nodeType":"Block","src":"4686:86:104","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":10726,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"4714:9:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4714:11:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10728,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10722,"src":"4727:8:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10725,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10680,"src":"4701:12:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4701:35:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10730,"nodeType":"EmitStatement","src":"4696:40:104"},{"expression":{"arguments":[{"id":10732,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10722,"src":"4756:8:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10731,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"4746:9:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4746:19:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10734,"nodeType":"ExpressionStatement","src":"4746:19:104"}]},"documentation":{"id":10720,"nodeType":"StructuredDocumentation","src":"4532:100:104","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":10736,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4646:12:104","nodeType":"FunctionDefinition","parameters":{"id":10723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10722,"mutability":"mutable","name":"newAdmin","nameLocation":"4667:8:104","nodeType":"VariableDeclaration","scope":10736,"src":"4659:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10721,"name":"address","nodeType":"ElementaryTypeName","src":"4659:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4658:18:104"},"returnParameters":{"id":10724,"nodeType":"ParameterList","parameters":[],"src":"4686:0:104"},"scope":10833,"src":"4637:135:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":10737,"nodeType":"StructuredDocumentation","src":"4778:232:104","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":10740,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5041:12:104","nodeType":"VariableDeclaration","scope":10833,"src":"5015:107:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5015:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":10739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5056:66:104","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":10741,"nodeType":"StructuredDocumentation","src":"5129:60:104","text":" @dev Emitted when the beacon is upgraded."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":10745,"name":"BeaconUpgraded","nameLocation":"5200:14:104","nodeType":"EventDefinition","parameters":{"id":10744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10743,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"5231:6:104","nodeType":"VariableDeclaration","scope":10745,"src":"5215:22:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10742,"name":"address","nodeType":"ElementaryTypeName","src":"5215:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5214:24:104"},"src":"5194:45:104"},{"body":{"id":10757,"nodeType":"Block","src":"5355:70:104","statements":[{"expression":{"expression":{"arguments":[{"id":10753,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10740,"src":"5399:12:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10751,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"5372:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5384:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"5372:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5372:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5413:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"5372:46:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10750,"id":10756,"nodeType":"Return","src":"5365:53:104"}]},"documentation":{"id":10746,"nodeType":"StructuredDocumentation","src":"5245:51:104","text":" @dev Returns the current beacon."},"id":10758,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5310:10:104","nodeType":"FunctionDefinition","parameters":{"id":10747,"nodeType":"ParameterList","parameters":[],"src":"5320:2:104"},"returnParameters":{"id":10750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10758,"src":"5346:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10748,"name":"address","nodeType":"ElementaryTypeName","src":"5346:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5345:9:104"},"scope":10833,"src":"5301:124:104","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10793,"nodeType":"Block","src":"5554:290:104","statements":[{"expression":{"arguments":[{"arguments":[{"id":10767,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10761,"src":"5591:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10765,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"5572:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$11499_$","typeString":"type(library Address)"}},"id":10766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5580:10:104","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":11222,"src":"5572:18:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5572:29:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":10769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5603:39:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":10764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5564:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5564:79:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10771,"nodeType":"ExpressionStatement","src":"5564:79:104"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10776,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10761,"src":"5688:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10775,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10895,"src":"5680:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$10895_$","typeString":"type(contract IBeacon)"}},"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$10895","typeString":"contract IBeacon"}},"id":10778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5699:14:104","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":10894,"src":"5680:33:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:35:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10773,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"5661:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$11499_$","typeString":"type(library Address)"}},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5669:10:104","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":11222,"src":"5661:18:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5661:55:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":10781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5718:50:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":10772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5653:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5653:116:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10783,"nodeType":"ExpressionStatement","src":"5653:116:104"},{"expression":{"id":10791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":10787,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10740,"src":"5806:12:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10784,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"5779:11:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$11581_$","typeString":"type(library StorageSlot)"}},"id":10786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5791:14:104","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":11547,"src":"5779:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$11527_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5779:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":10789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5820:5:104","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11526,"src":"5779:46:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10790,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10761,"src":"5828:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5779:58:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10792,"nodeType":"ExpressionStatement","src":"5779:58:104"}]},"documentation":{"id":10759,"nodeType":"StructuredDocumentation","src":"5431:71:104","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":10794,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5516:10:104","nodeType":"FunctionDefinition","parameters":{"id":10762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10761,"mutability":"mutable","name":"newBeacon","nameLocation":"5535:9:104","nodeType":"VariableDeclaration","scope":10794,"src":"5527:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10760,"name":"address","nodeType":"ElementaryTypeName","src":"5527:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5526:19:104"},"returnParameters":{"id":10763,"nodeType":"ParameterList","parameters":[],"src":"5554:0:104"},"scope":10833,"src":"5507:337:104","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10831,"nodeType":"Block","src":"6273:217:104","statements":[{"expression":{"arguments":[{"id":10805,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"6294:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10804,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"6283:10:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6283:21:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10807,"nodeType":"ExpressionStatement","src":"6283:21:104"},{"eventCall":{"arguments":[{"id":10809,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"6334:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10808,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10745,"src":"6319:14:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6319:25:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10811,"nodeType":"EmitStatement","src":"6314:30:104"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10812,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10799,"src":"6358:4:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6363:6:104","memberName":"length","nodeType":"MemberAccess","src":"6358:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6372:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6358:15:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":10816,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"6377:9:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6358:28:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10830,"nodeType":"IfStatement","src":"6354:130:104","trueBody":{"id":10829,"nodeType":"Block","src":"6388:96:104","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10822,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"6439:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10821,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10895,"src":"6431:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$10895_$","typeString":"type(contract IBeacon)"}},"id":10823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$10895","typeString":"contract IBeacon"}},"id":10824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6450:14:104","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":10894,"src":"6431:33:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:35:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10826,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10799,"src":"6468:4:104","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":10818,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"6402:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$11499_$","typeString":"type(library Address)"}},"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6410:20:104","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":11432,"src":"6402:28:104","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":10827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:71:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10828,"nodeType":"ExpressionStatement","src":"6402:71:104"}]}}]},"documentation":{"id":10795,"nodeType":"StructuredDocumentation","src":"5850:292:104","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":10832,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6156:23:104","nodeType":"FunctionDefinition","parameters":{"id":10802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10797,"mutability":"mutable","name":"newBeacon","nameLocation":"6197:9:104","nodeType":"VariableDeclaration","scope":10832,"src":"6189:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10796,"name":"address","nodeType":"ElementaryTypeName","src":"6189:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10799,"mutability":"mutable","name":"data","nameLocation":"6229:4:104","nodeType":"VariableDeclaration","scope":10832,"src":"6216:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10798,"name":"bytes","nodeType":"ElementaryTypeName","src":"6216:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10801,"mutability":"mutable","name":"forceCall","nameLocation":"6248:9:104","nodeType":"VariableDeclaration","scope":10832,"src":"6243:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10800,"name":"bool","nodeType":"ElementaryTypeName","src":"6243:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6179:84:104"},"returnParameters":{"id":10803,"nodeType":"ParameterList","parameters":[],"src":"6273:0:104"},"scope":10833,"src":"6147:343:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10834,"src":"534:5958:104","usedErrors":[],"usedEvents":[10534,10680,10745]}],"src":"121:6372:104"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"id":105,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol","exportedSymbols":{"Proxy":[10885]},"id":10886,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10835,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"104:23:105"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":10836,"nodeType":"StructuredDocumentation","src":"129:598:105","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":10885,"linearizedBaseContracts":[10885],"name":"Proxy","nameLocation":"746:5:105","nodeType":"ContractDefinition","nodes":[{"body":{"id":10843,"nodeType":"Block","src":"1013:835:105","statements":[{"AST":{"nativeSrc":"1032:810:105","nodeType":"YulBlock","src":"1032:810:105","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1285:1:105","nodeType":"YulLiteral","src":"1285:1:105","type":"","value":"0"},{"kind":"number","nativeSrc":"1288:1:105","nodeType":"YulLiteral","src":"1288:1:105","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1291:12:105","nodeType":"YulIdentifier","src":"1291:12:105"},"nativeSrc":"1291:14:105","nodeType":"YulFunctionCall","src":"1291:14:105"}],"functionName":{"name":"calldatacopy","nativeSrc":"1272:12:105","nodeType":"YulIdentifier","src":"1272:12:105"},"nativeSrc":"1272:34:105","nodeType":"YulFunctionCall","src":"1272:34:105"},"nativeSrc":"1272:34:105","nodeType":"YulExpressionStatement","src":"1272:34:105"},{"nativeSrc":"1433:74:105","nodeType":"YulVariableDeclaration","src":"1433:74:105","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1460:3:105","nodeType":"YulIdentifier","src":"1460:3:105"},"nativeSrc":"1460:5:105","nodeType":"YulFunctionCall","src":"1460:5:105"},{"name":"implementation","nativeSrc":"1467:14:105","nodeType":"YulIdentifier","src":"1467:14:105"},{"kind":"number","nativeSrc":"1483:1:105","nodeType":"YulLiteral","src":"1483:1:105","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1486:12:105","nodeType":"YulIdentifier","src":"1486:12:105"},"nativeSrc":"1486:14:105","nodeType":"YulFunctionCall","src":"1486:14:105"},{"kind":"number","nativeSrc":"1502:1:105","nodeType":"YulLiteral","src":"1502:1:105","type":"","value":"0"},{"kind":"number","nativeSrc":"1505:1:105","nodeType":"YulLiteral","src":"1505:1:105","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1447:12:105","nodeType":"YulIdentifier","src":"1447:12:105"},"nativeSrc":"1447:60:105","nodeType":"YulFunctionCall","src":"1447:60:105"},"variables":[{"name":"result","nativeSrc":"1437:6:105","nodeType":"YulTypedName","src":"1437:6:105","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1575:1:105","nodeType":"YulLiteral","src":"1575:1:105","type":"","value":"0"},{"kind":"number","nativeSrc":"1578:1:105","nodeType":"YulLiteral","src":"1578:1:105","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1581:14:105","nodeType":"YulIdentifier","src":"1581:14:105"},"nativeSrc":"1581:16:105","nodeType":"YulFunctionCall","src":"1581:16:105"}],"functionName":{"name":"returndatacopy","nativeSrc":"1560:14:105","nodeType":"YulIdentifier","src":"1560:14:105"},"nativeSrc":"1560:38:105","nodeType":"YulFunctionCall","src":"1560:38:105"},"nativeSrc":"1560:38:105","nodeType":"YulExpressionStatement","src":"1560:38:105"},{"cases":[{"body":{"nativeSrc":"1693:59:105","nodeType":"YulBlock","src":"1693:59:105","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1718:1:105","nodeType":"YulLiteral","src":"1718:1:105","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1721:14:105","nodeType":"YulIdentifier","src":"1721:14:105"},"nativeSrc":"1721:16:105","nodeType":"YulFunctionCall","src":"1721:16:105"}],"functionName":{"name":"revert","nativeSrc":"1711:6:105","nodeType":"YulIdentifier","src":"1711:6:105"},"nativeSrc":"1711:27:105","nodeType":"YulFunctionCall","src":"1711:27:105"},"nativeSrc":"1711:27:105","nodeType":"YulExpressionStatement","src":"1711:27:105"}]},"nativeSrc":"1686:66:105","nodeType":"YulCase","src":"1686:66:105","value":{"kind":"number","nativeSrc":"1691:1:105","nodeType":"YulLiteral","src":"1691:1:105","type":"","value":"0"}},{"body":{"nativeSrc":"1773:59:105","nodeType":"YulBlock","src":"1773:59:105","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1798:1:105","nodeType":"YulLiteral","src":"1798:1:105","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1801:14:105","nodeType":"YulIdentifier","src":"1801:14:105"},"nativeSrc":"1801:16:105","nodeType":"YulFunctionCall","src":"1801:16:105"}],"functionName":{"name":"return","nativeSrc":"1791:6:105","nodeType":"YulIdentifier","src":"1791:6:105"},"nativeSrc":"1791:27:105","nodeType":"YulFunctionCall","src":"1791:27:105"},"nativeSrc":"1791:27:105","nodeType":"YulExpressionStatement","src":"1791:27:105"}]},"nativeSrc":"1765:67:105","nodeType":"YulCase","src":"1765:67:105","value":"default"}],"expression":{"name":"result","nativeSrc":"1619:6:105","nodeType":"YulIdentifier","src":"1619:6:105"},"nativeSrc":"1612:220:105","nodeType":"YulSwitch","src":"1612:220:105"}]},"evmVersion":"cancun","externalReferences":[{"declaration":10839,"isOffset":false,"isSlot":false,"src":"1467:14:105","valueSize":1}],"id":10842,"nodeType":"InlineAssembly","src":"1023:819:105"}]},"documentation":{"id":10837,"nodeType":"StructuredDocumentation","src":"758:190:105","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":10844,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"962:9:105","nodeType":"FunctionDefinition","parameters":{"id":10840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10839,"mutability":"mutable","name":"implementation","nameLocation":"980:14:105","nodeType":"VariableDeclaration","scope":10844,"src":"972:22:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10838,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:24:105"},"returnParameters":{"id":10841,"nodeType":"ParameterList","parameters":[],"src":"1013:0:105"},"scope":10885,"src":"953:895:105","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":10845,"nodeType":"StructuredDocumentation","src":"1854:172:105","text":" @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":10850,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2040:15:105","nodeType":"FunctionDefinition","parameters":{"id":10846,"nodeType":"ParameterList","parameters":[],"src":"2055:2:105"},"returnParameters":{"id":10849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10850,"src":"2089:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10847,"name":"address","nodeType":"ElementaryTypeName","src":"2089:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2088:9:105"},"scope":10885,"src":"2031:67:105","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10862,"nodeType":"Block","src":"2365:72:105","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10854,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10884,"src":"2375:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2375:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10856,"nodeType":"ExpressionStatement","src":"2375:17:105"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":10858,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10850,"src":"2412:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2412:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10857,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10844,"src":"2402:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:28:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10861,"nodeType":"ExpressionStatement","src":"2402:28:105"}]},"documentation":{"id":10851,"nodeType":"StructuredDocumentation","src":"2104:218:105","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internall call site, it will return directly to the external caller."},"id":10863,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2336:9:105","nodeType":"FunctionDefinition","parameters":{"id":10852,"nodeType":"ParameterList","parameters":[],"src":"2345:2:105"},"returnParameters":{"id":10853,"nodeType":"ParameterList","parameters":[],"src":"2365:0:105"},"scope":10885,"src":"2327:110:105","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":10870,"nodeType":"Block","src":"2670:28:105","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10867,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10863,"src":"2680:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2680:11:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10869,"nodeType":"ExpressionStatement","src":"2680:11:105"}]},"documentation":{"id":10864,"nodeType":"StructuredDocumentation","src":"2443:186:105","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":10871,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10865,"nodeType":"ParameterList","parameters":[],"src":"2642:2:105"},"returnParameters":{"id":10866,"nodeType":"ParameterList","parameters":[],"src":"2670:0:105"},"scope":10885,"src":"2634:64:105","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":10878,"nodeType":"Block","src":"2893:28:105","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10875,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10863,"src":"2903:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2903:11:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10877,"nodeType":"ExpressionStatement","src":"2903:11:105"}]},"documentation":{"id":10872,"nodeType":"StructuredDocumentation","src":"2704:149:105","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":10879,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10873,"nodeType":"ParameterList","parameters":[],"src":"2865:2:105"},"returnParameters":{"id":10874,"nodeType":"ParameterList","parameters":[],"src":"2893:0:105"},"scope":10885,"src":"2858:63:105","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":10883,"nodeType":"Block","src":"3246:2:105","statements":[]},"documentation":{"id":10880,"nodeType":"StructuredDocumentation","src":"2927:270:105","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overriden should call `super._beforeFallback()`."},"id":10884,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3211:15:105","nodeType":"FunctionDefinition","parameters":{"id":10881,"nodeType":"ParameterList","parameters":[],"src":"3226:2:105"},"returnParameters":{"id":10882,"nodeType":"ParameterList","parameters":[],"src":"3246:0:105"},"scope":10885,"src":"3202:46:105","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":10886,"src":"728:2522:105","usedErrors":[],"usedEvents":[]}],"src":"104:3147:105"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"id":106,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[10895]},"id":10896,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10887,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:106"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":10888,"nodeType":"StructuredDocumentation","src":"118:79:106","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":10895,"linearizedBaseContracts":[10895],"name":"IBeacon","nameLocation":"208:7:106","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10889,"nodeType":"StructuredDocumentation","src":"222:162:106","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":10894,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:106","nodeType":"FunctionDefinition","parameters":{"id":10890,"nodeType":"ParameterList","parameters":[],"src":"412:2:106"},"returnParameters":{"id":10893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10894,"src":"438:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10891,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:106"},"scope":10895,"src":"389:58:106","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10896,"src":"198:251:106","usedErrors":[],"usedEvents":[]}],"src":"93:357:106"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"id":107,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"Address":[11499],"Context":[11521],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"Ownable":[10452],"Proxy":[10885],"ProxyAdmin":[11040],"StorageSlot":[11581],"TransparentUpgradeableProxy":[11204]},"id":11041,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10897,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:107"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","id":10898,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11041,"sourceUnit":11205,"src":"126:43:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol","file":"../../access/Ownable.sol","id":10899,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11041,"sourceUnit":10453,"src":"170:34:107","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10901,"name":"Ownable","nameLocations":["458:7:107"],"nodeType":"IdentifierPath","referencedDeclaration":10452,"src":"458:7:107"},"id":10902,"nodeType":"InheritanceSpecifier","src":"458:7:107"}],"canonicalName":"ProxyAdmin","contractDependencies":[],"contractKind":"contract","documentation":{"id":10900,"nodeType":"StructuredDocumentation","src":"206:228:107","text":" @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}."},"fullyImplemented":true,"id":11040,"linearizedBaseContracts":[11040,10452,11521],"name":"ProxyAdmin","nameLocation":"444:10:107","nodeType":"ContractDefinition","nodes":[{"body":{"id":10910,"nodeType":"Block","src":"530:2:107","statements":[]},"id":10911,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10907,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10904,"src":"516:12:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10908,"kind":"baseConstructorSpecifier","modifierName":{"id":10906,"name":"Ownable","nameLocations":["508:7:107"],"nodeType":"IdentifierPath","referencedDeclaration":10452,"src":"508:7:107"},"nodeType":"ModifierInvocation","src":"508:21:107"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10904,"mutability":"mutable","name":"initialOwner","nameLocation":"494:12:107","nodeType":"VariableDeclaration","scope":10911,"src":"486:20:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10903,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"485:22:107"},"returnParameters":{"id":10909,"nodeType":"ParameterList","parameters":[],"src":"530:0:107"},"scope":11040,"src":"473:59:107","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10944,"nodeType":"Block","src":"806:332:107","statements":[{"assignments":[10921,10923],"declarations":[{"constant":false,"id":10921,"mutability":"mutable","name":"success","nameLocation":"979:7:107","nodeType":"VariableDeclaration","scope":10944,"src":"974:12:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10920,"name":"bool","nodeType":"ElementaryTypeName","src":"974:4:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10923,"mutability":"mutable","name":"returndata","nameLocation":"1001:10:107","nodeType":"VariableDeclaration","scope":10944,"src":"988:23:107","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10922,"name":"bytes","nodeType":"ElementaryTypeName","src":"988:5:107","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":10931,"initialValue":{"arguments":[{"hexValue":"5c60da1b","id":10929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1041:13:107","typeDescriptions":{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}],"expression":{"arguments":[{"id":10926,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"1023:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}],"id":10925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1015:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10924,"name":"address","nodeType":"ElementaryTypeName","src":"1015:7:107","typeDescriptions":{}}},"id":10927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1015:14:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1030:10:107","memberName":"staticcall","nodeType":"MemberAccess","src":"1015:25:107","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":10930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1015:40:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"973:82:107"},{"expression":{"arguments":[{"id":10933,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10921,"src":"1073:7:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10932,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1065:7:107","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:16:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10935,"nodeType":"ExpressionStatement","src":"1065:16:107"},{"expression":{"arguments":[{"id":10938,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10923,"src":"1109:10:107","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":10940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1122:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10939,"name":"address","nodeType":"ElementaryTypeName","src":"1122:7:107","typeDescriptions":{}}}],"id":10941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1121:9:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":10936,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1098:3:107","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1102:6:107","memberName":"decode","nodeType":"MemberAccess","src":"1098:10:107","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":10942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1098:33:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":10919,"id":10943,"nodeType":"Return","src":"1091:40:107"}]},"documentation":{"id":10912,"nodeType":"StructuredDocumentation","src":"538:158:107","text":" @dev Returns the current implementation of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"204e1c7a","id":10945,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyImplementation","nameLocation":"710:22:107","nodeType":"FunctionDefinition","parameters":{"id":10916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10915,"mutability":"mutable","name":"proxy","nameLocation":"761:5:107","nodeType":"VariableDeclaration","scope":10945,"src":"733:33:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":10914,"nodeType":"UserDefinedTypeName","pathNode":{"id":10913,"name":"TransparentUpgradeableProxy","nameLocations":["733:27:107"],"nodeType":"IdentifierPath","referencedDeclaration":11204,"src":"733:27:107"},"referencedDeclaration":11204,"src":"733:27:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"732:35:107"},"returnParameters":{"id":10919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10945,"src":"797:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10917,"name":"address","nodeType":"ElementaryTypeName","src":"797:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"796:9:107"},"scope":11040,"src":"701:437:107","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":10978,"nodeType":"Block","src":"1394:323:107","statements":[{"assignments":[10955,10957],"declarations":[{"constant":false,"id":10955,"mutability":"mutable","name":"success","nameLocation":"1558:7:107","nodeType":"VariableDeclaration","scope":10978,"src":"1553:12:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10954,"name":"bool","nodeType":"ElementaryTypeName","src":"1553:4:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10957,"mutability":"mutable","name":"returndata","nameLocation":"1580:10:107","nodeType":"VariableDeclaration","scope":10978,"src":"1567:23:107","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10956,"name":"bytes","nodeType":"ElementaryTypeName","src":"1567:5:107","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":10965,"initialValue":{"arguments":[{"hexValue":"f851a440","id":10963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1620:13:107","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}],"expression":{"arguments":[{"id":10960,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10949,"src":"1602:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}],"id":10959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1594:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10958,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:107","typeDescriptions":{}}},"id":10961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:14:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1609:10:107","memberName":"staticcall","nodeType":"MemberAccess","src":"1594:25:107","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":10964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:40:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1552:82:107"},{"expression":{"arguments":[{"id":10967,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"1652:7:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10966,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1644:7:107","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1644:16:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10969,"nodeType":"ExpressionStatement","src":"1644:16:107"},{"expression":{"arguments":[{"id":10972,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10957,"src":"1688:10:107","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":10974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10973,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:107","typeDescriptions":{}}}],"id":10975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1700:9:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":10970,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1677:3:107","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1681:6:107","memberName":"decode","nodeType":"MemberAccess","src":"1677:10:107","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1677:33:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":10953,"id":10977,"nodeType":"Return","src":"1670:40:107"}]},"documentation":{"id":10946,"nodeType":"StructuredDocumentation","src":"1144:149:107","text":" @dev Returns the current admin of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"f3b7dead","id":10979,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyAdmin","nameLocation":"1307:13:107","nodeType":"FunctionDefinition","parameters":{"id":10950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10949,"mutability":"mutable","name":"proxy","nameLocation":"1349:5:107","nodeType":"VariableDeclaration","scope":10979,"src":"1321:33:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":10948,"nodeType":"UserDefinedTypeName","pathNode":{"id":10947,"name":"TransparentUpgradeableProxy","nameLocations":["1321:27:107"],"nodeType":"IdentifierPath","referencedDeclaration":11204,"src":"1321:27:107"},"referencedDeclaration":11204,"src":"1321:27:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"1320:35:107"},"returnParameters":{"id":10953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10979,"src":"1385:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10951,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1384:9:107"},"scope":11040,"src":"1298:419:107","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":10996,"nodeType":"Block","src":"1995:44:107","statements":[{"expression":{"arguments":[{"id":10993,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10985,"src":"2023:8:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10990,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10983,"src":"2005:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"id":10992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2011:11:107","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":11138,"src":"2005:17:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":10994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2005:27:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10995,"nodeType":"ExpressionStatement","src":"2005:27:107"}]},"documentation":{"id":10980,"nodeType":"StructuredDocumentation","src":"1723:163:107","text":" @dev Changes the admin of `proxy` to `newAdmin`.\n Requirements:\n - This contract must be the current admin of `proxy`."},"functionSelector":"7eff275e","id":10997,"implemented":true,"kind":"function","modifiers":[{"id":10988,"kind":"modifierInvocation","modifierName":{"id":10987,"name":"onlyOwner","nameLocations":["1985:9:107"],"nodeType":"IdentifierPath","referencedDeclaration":10394,"src":"1985:9:107"},"nodeType":"ModifierInvocation","src":"1985:9:107"}],"name":"changeProxyAdmin","nameLocation":"1900:16:107","nodeType":"FunctionDefinition","parameters":{"id":10986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10983,"mutability":"mutable","name":"proxy","nameLocation":"1945:5:107","nodeType":"VariableDeclaration","scope":10997,"src":"1917:33:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":10982,"nodeType":"UserDefinedTypeName","pathNode":{"id":10981,"name":"TransparentUpgradeableProxy","nameLocations":["1917:27:107"],"nodeType":"IdentifierPath","referencedDeclaration":11204,"src":"1917:27:107"},"referencedDeclaration":11204,"src":"1917:27:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":10985,"mutability":"mutable","name":"newAdmin","nameLocation":"1960:8:107","nodeType":"VariableDeclaration","scope":10997,"src":"1952:16:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10984,"name":"address","nodeType":"ElementaryTypeName","src":"1952:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1916:53:107"},"returnParameters":{"id":10989,"nodeType":"ParameterList","parameters":[],"src":"1995:0:107"},"scope":11040,"src":"1891:148:107","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":11014,"nodeType":"Block","src":"2345:48:107","statements":[{"expression":{"arguments":[{"id":11011,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11003,"src":"2371:14:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11008,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11001,"src":"2355:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"id":11010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2361:9:107","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":11156,"src":"2355:15:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":11012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:31:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11013,"nodeType":"ExpressionStatement","src":"2355:31:107"}]},"documentation":{"id":10998,"nodeType":"StructuredDocumentation","src":"2045:194:107","text":" @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"99a88ec4","id":11015,"implemented":true,"kind":"function","modifiers":[{"id":11006,"kind":"modifierInvocation","modifierName":{"id":11005,"name":"onlyOwner","nameLocations":["2335:9:107"],"nodeType":"IdentifierPath","referencedDeclaration":10394,"src":"2335:9:107"},"nodeType":"ModifierInvocation","src":"2335:9:107"}],"name":"upgrade","nameLocation":"2253:7:107","nodeType":"FunctionDefinition","parameters":{"id":11004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11001,"mutability":"mutable","name":"proxy","nameLocation":"2289:5:107","nodeType":"VariableDeclaration","scope":11015,"src":"2261:33:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":11000,"nodeType":"UserDefinedTypeName","pathNode":{"id":10999,"name":"TransparentUpgradeableProxy","nameLocations":["2261:27:107"],"nodeType":"IdentifierPath","referencedDeclaration":11204,"src":"2261:27:107"},"referencedDeclaration":11204,"src":"2261:27:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":11003,"mutability":"mutable","name":"implementation","nameLocation":"2304:14:107","nodeType":"VariableDeclaration","scope":11015,"src":"2296:22:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11002,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2260:59:107"},"returnParameters":{"id":11007,"nodeType":"ParameterList","parameters":[],"src":"2345:0:107"},"scope":11040,"src":"2244:149:107","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":11038,"nodeType":"Block","src":"2824:79:107","statements":[{"expression":{"arguments":[{"id":11034,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"2875:14:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11035,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11023,"src":"2891:4:107","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":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11028,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"2834:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"id":11030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2840:16:107","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":11173,"src":"2834:22:107","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":11033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":11031,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2864:3:107","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2868:5:107","memberName":"value","nodeType":"MemberAccess","src":"2864:9:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2834:40:107","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,bytes memory) payable external"}},"id":11036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2834:62:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11037,"nodeType":"ExpressionStatement","src":"2834:62:107"}]},"documentation":{"id":11016,"nodeType":"StructuredDocumentation","src":"2399:255:107","text":" @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n {TransparentUpgradeableProxy-upgradeToAndCall}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"9623609d","id":11039,"implemented":true,"kind":"function","modifiers":[{"id":11026,"kind":"modifierInvocation","modifierName":{"id":11025,"name":"onlyOwner","nameLocations":["2814:9:107"],"nodeType":"IdentifierPath","referencedDeclaration":10394,"src":"2814:9:107"},"nodeType":"ModifierInvocation","src":"2814:9:107"}],"name":"upgradeAndCall","nameLocation":"2668:14:107","nodeType":"FunctionDefinition","parameters":{"id":11024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11019,"mutability":"mutable","name":"proxy","nameLocation":"2720:5:107","nodeType":"VariableDeclaration","scope":11039,"src":"2692:33:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":11018,"nodeType":"UserDefinedTypeName","pathNode":{"id":11017,"name":"TransparentUpgradeableProxy","nameLocations":["2692:27:107"],"nodeType":"IdentifierPath","referencedDeclaration":11204,"src":"2692:27:107"},"referencedDeclaration":11204,"src":"2692:27:107","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$11204","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":11021,"mutability":"mutable","name":"implementation","nameLocation":"2743:14:107","nodeType":"VariableDeclaration","scope":11039,"src":"2735:22:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11020,"name":"address","nodeType":"ElementaryTypeName","src":"2735:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11023,"mutability":"mutable","name":"data","nameLocation":"2780:4:107","nodeType":"VariableDeclaration","scope":11039,"src":"2767:17:107","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11022,"name":"bytes","nodeType":"ElementaryTypeName","src":"2767:5:107","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2682:108:107"},"returnParameters":{"id":11027,"nodeType":"ParameterList","parameters":[],"src":"2824:0:107"},"scope":11040,"src":"2659:244:107","stateMutability":"payable","virtual":true,"visibility":"public"}],"scope":11041,"src":"435:2470:107","usedErrors":[],"usedEvents":[10360]}],"src":"101:2805:107"}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"id":108,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[11499],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"Proxy":[10885],"StorageSlot":[11581],"TransparentUpgradeableProxy":[11204]},"id":11205,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11042,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:108"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","id":11043,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11205,"sourceUnit":10516,"src":"143:37:108","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11045,"name":"ERC1967Proxy","nameLocations":["1674:12:108"],"nodeType":"IdentifierPath","referencedDeclaration":10515,"src":"1674:12:108"},"id":11046,"nodeType":"InheritanceSpecifier","src":"1674:12:108"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":11044,"nodeType":"StructuredDocumentation","src":"182:1451:108","text":" @dev This contract implements a proxy that is upgradeable by an admin.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches one of the admin functions exposed by the proxy itself.\n 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n \"admin cannot fallback to proxy target\".\n These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n to sudden errors when trying to call a function from the proxy implementation.\n Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy."},"fullyImplemented":true,"id":11204,"linearizedBaseContracts":[11204,10515,10833,10885],"name":"TransparentUpgradeableProxy","nameLocation":"1643:27:108","nodeType":"ContractDefinition","nodes":[{"body":{"id":11080,"nodeType":"Block","src":"2038:124:108","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":11061,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"2055:11:108","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e61646d696e","id":11067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2096:21:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""},"value":"eip1967.proxy.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""}],"id":11066,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2086:9:108","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2086:32:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":11065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2078:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11064,"name":"uint256","nodeType":"ElementaryTypeName","src":"2078:7:108","typeDescriptions":{}}},"id":11069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:41:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2122:1:108","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2078:45:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2070:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":11062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2070:7:108","typeDescriptions":{}}},"id":11072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2055:69:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11060,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2048:6:108","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2048:77:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11075,"nodeType":"ExpressionStatement","src":"2048:77:108"},{"expression":{"arguments":[{"id":11077,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11051,"src":"2148:6:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11076,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10736,"src":"2135:12:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:20:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11079,"nodeType":"ExpressionStatement","src":"2135:20:108"}]},"documentation":{"id":11047,"nodeType":"StructuredDocumentation","src":"1693:210:108","text":" @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"id":11081,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11056,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11049,"src":"2023:6:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11057,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11053,"src":"2031:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11058,"kind":"baseConstructorSpecifier","modifierName":{"id":11055,"name":"ERC1967Proxy","nameLocations":["2010:12:108"],"nodeType":"IdentifierPath","referencedDeclaration":10515,"src":"2010:12:108"},"nodeType":"ModifierInvocation","src":"2010:27:108"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11049,"mutability":"mutable","name":"_logic","nameLocation":"1937:6:108","nodeType":"VariableDeclaration","scope":11081,"src":"1929:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11048,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11051,"mutability":"mutable","name":"admin_","nameLocation":"1961:6:108","nodeType":"VariableDeclaration","scope":11081,"src":"1953:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11050,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11053,"mutability":"mutable","name":"_data","nameLocation":"1990:5:108","nodeType":"VariableDeclaration","scope":11081,"src":"1977:18:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11052,"name":"bytes","nodeType":"ElementaryTypeName","src":"1977:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1919:82:108"},"returnParameters":{"id":11059,"nodeType":"ParameterList","parameters":[],"src":"2038:0:108"},"scope":11204,"src":"1908:254:108","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":11096,"nodeType":"Block","src":"2322:115:108","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11084,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2336:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2340:6:108","memberName":"sender","nodeType":"MemberAccess","src":"2336:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11086,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"2350:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2350:11:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2336:25:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11094,"nodeType":"Block","src":"2395:36:108","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11091,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10863,"src":"2409:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:11:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11093,"nodeType":"ExpressionStatement","src":"2409:11:108"}]},"id":11095,"nodeType":"IfStatement","src":"2332:99:108","trueBody":{"id":11090,"nodeType":"Block","src":"2363:26:108","statements":[{"id":11089,"nodeType":"PlaceholderStatement","src":"2377:1:108"}]}}]},"documentation":{"id":11082,"nodeType":"StructuredDocumentation","src":"2168:130:108","text":" @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin."},"id":11097,"name":"ifAdmin","nameLocation":"2312:7:108","nodeType":"ModifierDefinition","parameters":{"id":11083,"nodeType":"ParameterList","parameters":[],"src":"2319:2:108"},"src":"2303:134:108","virtual":false,"visibility":"internal"},{"body":{"id":11110,"nodeType":"Block","src":"2938:37:108","statements":[{"expression":{"id":11108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11105,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"2948:6:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":11106,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"2957:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:11:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2948:20:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11109,"nodeType":"ExpressionStatement","src":"2948:20:108"}]},"documentation":{"id":11098,"nodeType":"StructuredDocumentation","src":"2443:431:108","text":" @dev Returns the current admin.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"functionSelector":"f851a440","id":11111,"implemented":true,"kind":"function","modifiers":[{"id":11101,"kind":"modifierInvocation","modifierName":{"id":11100,"name":"ifAdmin","nameLocations":["2905:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":11097,"src":"2905:7:108"},"nodeType":"ModifierInvocation","src":"2905:7:108"}],"name":"admin","nameLocation":"2888:5:108","nodeType":"FunctionDefinition","parameters":{"id":11099,"nodeType":"ParameterList","parameters":[],"src":"2893:2:108"},"returnParameters":{"id":11104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11103,"mutability":"mutable","name":"admin_","nameLocation":"2930:6:108","nodeType":"VariableDeclaration","scope":11111,"src":"2922:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11102,"name":"address","nodeType":"ElementaryTypeName","src":"2922:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2921:16:108"},"scope":11204,"src":"2879:96:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11124,"nodeType":"Block","src":"3512:52:108","statements":[{"expression":{"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11119,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11117,"src":"3522:15:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":11120,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[10514],"referencedDeclaration":10514,"src":"3540:15:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3522:35:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11123,"nodeType":"ExpressionStatement","src":"3522:35:108"}]},"documentation":{"id":11112,"nodeType":"StructuredDocumentation","src":"2981:449:108","text":" @dev Returns the current implementation.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"functionSelector":"5c60da1b","id":11125,"implemented":true,"kind":"function","modifiers":[{"id":11115,"kind":"modifierInvocation","modifierName":{"id":11114,"name":"ifAdmin","nameLocations":["3470:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":11097,"src":"3470:7:108"},"nodeType":"ModifierInvocation","src":"3470:7:108"}],"name":"implementation","nameLocation":"3444:14:108","nodeType":"FunctionDefinition","parameters":{"id":11113,"nodeType":"ParameterList","parameters":[],"src":"3458:2:108"},"returnParameters":{"id":11118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11117,"mutability":"mutable","name":"implementation_","nameLocation":"3495:15:108","nodeType":"VariableDeclaration","scope":11125,"src":"3487:23:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11116,"name":"address","nodeType":"ElementaryTypeName","src":"3487:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3486:25:108"},"scope":11204,"src":"3435:129:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11137,"nodeType":"Block","src":"3833:39:108","statements":[{"expression":{"arguments":[{"id":11134,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"3856:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11133,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10736,"src":"3843:12:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3843:22:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11136,"nodeType":"ExpressionStatement","src":"3843:22:108"}]},"documentation":{"id":11126,"nodeType":"StructuredDocumentation","src":"3570:194:108","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event.\n NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"functionSelector":"8f283970","id":11138,"implemented":true,"kind":"function","modifiers":[{"id":11131,"kind":"modifierInvocation","modifierName":{"id":11130,"name":"ifAdmin","nameLocations":["3825:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":11097,"src":"3825:7:108"},"nodeType":"ModifierInvocation","src":"3825:7:108"}],"name":"changeAdmin","nameLocation":"3778:11:108","nodeType":"FunctionDefinition","parameters":{"id":11129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11128,"mutability":"mutable","name":"newAdmin","nameLocation":"3798:8:108","nodeType":"VariableDeclaration","scope":11138,"src":"3790:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11127,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3789:18:108"},"returnParameters":{"id":11132,"nodeType":"ParameterList","parameters":[],"src":"3833:0:108"},"scope":11204,"src":"3769:103:108","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":11155,"nodeType":"Block","src":"4095:71:108","statements":[{"expression":{"arguments":[{"id":11147,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11141,"src":"4123:17:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"","id":11150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4148:2:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":11149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4142:5:108","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":11148,"name":"bytes","nodeType":"ElementaryTypeName","src":"4142:5:108","typeDescriptions":{}}},"id":11151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4142:9:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":11152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4153:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11146,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"4105:17:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":11153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4105:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11154,"nodeType":"ExpressionStatement","src":"4105:54:108"}]},"documentation":{"id":11139,"nodeType":"StructuredDocumentation","src":"3878:149:108","text":" @dev Upgrade the implementation of the proxy.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"functionSelector":"3659cfe6","id":11156,"implemented":true,"kind":"function","modifiers":[{"id":11144,"kind":"modifierInvocation","modifierName":{"id":11143,"name":"ifAdmin","nameLocations":["4087:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":11097,"src":"4087:7:108"},"nodeType":"ModifierInvocation","src":"4087:7:108"}],"name":"upgradeTo","nameLocation":"4041:9:108","nodeType":"FunctionDefinition","parameters":{"id":11142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11141,"mutability":"mutable","name":"newImplementation","nameLocation":"4059:17:108","nodeType":"VariableDeclaration","scope":11156,"src":"4051:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11140,"name":"address","nodeType":"ElementaryTypeName","src":"4051:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4050:27:108"},"returnParameters":{"id":11145,"nodeType":"ParameterList","parameters":[],"src":"4095:0:108"},"scope":11204,"src":"4032:134:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11172,"nodeType":"Block","src":"4641:65:108","statements":[{"expression":{"arguments":[{"id":11167,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11159,"src":"4669:17:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11168,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"4688:4:108","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"74727565","id":11169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4694:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11166,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"4651:17:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":11170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4651:48:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11171,"nodeType":"ExpressionStatement","src":"4651:48:108"}]},"documentation":{"id":11157,"nodeType":"StructuredDocumentation","src":"4172:365:108","text":" @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n proxied contract.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."},"functionSelector":"4f1ef286","id":11173,"implemented":true,"kind":"function","modifiers":[{"id":11164,"kind":"modifierInvocation","modifierName":{"id":11163,"name":"ifAdmin","nameLocations":["4633:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":11097,"src":"4633:7:108"},"nodeType":"ModifierInvocation","src":"4633:7:108"}],"name":"upgradeToAndCall","nameLocation":"4551:16:108","nodeType":"FunctionDefinition","parameters":{"id":11162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11159,"mutability":"mutable","name":"newImplementation","nameLocation":"4576:17:108","nodeType":"VariableDeclaration","scope":11173,"src":"4568:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11158,"name":"address","nodeType":"ElementaryTypeName","src":"4568:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11161,"mutability":"mutable","name":"data","nameLocation":"4610:4:108","nodeType":"VariableDeclaration","scope":11173,"src":"4595:19:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11160,"name":"bytes","nodeType":"ElementaryTypeName","src":"4595:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4567:48:108"},"returnParameters":{"id":11165,"nodeType":"ParameterList","parameters":[],"src":"4641:0:108"},"scope":11204,"src":"4542:164:108","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11182,"nodeType":"Block","src":"4825:35:108","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11179,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"4842:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4842:11:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11178,"id":11181,"nodeType":"Return","src":"4835:18:108"}]},"documentation":{"id":11174,"nodeType":"StructuredDocumentation","src":"4712:50:108","text":" @dev Returns the current admin."},"id":11183,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nameLocation":"4776:6:108","nodeType":"FunctionDefinition","parameters":{"id":11175,"nodeType":"ParameterList","parameters":[],"src":"4782:2:108"},"returnParameters":{"id":11178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11183,"src":"4816:7:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11176,"name":"address","nodeType":"ElementaryTypeName","src":"4816:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4815:9:108"},"scope":11204,"src":"4767:93:108","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[10884],"body":{"id":11202,"nodeType":"Block","src":"5034:154:108","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11189,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5052:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:108","memberName":"sender","nodeType":"MemberAccess","src":"5052:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11191,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"5066:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5066:11:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5052:25:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","id":11194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5079:68:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"id":11188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5044:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5044:104:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11196,"nodeType":"ExpressionStatement","src":"5044:104:108"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11197,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5158:5:108","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$11204_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":11199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5164:15:108","memberName":"_beforeFallback","nodeType":"MemberAccess","referencedDeclaration":10884,"src":"5158:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5158:23:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11201,"nodeType":"ExpressionStatement","src":"5158:23:108"}]},"documentation":{"id":11184,"nodeType":"StructuredDocumentation","src":"4866:110:108","text":" @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}."},"id":11203,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"4990:15:108","nodeType":"FunctionDefinition","overrides":{"id":11186,"nodeType":"OverrideSpecifier","overrides":[],"src":"5025:8:108"},"parameters":{"id":11185,"nodeType":"ParameterList","parameters":[],"src":"5005:2:108"},"returnParameters":{"id":11187,"nodeType":"ParameterList","parameters":[],"src":"5034:0:108"},"scope":11204,"src":"4981:207:108","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":11205,"src":"1634:3556:108","usedErrors":[],"usedEvents":[10534,10680,10745]}],"src":"118:5073:108"}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"id":109,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol","exportedSymbols":{"Address":[11499]},"id":11500,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11206,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"106:23:109"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":11207,"nodeType":"StructuredDocumentation","src":"131:67:109","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":11499,"linearizedBaseContracts":[11499],"name":"Address","nameLocation":"207:7:109","nodeType":"ContractDefinition","nodes":[{"body":{"id":11221,"nodeType":"Block","src":"1246:254:109","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":11215,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11210,"src":"1470:7:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:4:109","memberName":"code","nodeType":"MemberAccess","src":"1470:12:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1483:6:109","memberName":"length","nodeType":"MemberAccess","src":"1470:19:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1470:23:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11214,"id":11220,"nodeType":"Return","src":"1463:30:109"}]},"documentation":{"id":11208,"nodeType":"StructuredDocumentation","src":"221:954:109","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":11222,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1189:10:109","nodeType":"FunctionDefinition","parameters":{"id":11211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11210,"mutability":"mutable","name":"account","nameLocation":"1208:7:109","nodeType":"VariableDeclaration","scope":11222,"src":"1200:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11209,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1199:17:109"},"returnParameters":{"id":11214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11222,"src":"1240:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11212,"name":"bool","nodeType":"ElementaryTypeName","src":"1240:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1239:6:109"},"scope":11499,"src":"1180:320:109","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11255,"nodeType":"Block","src":"2488:241:109","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":11233,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2514:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$11499","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$11499","typeString":"library Address"}],"id":11232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2506:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11231,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:109","typeDescriptions":{}}},"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2520:7:109","memberName":"balance","nodeType":"MemberAccess","src":"2506:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11236,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11227,"src":"2531:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2506:31:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":11238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2539:31:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":11230,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2498:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2498:73:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11240,"nodeType":"ExpressionStatement","src":"2498:73:109"},{"assignments":[11242,null],"declarations":[{"constant":false,"id":11242,"mutability":"mutable","name":"success","nameLocation":"2588:7:109","nodeType":"VariableDeclaration","scope":11255,"src":"2583:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11241,"name":"bool","nodeType":"ElementaryTypeName","src":"2583:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":11249,"initialValue":{"arguments":[{"hexValue":"","id":11247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2631:2:109","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":11243,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11225,"src":"2601:9:109","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2611:4:109","memberName":"call","nodeType":"MemberAccess","src":"2601:14:109","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":11246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11245,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11227,"src":"2623:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2601:29:109","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":11248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2601:33:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2582:52:109"},{"expression":{"arguments":[{"id":11251,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11242,"src":"2652:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":11252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2661:60:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":11250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2644:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2644:78:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11254,"nodeType":"ExpressionStatement","src":"2644:78:109"}]},"documentation":{"id":11223,"nodeType":"StructuredDocumentation","src":"1506:906:109","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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":11256,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2426:9:109","nodeType":"FunctionDefinition","parameters":{"id":11228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11225,"mutability":"mutable","name":"recipient","nameLocation":"2452:9:109","nodeType":"VariableDeclaration","scope":11256,"src":"2436:25:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":11224,"name":"address","nodeType":"ElementaryTypeName","src":"2436:15:109","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":11227,"mutability":"mutable","name":"amount","nameLocation":"2471:6:109","nodeType":"VariableDeclaration","scope":11256,"src":"2463:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11226,"name":"uint256","nodeType":"ElementaryTypeName","src":"2463:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2435:43:109"},"returnParameters":{"id":11229,"nodeType":"ParameterList","parameters":[],"src":"2488:0:109"},"scope":11499,"src":"2417:312:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11272,"nodeType":"Block","src":"3560:84:109","statements":[{"expression":{"arguments":[{"id":11267,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11259,"src":"3590:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11268,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11261,"src":"3598:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":11269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3604:32:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":11266,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[11273,11293],"referencedDeclaration":11293,"src":"3577:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":11270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3577:60:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11265,"id":11271,"nodeType":"Return","src":"3570:67:109"}]},"documentation":{"id":11257,"nodeType":"StructuredDocumentation","src":"2735:731:109","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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"},"id":11273,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3480:12:109","nodeType":"FunctionDefinition","parameters":{"id":11262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11259,"mutability":"mutable","name":"target","nameLocation":"3501:6:109","nodeType":"VariableDeclaration","scope":11273,"src":"3493:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11258,"name":"address","nodeType":"ElementaryTypeName","src":"3493:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11261,"mutability":"mutable","name":"data","nameLocation":"3522:4:109","nodeType":"VariableDeclaration","scope":11273,"src":"3509:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11260,"name":"bytes","nodeType":"ElementaryTypeName","src":"3509:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3492:35:109"},"returnParameters":{"id":11265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11273,"src":"3546:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11263,"name":"bytes","nodeType":"ElementaryTypeName","src":"3546:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3545:14:109"},"scope":11499,"src":"3471:173:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11292,"nodeType":"Block","src":"4013:76:109","statements":[{"expression":{"arguments":[{"id":11286,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11276,"src":"4052:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11287,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11278,"src":"4060:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":11288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4066:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11289,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11280,"src":"4069:12:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11285,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[11313,11363],"referencedDeclaration":11363,"src":"4030:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":11290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:52:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11284,"id":11291,"nodeType":"Return","src":"4023:59:109"}]},"documentation":{"id":11274,"nodeType":"StructuredDocumentation","src":"3650:211:109","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":11293,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3875:12:109","nodeType":"FunctionDefinition","parameters":{"id":11281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11276,"mutability":"mutable","name":"target","nameLocation":"3905:6:109","nodeType":"VariableDeclaration","scope":11293,"src":"3897:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11275,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11278,"mutability":"mutable","name":"data","nameLocation":"3934:4:109","nodeType":"VariableDeclaration","scope":11293,"src":"3921:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11277,"name":"bytes","nodeType":"ElementaryTypeName","src":"3921:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11280,"mutability":"mutable","name":"errorMessage","nameLocation":"3962:12:109","nodeType":"VariableDeclaration","scope":11293,"src":"3948:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11279,"name":"string","nodeType":"ElementaryTypeName","src":"3948:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3887:93:109"},"returnParameters":{"id":11284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11293,"src":"3999:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11282,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:109"},"scope":11499,"src":"3866:223:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11312,"nodeType":"Block","src":"4594:111:109","statements":[{"expression":{"arguments":[{"id":11306,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"4633:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11307,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"4641:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"4647:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":11309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":11305,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[11313,11363],"referencedDeclaration":11363,"src":"4611:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":11310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4611:87:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11304,"id":11311,"nodeType":"Return","src":"4604:94:109"}]},"documentation":{"id":11294,"nodeType":"StructuredDocumentation","src":"4095:351:109","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`.\n _Available since v3.1._"},"id":11313,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4460:21:109","nodeType":"FunctionDefinition","parameters":{"id":11301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11296,"mutability":"mutable","name":"target","nameLocation":"4499:6:109","nodeType":"VariableDeclaration","scope":11313,"src":"4491:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11295,"name":"address","nodeType":"ElementaryTypeName","src":"4491:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11298,"mutability":"mutable","name":"data","nameLocation":"4528:4:109","nodeType":"VariableDeclaration","scope":11313,"src":"4515:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11297,"name":"bytes","nodeType":"ElementaryTypeName","src":"4515:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11300,"mutability":"mutable","name":"value","nameLocation":"4550:5:109","nodeType":"VariableDeclaration","scope":11313,"src":"4542:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11299,"name":"uint256","nodeType":"ElementaryTypeName","src":"4542:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4481:80:109"},"returnParameters":{"id":11304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11313,"src":"4580:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11302,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:109"},"scope":11499,"src":"4451:254:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11362,"nodeType":"Block","src":"5132:320:109","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":11330,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5158:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$11499","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$11499","typeString":"library Address"}],"id":11329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5150:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11328,"name":"address","nodeType":"ElementaryTypeName","src":"5150:7:109","typeDescriptions":{}}},"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5150:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5164:7:109","memberName":"balance","nodeType":"MemberAccess","src":"5150:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"5175:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5150:30:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":11335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5182:40:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":11327,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5142:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:81:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11337,"nodeType":"ExpressionStatement","src":"5142:81:109"},{"expression":{"arguments":[{"arguments":[{"id":11340,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"5252:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11339,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"5241:10:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":11341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":11342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5261:31:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":11338,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5233:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5233:60:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11344,"nodeType":"ExpressionStatement","src":"5233:60:109"},{"assignments":[11346,11348],"declarations":[{"constant":false,"id":11346,"mutability":"mutable","name":"success","nameLocation":"5310:7:109","nodeType":"VariableDeclaration","scope":11362,"src":"5305:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11345,"name":"bool","nodeType":"ElementaryTypeName","src":"5305:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11348,"mutability":"mutable","name":"returndata","nameLocation":"5332:10:109","nodeType":"VariableDeclaration","scope":11362,"src":"5319:23:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11347,"name":"bytes","nodeType":"ElementaryTypeName","src":"5319:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11355,"initialValue":{"arguments":[{"id":11353,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"5372:4:109","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":11349,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"5346:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5353:4:109","memberName":"call","nodeType":"MemberAccess","src":"5346:11:109","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":11352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"5365:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5346:25:109","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":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5346:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5304:73:109"},{"expression":{"arguments":[{"id":11357,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11346,"src":"5411:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11358,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"5420:10:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11359,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11322,"src":"5432:12:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11356,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5394:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5394:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11326,"id":11361,"nodeType":"Return","src":"5387:58:109"}]},"documentation":{"id":11314,"nodeType":"StructuredDocumentation","src":"4711:237:109","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":11363,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4962:21:109","nodeType":"FunctionDefinition","parameters":{"id":11323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11316,"mutability":"mutable","name":"target","nameLocation":"5001:6:109","nodeType":"VariableDeclaration","scope":11363,"src":"4993:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11315,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11318,"mutability":"mutable","name":"data","nameLocation":"5030:4:109","nodeType":"VariableDeclaration","scope":11363,"src":"5017:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11317,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11320,"mutability":"mutable","name":"value","nameLocation":"5052:5:109","nodeType":"VariableDeclaration","scope":11363,"src":"5044:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11319,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11322,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:109","nodeType":"VariableDeclaration","scope":11363,"src":"5067:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11321,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:109"},"returnParameters":{"id":11326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11363,"src":"5118:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11324,"name":"bytes","nodeType":"ElementaryTypeName","src":"5118:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5117:14:109"},"scope":11499,"src":"4953:499:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11379,"nodeType":"Block","src":"5729:97:109","statements":[{"expression":{"arguments":[{"id":11374,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11366,"src":"5765:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11375,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11368,"src":"5773:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":11376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5779:39:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":11373,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[11380,11415],"referencedDeclaration":11415,"src":"5746:18:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":11377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5746:73:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11372,"id":11378,"nodeType":"Return","src":"5739:80:109"}]},"documentation":{"id":11364,"nodeType":"StructuredDocumentation","src":"5458:166:109","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":11380,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5638:18:109","nodeType":"FunctionDefinition","parameters":{"id":11369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11366,"mutability":"mutable","name":"target","nameLocation":"5665:6:109","nodeType":"VariableDeclaration","scope":11380,"src":"5657:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11365,"name":"address","nodeType":"ElementaryTypeName","src":"5657:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11368,"mutability":"mutable","name":"data","nameLocation":"5686:4:109","nodeType":"VariableDeclaration","scope":11380,"src":"5673:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11367,"name":"bytes","nodeType":"ElementaryTypeName","src":"5673:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5656:35:109"},"returnParameters":{"id":11372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11380,"src":"5715:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11370,"name":"bytes","nodeType":"ElementaryTypeName","src":"5715:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5714:14:109"},"scope":11499,"src":"5629:197:109","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11414,"nodeType":"Block","src":"6168:228:109","statements":[{"expression":{"arguments":[{"arguments":[{"id":11394,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11383,"src":"6197:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11393,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"6186:10:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":11395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":11396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6206:38:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":11392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6178:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6178:67:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11398,"nodeType":"ExpressionStatement","src":"6178:67:109"},{"assignments":[11400,11402],"declarations":[{"constant":false,"id":11400,"mutability":"mutable","name":"success","nameLocation":"6262:7:109","nodeType":"VariableDeclaration","scope":11414,"src":"6257:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11399,"name":"bool","nodeType":"ElementaryTypeName","src":"6257:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11402,"mutability":"mutable","name":"returndata","nameLocation":"6284:10:109","nodeType":"VariableDeclaration","scope":11414,"src":"6271:23:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11401,"name":"bytes","nodeType":"ElementaryTypeName","src":"6271:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11407,"initialValue":{"arguments":[{"id":11405,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11385,"src":"6316:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11403,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11383,"src":"6298:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6305:10:109","memberName":"staticcall","nodeType":"MemberAccess","src":"6298:17:109","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":11406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6256:65:109"},{"expression":{"arguments":[{"id":11409,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11400,"src":"6355:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11410,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11402,"src":"6364:10:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11411,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"6376:12:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11408,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"6338:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":11412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11391,"id":11413,"nodeType":"Return","src":"6331:58:109"}]},"documentation":{"id":11381,"nodeType":"StructuredDocumentation","src":"5832:173:109","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":11415,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6019:18:109","nodeType":"FunctionDefinition","parameters":{"id":11388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11383,"mutability":"mutable","name":"target","nameLocation":"6055:6:109","nodeType":"VariableDeclaration","scope":11415,"src":"6047:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11382,"name":"address","nodeType":"ElementaryTypeName","src":"6047:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11385,"mutability":"mutable","name":"data","nameLocation":"6084:4:109","nodeType":"VariableDeclaration","scope":11415,"src":"6071:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11384,"name":"bytes","nodeType":"ElementaryTypeName","src":"6071:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11387,"mutability":"mutable","name":"errorMessage","nameLocation":"6112:12:109","nodeType":"VariableDeclaration","scope":11415,"src":"6098:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11386,"name":"string","nodeType":"ElementaryTypeName","src":"6098:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6037:93:109"},"returnParameters":{"id":11391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11415,"src":"6154:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11389,"name":"bytes","nodeType":"ElementaryTypeName","src":"6154:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6153:14:109"},"scope":11499,"src":"6010:386:109","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11431,"nodeType":"Block","src":"6672:101:109","statements":[{"expression":{"arguments":[{"id":11426,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11418,"src":"6710:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11427,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"6718:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":11428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6724:41:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":11425,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[11432,11467],"referencedDeclaration":11467,"src":"6689:20:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":11429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:77:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11424,"id":11430,"nodeType":"Return","src":"6682:84:109"}]},"documentation":{"id":11416,"nodeType":"StructuredDocumentation","src":"6402:168:109","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":11432,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6584:20:109","nodeType":"FunctionDefinition","parameters":{"id":11421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11418,"mutability":"mutable","name":"target","nameLocation":"6613:6:109","nodeType":"VariableDeclaration","scope":11432,"src":"6605:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11417,"name":"address","nodeType":"ElementaryTypeName","src":"6605:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11420,"mutability":"mutable","name":"data","nameLocation":"6634:4:109","nodeType":"VariableDeclaration","scope":11432,"src":"6621:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11419,"name":"bytes","nodeType":"ElementaryTypeName","src":"6621:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6604:35:109"},"returnParameters":{"id":11424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11432,"src":"6658:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11422,"name":"bytes","nodeType":"ElementaryTypeName","src":"6658:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6657:14:109"},"scope":11499,"src":"6575:198:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11466,"nodeType":"Block","src":"7114:232:109","statements":[{"expression":{"arguments":[{"arguments":[{"id":11446,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11435,"src":"7143:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11445,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"7132:10:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":11447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7132:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":11448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7152:40:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":11444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7124:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7124:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11450,"nodeType":"ExpressionStatement","src":"7124:69:109"},{"assignments":[11452,11454],"declarations":[{"constant":false,"id":11452,"mutability":"mutable","name":"success","nameLocation":"7210:7:109","nodeType":"VariableDeclaration","scope":11466,"src":"7205:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11451,"name":"bool","nodeType":"ElementaryTypeName","src":"7205:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11454,"mutability":"mutable","name":"returndata","nameLocation":"7232:10:109","nodeType":"VariableDeclaration","scope":11466,"src":"7219:23:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11453,"name":"bytes","nodeType":"ElementaryTypeName","src":"7219:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11459,"initialValue":{"arguments":[{"id":11457,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11437,"src":"7266:4:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11455,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11435,"src":"7246:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7253:12:109","memberName":"delegatecall","nodeType":"MemberAccess","src":"7246:19:109","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":11458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7246:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7204:67:109"},{"expression":{"arguments":[{"id":11461,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11452,"src":"7305:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11462,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11454,"src":"7314:10:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11463,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11439,"src":"7326:12:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11460,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"7288:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":11464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7288:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11443,"id":11465,"nodeType":"Return","src":"7281:58:109"}]},"documentation":{"id":11433,"nodeType":"StructuredDocumentation","src":"6779:175:109","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":11467,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6968:20:109","nodeType":"FunctionDefinition","parameters":{"id":11440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11435,"mutability":"mutable","name":"target","nameLocation":"7006:6:109","nodeType":"VariableDeclaration","scope":11467,"src":"6998:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11434,"name":"address","nodeType":"ElementaryTypeName","src":"6998:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11437,"mutability":"mutable","name":"data","nameLocation":"7035:4:109","nodeType":"VariableDeclaration","scope":11467,"src":"7022:17:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11436,"name":"bytes","nodeType":"ElementaryTypeName","src":"7022:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11439,"mutability":"mutable","name":"errorMessage","nameLocation":"7063:12:109","nodeType":"VariableDeclaration","scope":11467,"src":"7049:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11438,"name":"string","nodeType":"ElementaryTypeName","src":"7049:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6988:93:109"},"returnParameters":{"id":11443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11467,"src":"7100:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11441,"name":"bytes","nodeType":"ElementaryTypeName","src":"7100:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7099:14:109"},"scope":11499,"src":"6959:387:109","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11497,"nodeType":"Block","src":"7726:532:109","statements":[{"condition":{"id":11479,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11470,"src":"7740:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11495,"nodeType":"Block","src":"7797:455:109","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11483,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11472,"src":"7881:10:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7892:6:109","memberName":"length","nodeType":"MemberAccess","src":"7881:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7901:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7881:21:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11493,"nodeType":"Block","src":"8189:53:109","statements":[{"expression":{"arguments":[{"id":11490,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11474,"src":"8214:12:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11489,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8207:6:109","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":11491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8207:20:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11492,"nodeType":"ExpressionStatement","src":"8207:20:109"}]},"id":11494,"nodeType":"IfStatement","src":"7877:365:109","trueBody":{"id":11488,"nodeType":"Block","src":"7904:279:109","statements":[{"AST":{"nativeSrc":"8024:145:109","nodeType":"YulBlock","src":"8024:145:109","statements":[{"nativeSrc":"8046:40:109","nodeType":"YulVariableDeclaration","src":"8046:40:109","value":{"arguments":[{"name":"returndata","nativeSrc":"8075:10:109","nodeType":"YulIdentifier","src":"8075:10:109"}],"functionName":{"name":"mload","nativeSrc":"8069:5:109","nodeType":"YulIdentifier","src":"8069:5:109"},"nativeSrc":"8069:17:109","nodeType":"YulFunctionCall","src":"8069:17:109"},"variables":[{"name":"returndata_size","nativeSrc":"8050:15:109","nodeType":"YulTypedName","src":"8050:15:109","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8118:2:109","nodeType":"YulLiteral","src":"8118:2:109","type":"","value":"32"},{"name":"returndata","nativeSrc":"8122:10:109","nodeType":"YulIdentifier","src":"8122:10:109"}],"functionName":{"name":"add","nativeSrc":"8114:3:109","nodeType":"YulIdentifier","src":"8114:3:109"},"nativeSrc":"8114:19:109","nodeType":"YulFunctionCall","src":"8114:19:109"},{"name":"returndata_size","nativeSrc":"8135:15:109","nodeType":"YulIdentifier","src":"8135:15:109"}],"functionName":{"name":"revert","nativeSrc":"8107:6:109","nodeType":"YulIdentifier","src":"8107:6:109"},"nativeSrc":"8107:44:109","nodeType":"YulFunctionCall","src":"8107:44:109"},"nativeSrc":"8107:44:109","nodeType":"YulExpressionStatement","src":"8107:44:109"}]},"evmVersion":"cancun","externalReferences":[{"declaration":11472,"isOffset":false,"isSlot":false,"src":"8075:10:109","valueSize":1},{"declaration":11472,"isOffset":false,"isSlot":false,"src":"8122:10:109","valueSize":1}],"id":11487,"nodeType":"InlineAssembly","src":"8015:154:109"}]}}]},"id":11496,"nodeType":"IfStatement","src":"7736:516:109","trueBody":{"id":11482,"nodeType":"Block","src":"7749:42:109","statements":[{"expression":{"id":11480,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11472,"src":"7770:10:109","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11478,"id":11481,"nodeType":"Return","src":"7763:17:109"}]}}]},"documentation":{"id":11468,"nodeType":"StructuredDocumentation","src":"7352:209:109","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"id":11498,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7575:16:109","nodeType":"FunctionDefinition","parameters":{"id":11475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11470,"mutability":"mutable","name":"success","nameLocation":"7606:7:109","nodeType":"VariableDeclaration","scope":11498,"src":"7601:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11469,"name":"bool","nodeType":"ElementaryTypeName","src":"7601:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11472,"mutability":"mutable","name":"returndata","nameLocation":"7636:10:109","nodeType":"VariableDeclaration","scope":11498,"src":"7623:23:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11471,"name":"bytes","nodeType":"ElementaryTypeName","src":"7623:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11474,"mutability":"mutable","name":"errorMessage","nameLocation":"7670:12:109","nodeType":"VariableDeclaration","scope":11498,"src":"7656:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11473,"name":"string","nodeType":"ElementaryTypeName","src":"7656:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7591:97:109"},"returnParameters":{"id":11478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11498,"src":"7712:12:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11476,"name":"bytes","nodeType":"ElementaryTypeName","src":"7712:5:109","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7711:14:109"},"scope":11499,"src":"7566:692:109","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11500,"src":"199:8061:109","usedErrors":[],"usedEvents":[]}],"src":"106:8155:109"}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol":{"id":110,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol","exportedSymbols":{"Context":[11521]},"id":11522,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11501,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:110"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":11502,"nodeType":"StructuredDocumentation","src":"111:496:110","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":11521,"linearizedBaseContracts":[11521],"name":"Context","nameLocation":"626:7:110","nodeType":"ContractDefinition","nodes":[{"body":{"id":11510,"nodeType":"Block","src":"702:34:110","statements":[{"expression":{"expression":{"id":11507,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:110","memberName":"sender","nodeType":"MemberAccess","src":"719:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11506,"id":11509,"nodeType":"Return","src":"712:17:110"}]},"id":11511,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:110","nodeType":"FunctionDefinition","parameters":{"id":11503,"nodeType":"ParameterList","parameters":[],"src":"659:2:110"},"returnParameters":{"id":11506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11511,"src":"693:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11504,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:110"},"scope":11521,"src":"640:96:110","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":11519,"nodeType":"Block","src":"809:32:110","statements":[{"expression":{"expression":{"id":11516,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:110","memberName":"data","nodeType":"MemberAccess","src":"826:8:110","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":11515,"id":11518,"nodeType":"Return","src":"819:15:110"}]},"id":11520,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:110","nodeType":"FunctionDefinition","parameters":{"id":11512,"nodeType":"ParameterList","parameters":[],"src":"759:2:110"},"returnParameters":{"id":11515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11520,"src":"793:14:110","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11513,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:110"},"scope":11521,"src":"742:99:110","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":11522,"src":"608:235:110","usedErrors":[],"usedEvents":[]}],"src":"86:758:110"}},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"id":111,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[11581]},"id":11582,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11523,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"90:23:111"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":11524,"nodeType":"StructuredDocumentation","src":"115:1148:111","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"},"fullyImplemented":true,"id":11581,"linearizedBaseContracts":[11581],"name":"StorageSlot","nameLocation":"1272:11:111","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":11527,"members":[{"constant":false,"id":11526,"mutability":"mutable","name":"value","nameLocation":"1327:5:111","nodeType":"VariableDeclaration","scope":11527,"src":"1319:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11525,"name":"address","nodeType":"ElementaryTypeName","src":"1319:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1297:11:111","nodeType":"StructDefinition","scope":11581,"src":"1290:49:111","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":11530,"members":[{"constant":false,"id":11529,"mutability":"mutable","name":"value","nameLocation":"1379:5:111","nodeType":"VariableDeclaration","scope":11530,"src":"1374:10:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11528,"name":"bool","nodeType":"ElementaryTypeName","src":"1374:4:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1352:11:111","nodeType":"StructDefinition","scope":11581,"src":"1345:46:111","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":11533,"members":[{"constant":false,"id":11532,"mutability":"mutable","name":"value","nameLocation":"1434:5:111","nodeType":"VariableDeclaration","scope":11533,"src":"1426:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1426:7:111","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1404:11:111","nodeType":"StructDefinition","scope":11581,"src":"1397:49:111","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":11536,"members":[{"constant":false,"id":11535,"mutability":"mutable","name":"value","nameLocation":"1489:5:111","nodeType":"VariableDeclaration","scope":11536,"src":"1481:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1459:11:111","nodeType":"StructDefinition","scope":11581,"src":"1452:49:111","visibility":"public"},{"body":{"id":11546,"nodeType":"Block","src":"1683:63:111","statements":[{"AST":{"nativeSrc":"1702:38:111","nodeType":"YulBlock","src":"1702:38:111","statements":[{"nativeSrc":"1716:14:111","nodeType":"YulAssignment","src":"1716:14:111","value":{"name":"slot","nativeSrc":"1726:4:111","nodeType":"YulIdentifier","src":"1726:4:111"},"variableNames":[{"name":"r.slot","nativeSrc":"1716:6:111","nodeType":"YulIdentifier","src":"1716:6:111"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":11543,"isOffset":false,"isSlot":true,"src":"1716:6:111","suffix":"slot","valueSize":1},{"declaration":11539,"isOffset":false,"isSlot":false,"src":"1726:4:111","valueSize":1}],"id":11545,"nodeType":"InlineAssembly","src":"1693:47:111"}]},"documentation":{"id":11537,"nodeType":"StructuredDocumentation","src":"1507:87:111","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":11547,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1608:14:111","nodeType":"FunctionDefinition","parameters":{"id":11540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11539,"mutability":"mutable","name":"slot","nameLocation":"1631:4:111","nodeType":"VariableDeclaration","scope":11547,"src":"1623:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1623:7:111","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1622:14:111"},"returnParameters":{"id":11544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11543,"mutability":"mutable","name":"r","nameLocation":"1680:1:111","nodeType":"VariableDeclaration","scope":11547,"src":"1660:21:111","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":11542,"nodeType":"UserDefinedTypeName","pathNode":{"id":11541,"name":"AddressSlot","nameLocations":["1660:11:111"],"nodeType":"IdentifierPath","referencedDeclaration":11527,"src":"1660:11:111"},"referencedDeclaration":11527,"src":"1660:11:111","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$11527_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1659:23:111"},"scope":11581,"src":"1599:147:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11557,"nodeType":"Block","src":"1928:63:111","statements":[{"AST":{"nativeSrc":"1947:38:111","nodeType":"YulBlock","src":"1947:38:111","statements":[{"nativeSrc":"1961:14:111","nodeType":"YulAssignment","src":"1961:14:111","value":{"name":"slot","nativeSrc":"1971:4:111","nodeType":"YulIdentifier","src":"1971:4:111"},"variableNames":[{"name":"r.slot","nativeSrc":"1961:6:111","nodeType":"YulIdentifier","src":"1961:6:111"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":11554,"isOffset":false,"isSlot":true,"src":"1961:6:111","suffix":"slot","valueSize":1},{"declaration":11550,"isOffset":false,"isSlot":false,"src":"1971:4:111","valueSize":1}],"id":11556,"nodeType":"InlineAssembly","src":"1938:47:111"}]},"documentation":{"id":11548,"nodeType":"StructuredDocumentation","src":"1752:87:111","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":11558,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1853:14:111","nodeType":"FunctionDefinition","parameters":{"id":11551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11550,"mutability":"mutable","name":"slot","nameLocation":"1876:4:111","nodeType":"VariableDeclaration","scope":11558,"src":"1868:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1868:7:111","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1867:14:111"},"returnParameters":{"id":11555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11554,"mutability":"mutable","name":"r","nameLocation":"1925:1:111","nodeType":"VariableDeclaration","scope":11558,"src":"1905:21:111","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$11530_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":11553,"nodeType":"UserDefinedTypeName","pathNode":{"id":11552,"name":"BooleanSlot","nameLocations":["1905:11:111"],"nodeType":"IdentifierPath","referencedDeclaration":11530,"src":"1905:11:111"},"referencedDeclaration":11530,"src":"1905:11:111","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$11530_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"1904:23:111"},"scope":11581,"src":"1844:147:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11568,"nodeType":"Block","src":"2173:63:111","statements":[{"AST":{"nativeSrc":"2192:38:111","nodeType":"YulBlock","src":"2192:38:111","statements":[{"nativeSrc":"2206:14:111","nodeType":"YulAssignment","src":"2206:14:111","value":{"name":"slot","nativeSrc":"2216:4:111","nodeType":"YulIdentifier","src":"2216:4:111"},"variableNames":[{"name":"r.slot","nativeSrc":"2206:6:111","nodeType":"YulIdentifier","src":"2206:6:111"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":11565,"isOffset":false,"isSlot":true,"src":"2206:6:111","suffix":"slot","valueSize":1},{"declaration":11561,"isOffset":false,"isSlot":false,"src":"2216:4:111","valueSize":1}],"id":11567,"nodeType":"InlineAssembly","src":"2183:47:111"}]},"documentation":{"id":11559,"nodeType":"StructuredDocumentation","src":"1997:87:111","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":11569,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2098:14:111","nodeType":"FunctionDefinition","parameters":{"id":11562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11561,"mutability":"mutable","name":"slot","nameLocation":"2121:4:111","nodeType":"VariableDeclaration","scope":11569,"src":"2113:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2113:7:111","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2112:14:111"},"returnParameters":{"id":11566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11565,"mutability":"mutable","name":"r","nameLocation":"2170:1:111","nodeType":"VariableDeclaration","scope":11569,"src":"2150:21:111","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$11533_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":11564,"nodeType":"UserDefinedTypeName","pathNode":{"id":11563,"name":"Bytes32Slot","nameLocations":["2150:11:111"],"nodeType":"IdentifierPath","referencedDeclaration":11533,"src":"2150:11:111"},"referencedDeclaration":11533,"src":"2150:11:111","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$11533_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2149:23:111"},"scope":11581,"src":"2089:147:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11579,"nodeType":"Block","src":"2418:63:111","statements":[{"AST":{"nativeSrc":"2437:38:111","nodeType":"YulBlock","src":"2437:38:111","statements":[{"nativeSrc":"2451:14:111","nodeType":"YulAssignment","src":"2451:14:111","value":{"name":"slot","nativeSrc":"2461:4:111","nodeType":"YulIdentifier","src":"2461:4:111"},"variableNames":[{"name":"r.slot","nativeSrc":"2451:6:111","nodeType":"YulIdentifier","src":"2451:6:111"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":11576,"isOffset":false,"isSlot":true,"src":"2451:6:111","suffix":"slot","valueSize":1},{"declaration":11572,"isOffset":false,"isSlot":false,"src":"2461:4:111","valueSize":1}],"id":11578,"nodeType":"InlineAssembly","src":"2428:47:111"}]},"documentation":{"id":11570,"nodeType":"StructuredDocumentation","src":"2242:87:111","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":11580,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2343:14:111","nodeType":"FunctionDefinition","parameters":{"id":11573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11572,"mutability":"mutable","name":"slot","nameLocation":"2366:4:111","nodeType":"VariableDeclaration","scope":11580,"src":"2358:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2358:7:111","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2357:14:111"},"returnParameters":{"id":11577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11576,"mutability":"mutable","name":"r","nameLocation":"2415:1:111","nodeType":"VariableDeclaration","scope":11580,"src":"2395:21:111","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$11536_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":11575,"nodeType":"UserDefinedTypeName","pathNode":{"id":11574,"name":"Uint256Slot","nameLocations":["2395:11:111"],"nodeType":"IdentifierPath","referencedDeclaration":11536,"src":"2395:11:111"},"referencedDeclaration":11536,"src":"2395:11:111","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$11536_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2394:23:111"},"scope":11581,"src":"2334:147:111","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11582,"src":"1264:1219:111","usedErrors":[],"usedEvents":[]}],"src":"90:2394:111"}},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"id":112,"ast":{"absolutePath":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[11499],"ERC1967Proxy":[10515],"ERC1967Upgrade":[10833],"IBeacon":[10895],"IERC1822Proxiable":[10462],"OptimizedTransparentUpgradeableProxy":[11756],"Proxy":[10885],"StorageSlot":[11581]},"id":11757,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11583,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:112"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","file":"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","id":11584,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11757,"sourceUnit":10516,"src":"143:56:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11586,"name":"ERC1967Proxy","nameLocations":["1702:12:112"],"nodeType":"IdentifierPath","referencedDeclaration":10515,"src":"1702:12:112"},"id":11587,"nodeType":"InheritanceSpecifier","src":"1702:12:112"}],"canonicalName":"OptimizedTransparentUpgradeableProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":11585,"nodeType":"StructuredDocumentation","src":"201:1451:112","text":" @dev This contract implements a proxy that is upgradeable by an admin.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches one of the admin functions exposed by the proxy itself.\n 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n \"admin cannot fallback to proxy target\".\n These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n to sudden errors when trying to call a function from the proxy implementation.\n Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy."},"fullyImplemented":true,"id":11756,"linearizedBaseContracts":[11756,10515,10833,10885],"name":"OptimizedTransparentUpgradeableProxy","nameLocation":"1662:36:112","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":11589,"mutability":"immutable","name":"_ADMIN","nameLocation":"1748:6:112","nodeType":"VariableDeclaration","scope":11756,"src":"1721:33:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11588,"name":"address","nodeType":"ElementaryTypeName","src":"1721:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":11636,"nodeType":"Block","src":"2106:369:112","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":11604,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"2123:11:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e61646d696e","id":11610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2164:21:112","typeDescriptions":{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""},"value":"eip1967.proxy.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""}],"id":11609,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2154:9:112","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:32:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":11608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2146:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11607,"name":"uint256","nodeType":"ElementaryTypeName","src":"2146:7:112","typeDescriptions":{}}},"id":11612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2146:41:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2190:1:112","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2146:45:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2138:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":11605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2138:7:112","typeDescriptions":{}}},"id":11615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:54:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2123:69:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11603,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2116:6:112","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2116:77:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11618,"nodeType":"ExpressionStatement","src":"2116:77:112"},{"expression":{"id":11621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11619,"name":"_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"2203:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11620,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11594,"src":"2212:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2203:15:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11622,"nodeType":"ExpressionStatement","src":"2203:15:112"},{"assignments":[11624],"declarations":[{"constant":false,"id":11624,"mutability":"mutable","name":"slot","nameLocation":"2285:4:112","nodeType":"VariableDeclaration","scope":11636,"src":"2277:12:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11623,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2277:7:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":11626,"initialValue":{"id":11625,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"2292:11:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2277:26:112"},{"AST":{"nativeSrc":"2378:44:112","nodeType":"YulBlock","src":"2378:44:112","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"2399:4:112","nodeType":"YulIdentifier","src":"2399:4:112"},{"name":"admin_","nativeSrc":"2405:6:112","nodeType":"YulIdentifier","src":"2405:6:112"}],"functionName":{"name":"sstore","nativeSrc":"2392:6:112","nodeType":"YulIdentifier","src":"2392:6:112"},"nativeSrc":"2392:20:112","nodeType":"YulFunctionCall","src":"2392:20:112"},"nativeSrc":"2392:20:112","nodeType":"YulExpressionStatement","src":"2392:20:112"}]},"evmVersion":"cancun","externalReferences":[{"declaration":11594,"isOffset":false,"isSlot":false,"src":"2405:6:112","valueSize":1},{"declaration":11624,"isOffset":false,"isSlot":false,"src":"2399:4:112","valueSize":1}],"id":11627,"nodeType":"InlineAssembly","src":"2369:53:112"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2457:1:112","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":11630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2449:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11629,"name":"address","nodeType":"ElementaryTypeName","src":"2449:7:112","typeDescriptions":{}}},"id":11632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:10:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11633,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11594,"src":"2461:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11628,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10680,"src":"2436:12:112","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2436:32:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11635,"nodeType":"EmitStatement","src":"2431:37:112"}]},"documentation":{"id":11590,"nodeType":"StructuredDocumentation","src":"1761:210:112","text":" @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"id":11637,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11599,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11592,"src":"2091:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11600,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"2099:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11601,"kind":"baseConstructorSpecifier","modifierName":{"id":11598,"name":"ERC1967Proxy","nameLocations":["2078:12:112"],"nodeType":"IdentifierPath","referencedDeclaration":10515,"src":"2078:12:112"},"nodeType":"ModifierInvocation","src":"2078:27:112"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11592,"mutability":"mutable","name":"_logic","nameLocation":"2005:6:112","nodeType":"VariableDeclaration","scope":11637,"src":"1997:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11591,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11594,"mutability":"mutable","name":"admin_","nameLocation":"2029:6:112","nodeType":"VariableDeclaration","scope":11637,"src":"2021:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11593,"name":"address","nodeType":"ElementaryTypeName","src":"2021:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11596,"mutability":"mutable","name":"_data","nameLocation":"2058:5:112","nodeType":"VariableDeclaration","scope":11637,"src":"2045:18:112","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11595,"name":"bytes","nodeType":"ElementaryTypeName","src":"2045:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1987:82:112"},"returnParameters":{"id":11602,"nodeType":"ParameterList","parameters":[],"src":"2106:0:112"},"scope":11756,"src":"1976:499:112","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":11652,"nodeType":"Block","src":"2635:115:112","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11640,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2649:3:112","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2653:6:112","memberName":"sender","nodeType":"MemberAccess","src":"2649:10:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11642,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[11755],"referencedDeclaration":11755,"src":"2663:9:112","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2663:11:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2649:25:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11650,"nodeType":"Block","src":"2708:36:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11647,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10863,"src":"2722:9:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2722:11:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11649,"nodeType":"ExpressionStatement","src":"2722:11:112"}]},"id":11651,"nodeType":"IfStatement","src":"2645:99:112","trueBody":{"id":11646,"nodeType":"Block","src":"2676:26:112","statements":[{"id":11645,"nodeType":"PlaceholderStatement","src":"2690:1:112"}]}}]},"documentation":{"id":11638,"nodeType":"StructuredDocumentation","src":"2481:130:112","text":" @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin."},"id":11653,"name":"ifAdmin","nameLocation":"2625:7:112","nodeType":"ModifierDefinition","parameters":{"id":11639,"nodeType":"ParameterList","parameters":[],"src":"2632:2:112"},"src":"2616:134:112","virtual":false,"visibility":"internal"},{"body":{"id":11666,"nodeType":"Block","src":"3251:37:112","statements":[{"expression":{"id":11664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11661,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11659,"src":"3261:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":11662,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[11755],"referencedDeclaration":11755,"src":"3270:9:112","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3270:11:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3261:20:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11665,"nodeType":"ExpressionStatement","src":"3261:20:112"}]},"documentation":{"id":11654,"nodeType":"StructuredDocumentation","src":"2756:431:112","text":" @dev Returns the current admin.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"functionSelector":"f851a440","id":11667,"implemented":true,"kind":"function","modifiers":[{"id":11657,"kind":"modifierInvocation","modifierName":{"id":11656,"name":"ifAdmin","nameLocations":["3218:7:112"],"nodeType":"IdentifierPath","referencedDeclaration":11653,"src":"3218:7:112"},"nodeType":"ModifierInvocation","src":"3218:7:112"}],"name":"admin","nameLocation":"3201:5:112","nodeType":"FunctionDefinition","parameters":{"id":11655,"nodeType":"ParameterList","parameters":[],"src":"3206:2:112"},"returnParameters":{"id":11660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11659,"mutability":"mutable","name":"admin_","nameLocation":"3243:6:112","nodeType":"VariableDeclaration","scope":11667,"src":"3235:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11658,"name":"address","nodeType":"ElementaryTypeName","src":"3235:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3234:16:112"},"scope":11756,"src":"3192:96:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11680,"nodeType":"Block","src":"3825:52:112","statements":[{"expression":{"id":11678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11675,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11673,"src":"3835:15:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":11676,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[10514],"referencedDeclaration":10514,"src":"3853:15:112","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3853:17:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3835:35:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11679,"nodeType":"ExpressionStatement","src":"3835:35:112"}]},"documentation":{"id":11668,"nodeType":"StructuredDocumentation","src":"3294:449:112","text":" @dev Returns the current implementation.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"functionSelector":"5c60da1b","id":11681,"implemented":true,"kind":"function","modifiers":[{"id":11671,"kind":"modifierInvocation","modifierName":{"id":11670,"name":"ifAdmin","nameLocations":["3783:7:112"],"nodeType":"IdentifierPath","referencedDeclaration":11653,"src":"3783:7:112"},"nodeType":"ModifierInvocation","src":"3783:7:112"}],"name":"implementation","nameLocation":"3757:14:112","nodeType":"FunctionDefinition","parameters":{"id":11669,"nodeType":"ParameterList","parameters":[],"src":"3771:2:112"},"returnParameters":{"id":11674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11673,"mutability":"mutable","name":"implementation_","nameLocation":"3808:15:112","nodeType":"VariableDeclaration","scope":11681,"src":"3800:23:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11672,"name":"address","nodeType":"ElementaryTypeName","src":"3800:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3799:25:112"},"scope":11756,"src":"3748:129:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11698,"nodeType":"Block","src":"4100:71:112","statements":[{"expression":{"arguments":[{"id":11690,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"4128:17:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"","id":11693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4153:2:112","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":11692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4147:5:112","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":11691,"name":"bytes","nodeType":"ElementaryTypeName","src":"4147:5:112","typeDescriptions":{}}},"id":11694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4147:9:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":11695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4158:5:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11689,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"4110:17:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":11696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:54:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11697,"nodeType":"ExpressionStatement","src":"4110:54:112"}]},"documentation":{"id":11682,"nodeType":"StructuredDocumentation","src":"3883:149:112","text":" @dev Upgrade the implementation of the proxy.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"functionSelector":"3659cfe6","id":11699,"implemented":true,"kind":"function","modifiers":[{"id":11687,"kind":"modifierInvocation","modifierName":{"id":11686,"name":"ifAdmin","nameLocations":["4092:7:112"],"nodeType":"IdentifierPath","referencedDeclaration":11653,"src":"4092:7:112"},"nodeType":"ModifierInvocation","src":"4092:7:112"}],"name":"upgradeTo","nameLocation":"4046:9:112","nodeType":"FunctionDefinition","parameters":{"id":11685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11684,"mutability":"mutable","name":"newImplementation","nameLocation":"4064:17:112","nodeType":"VariableDeclaration","scope":11699,"src":"4056:25:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11683,"name":"address","nodeType":"ElementaryTypeName","src":"4056:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4055:27:112"},"returnParameters":{"id":11688,"nodeType":"ParameterList","parameters":[],"src":"4100:0:112"},"scope":11756,"src":"4037:134:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11715,"nodeType":"Block","src":"4646:65:112","statements":[{"expression":{"arguments":[{"id":11710,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11702,"src":"4674:17:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11711,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11704,"src":"4693:4:112","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"74727565","id":11712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4699:4:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11709,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"4656:17:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":11713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4656:48:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11714,"nodeType":"ExpressionStatement","src":"4656:48:112"}]},"documentation":{"id":11700,"nodeType":"StructuredDocumentation","src":"4177:365:112","text":" @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n proxied contract.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."},"functionSelector":"4f1ef286","id":11716,"implemented":true,"kind":"function","modifiers":[{"id":11707,"kind":"modifierInvocation","modifierName":{"id":11706,"name":"ifAdmin","nameLocations":["4638:7:112"],"nodeType":"IdentifierPath","referencedDeclaration":11653,"src":"4638:7:112"},"nodeType":"ModifierInvocation","src":"4638:7:112"}],"name":"upgradeToAndCall","nameLocation":"4556:16:112","nodeType":"FunctionDefinition","parameters":{"id":11705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11702,"mutability":"mutable","name":"newImplementation","nameLocation":"4581:17:112","nodeType":"VariableDeclaration","scope":11716,"src":"4573:25:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11701,"name":"address","nodeType":"ElementaryTypeName","src":"4573:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11704,"mutability":"mutable","name":"data","nameLocation":"4615:4:112","nodeType":"VariableDeclaration","scope":11716,"src":"4600:19:112","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11703,"name":"bytes","nodeType":"ElementaryTypeName","src":"4600:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4572:48:112"},"returnParameters":{"id":11708,"nodeType":"ParameterList","parameters":[],"src":"4646:0:112"},"scope":11756,"src":"4547:164:112","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11725,"nodeType":"Block","src":"4830:35:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11722,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[11755],"referencedDeclaration":11755,"src":"4847:9:112","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4847:11:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11721,"id":11724,"nodeType":"Return","src":"4840:18:112"}]},"documentation":{"id":11717,"nodeType":"StructuredDocumentation","src":"4717:50:112","text":" @dev Returns the current admin."},"id":11726,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nameLocation":"4781:6:112","nodeType":"FunctionDefinition","parameters":{"id":11718,"nodeType":"ParameterList","parameters":[],"src":"4787:2:112"},"returnParameters":{"id":11721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11726,"src":"4821:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11719,"name":"address","nodeType":"ElementaryTypeName","src":"4821:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4820:9:112"},"scope":11756,"src":"4772:93:112","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[10884],"body":{"id":11745,"nodeType":"Block","src":"5039:154:112","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11732,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5057:3:112","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5061:6:112","memberName":"sender","nodeType":"MemberAccess","src":"5057:10:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11734,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[11755],"referencedDeclaration":11755,"src":"5071:9:112","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5071:11:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5057:25:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","id":11737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5084:68:112","typeDescriptions":{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"id":11731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5049:7:112","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5049:104:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11739,"nodeType":"ExpressionStatement","src":"5049:104:112"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11740,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5163:5:112","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OptimizedTransparentUpgradeableProxy_$11756_$","typeString":"type(contract super OptimizedTransparentUpgradeableProxy)"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5169:15:112","memberName":"_beforeFallback","nodeType":"MemberAccess","referencedDeclaration":10884,"src":"5163:21:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5163:23:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11744,"nodeType":"ExpressionStatement","src":"5163:23:112"}]},"documentation":{"id":11727,"nodeType":"StructuredDocumentation","src":"4871:110:112","text":" @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}."},"id":11746,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"4995:15:112","nodeType":"FunctionDefinition","overrides":{"id":11729,"nodeType":"OverrideSpecifier","overrides":[],"src":"5030:8:112"},"parameters":{"id":11728,"nodeType":"ParameterList","parameters":[],"src":"5010:2:112"},"returnParameters":{"id":11730,"nodeType":"ParameterList","parameters":[],"src":"5039:0:112"},"scope":11756,"src":"4986:207:112","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[10693],"body":{"id":11754,"nodeType":"Block","src":"5269:30:112","statements":[{"expression":{"id":11752,"name":"_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"5286:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11751,"id":11753,"nodeType":"Return","src":"5279:13:112"}]},"id":11755,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"5208:9:112","nodeType":"FunctionDefinition","overrides":{"id":11748,"nodeType":"OverrideSpecifier","overrides":[],"src":"5242:8:112"},"parameters":{"id":11747,"nodeType":"ParameterList","parameters":[],"src":"5217:2:112"},"returnParameters":{"id":11751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11755,"src":"5260:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11749,"name":"address","nodeType":"ElementaryTypeName","src":"5260:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5259:9:112"},"scope":11756,"src":"5199:100:112","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":11757,"src":"1653:3648:112","usedErrors":[],"usedEvents":[10534,10680,10745]}],"src":"118:5184:112"}}},"contracts":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol":{"AggregatorInterface":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"int256\",\"name\":\"current\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"AnswerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"startedBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"}],\"name\":\"NewRound\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":\"AggregatorInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getAnswer(uint256)":"b5ab58dc","getTimestamp(uint256)":"b633620c","latestAnswer()":"50d25bcd","latestRound()":"668a0f02","latestTimestamp()":"8205bf6a"}}}},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol":{"AggregatorV2V3Interface":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"int256\",\"name\":\"current\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"AnswerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"startedBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"}],\"name\":\"NewRound\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":\"AggregatorV2V3Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getAnswer(uint256)":"b5ab58dc","getRoundData(uint80)":"9a6fc8f5","getTimestamp(uint256)":"b633620c","latestAnswer()":"50d25bcd","latestRound()":"668a0f02","latestRoundData()":"feaf968c","latestTimestamp()":"8205bf6a","version()":"54fd4d50"}}}},"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"AggregatorV3Interface":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":\"AggregatorV3Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getRoundData(uint80)":"9a6fc8f5","latestRoundData()":"feaf968c","version()":"54fd4d50"}}}},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"Ownable2StepUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":\"Ownable2StepUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]}},\"version\":1}","devdoc":{"details":"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]}},\"version\":1}","devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"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] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","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] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol":{"PausableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0xad32f6821f860555f9530902a65b54203a4f5db2117f4384ae47a124958078db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d362da7417bc7d7cc8623f3d3f8f04c3808d043ee6379568c63a63ec14a124e\",\"dweb:/ipfs/QmYm3wDHUcfGh3MNiRqpWEBbSSYnDSyUsppDATy5DVsfui\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]}},\"version\":1}","devdoc":{"details":"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"paused()":{"details":"Returns true if the contract is paused, and false otherwise."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:PausableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:PausableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:PausableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":533,"contract":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:PausableUpgradeable","label":"_paused","offset":0,"slot":"51","type":"t_bool"},{"astId":638,"contract":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:PausableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{"paused()":"5c975abb"}}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]}},\"version\":1}","devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]}},\"version\":1}","devdoc":{"details":"External interface of AccessControl declared to support ERC165 detection.","events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]}},\"version\":1}","devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"@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"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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. _Available since v4.8.3._\",\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]}},\"version\":1}","devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","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},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]}},\"version\":1}","devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"proxiableUUID()":"52d1902d"}}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"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\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","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":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0002000000000002000400000000000200000000030100190000006003300270000000960330019700010000003103550000000100200190000000210000c13d000000000431034f0000008002000039000000400020043f0000009d02000041000000000202041a0000009802200197000000000003004b0000006c0000c13d0000000001000414000000040020008c000000a10000c13d00000000030000310000001f0230018f00000005013002720000001e0000613d0000000505100210000000000604034f0000000007000019000000006806043c0000000007870436000000000057004b0000001a0000c13d000000000002004b000000940000c13d000000eb0000013d0000001f0230003900000097022001970000008002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000300000613d00000080050000390000008006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003e0000613d000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000400030008c0000006a0000413d000000800900043d000000980090009c0000006a0000213d000000a00200043d000000990020009c0000006a0000213d0000001f01200039000000000031004b00000000040000190000009a040080410000009a01100197000000000001004b00000000050000190000009a050040410000009a0010009c000000000504c019000000000005004b0000006a0000c13d00000080012000390000000001010433000000990010009c000001b80000213d0000001f04100039000000ad044001970000003f04400039000000ad04400197000000400700043d0000000004470019000000000074004b00000000050000190000000105004039000000990040009c000001b80000213d0000000100500190000001b80000c13d0000008003300039000000400040043f000000000a170436000000a0022000390000000004210019000000000034004b000000f10000a13d000000000100001900000253000104300000001f0630018f0000000505300272000000760000613d0000000507500210000000000801034f0000000009000019000000008a08043c0000000009a90436000000000079004b000000720000c13d000000000006004b000000840000613d00000003066002100000000505500210000000000705043300000000076701cf000000000767022f000000000151034f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000000001000414000000040020008c000000c60000c13d00000000030000310000001f0230018f0000000501300272000000920000613d0000000505100210000000000604034f0000000007000019000000006806043c0000000007870436000000000057004b0000008e0000c13d000000000002004b000000eb0000613d00000003022002100000000501100210000000000501043300000000052501cf000000000525022f000000000414034f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f0000000000210435000000eb0000013d000000960010009c0000009601008041000000c0011002100251024c0000040f0001000000010355000000000301001900000060033002700000001f0430018f000000960030019d00000096033001970000000505300272000000b40000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000000b00000c13d000000000004004b000000c20000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000151034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000000100200190000000eb0000c13d000000600130021000000253000104300000006003300210000000960010009c0000009601008041000000c001100210000000000131019f0251024c0000040f0001000000010355000000000301001900000060033002700000001f0430018f000000960030019d00000096033001970000000505300272000000db0000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000000d70000c13d000000000004004b000000e90000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000151034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000000100200190000000ef0000613d000000960030009c00000096030080410000006001300210000002520001042e00000060013002100000025300010430000300000007001d000000ad041001970000001f0310018f0000000000a2004b000001060000813d000000000004004b000001020000613d000000000632001900000000053a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000000fc0000c13d000000000003004b000001200000613d00000000050a0019000001160000013d000000000004004b000001120000613d000000200540008a000000ad055001970000000005a500190000002005500039000000000602001900000000070a001900000000680604340000000007870436000000000057004b0000010e0000c13d000000000003004b000001200000613d00000000054a001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f000000000025043500020000000a001d00000000011a001900000000000104350000009b010000410000000000100439000400000009001d00000004009004430000000001000414000000960010009c0000009601008041000000c0011002100000009c011001c70000800202000039025102470000040f0000000100200190000002100000613d000000000101043b000000000001004b000001470000c13d000000400100043d0000006402100039000000a80300004100000000003204350000004402100039000000a903000041000000000032043500000024021000390000002d030000390000000000320435000000a5020000410000000000210435000000040210003900000020030000390000000000320435000000960010009c00000096010080410000004001100210000000aa011001c70000025300010430000000040100002900000098051001970000009d01000041000000000201041a0000009e02200197000000000252019f000000000021041b0000000001000414000000960010009c0000009601008041000000c0011002100000009f011001c70000800d020000390000000203000039000000a004000041025102420000040f00000004050000290000000100200190000000200300008a000000030400002900000002060000290000006a0000613d0000000001040433000000000001004b000001650000c13d000000200100003900000100001004430000012000000443000000a701000041000002520001042e000000400700043d000000a10070009c000001b80000213d0000006001700039000000400010043f0000004001700039000000a202000041000000000021043500000027010000390000000002170436000000a301000041000100000002001d000000000012043500000000020404330000000001000414000000040050008c000001790000c13d000000010200003900000000040000310000018f0000013d000000960060009c00000096060080410000004003600210000000960020009c00000096020080410000006002200210000000000232019f000000960010009c0000009601008041000000c001100210000000000112019f0000000002050019000300000007001d0251024c0000040f00000003070000290000000405000029000000200300008a000000010220018f00010000000103550000006001100270000000960010019d0000009604100197000000000004004b000001b60000c13d000000600100003900000080030000390000000001010433000000000002004b000001ee0000c13d000000000001004b000002110000c13d000000400100043d000000a5020000410000000000210435000000040210003900000020030000390000000000320435000000000207043300000024031000390000000000230435000000ad052001970000001f0420018f0000004403100039000000010030006b000002190000813d000000000005004b000001b20000613d00000001074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000001ac0000c13d000000000004004b000002340000613d0000000006030019000002290000013d000000990040009c000001be0000a13d000000ab0100004100000000001004350000004101000039000000040010043f000000ac0100004100000253000104300000001f01400039000000000131016f0000003f01100039000000000331016f000000400100043d0000000003310019000000000013004b00000000050000190000000105004039000000990030009c000001b80000213d0000000100500190000001b80000c13d000000000b070019000000400030043f0000001f0540018f000000000341043600000001060003670000000504400272000001da0000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000001d60000c13d000000000005004b000001e90000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000040500002900000000070b00190000000001010433000000000002004b000001960000613d000000000001004b000001600000c13d0000009b01000041000000000010043900000004005004430000000001000414000000960010009c0000009601008041000000c0011002100000009c011001c70000800202000039025102470000040f0000000100200190000002100000613d000000000101043b000000000001004b000001600000c13d000000400100043d0000004402100039000000a403000041000000000032043500000024021000390000001d030000390000000000320435000000a5020000410000000000210435000000040210003900000020030000390000000000320435000000960010009c00000096010080410000004001100210000000a6011001c70000025300010430000000000001042f000000960030009c00000096030080410000004002300210000000960010009c00000096010080410000006001100210000000000121019f0000025300010430000000000005004b000002250000613d000000200650008a000000ad06600197000000000636001900000020066000390000000107000029000000000803001900000000790704340000000008980436000000000068004b000002210000c13d000000000004004b000002340000613d0000000006530019000100010050002d0000000304400210000000000506043300000000054501cf000000000545022f000000010700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f04200039000000ad04400197000000000232001900000000000204350000004402400039000000960020009c00000096020080410000006002200210000000960010009c00000096010080410000004001100210000000000112019f0000025300010430000000000001042f00000245002104210000000102000039000000000001042d0000000002000019000000000001042d0000024a002104230000000102000039000000000001042d0000000002000019000000000001042d0000024f002104250000000102000039000000000001042d0000000002000019000000000001042d0000025100000432000002520001042e0000025300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000008c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000002000000000000000000000000000000400000010000000000000000006f74206120636f6e747261637400000000000000000000000000000000000000455243313936373a206e657720696d706c656d656e746174696f6e206973206e00000000000000000000000000000000000000840000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"010000afed89899e1cb8c4648ae3f18ca7dc679f3c53e147b6a6ce8c97c61ab5","factoryDependencies":{}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"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"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_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, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_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, and is validated in the constructor."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]}},\"version\":1}","devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol":{"BeaconProxy":{"abi":[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't conflict with the storage layout of the implementation behind the proxy. _Available since v3.4._\",\"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\":{\"constructor\":{\"details\":\"Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":\"BeaconProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't conflict with the storage layout of the implementation behind the proxy. _Available since v3.4._","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":{"constructor":{"details":"Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0004000000000002000500000000000200000000030100190000006003300270000000f80030019d000000f8033001970003000000310355000200000001035500000001002001900000001c0000c13d000000000131034f0000008002000039000000400020043f0000010002000041000000000202041a000000fe04000041000000800040043f000000fa02200197000000000003004b0000004e0000c13d0000000003000414000000040020008c000000560000c13d0000000103000031000000200030008c000000200400003900000000040340190000007d0000013d0000001f02300039000000f9022001970000008002200039000000400020043f0000001f0230018f000000050430027200000005044002100000002b0000613d00000080050000390000008006400039000000000701034f000000007807043c0000000005850436000000000065004b000000270000c13d000000000002004b000000390000613d000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000400030008c000000e00000413d000000800a00043d000000fa00a0009c000000e00000213d000000a00200043d000000fb0020009c000000e00000213d0000001f01200039000000000031004b000000e00000813d00000080012000390000000001010433000000fb0010009c000001470000a13d000001120100004100000000001004350000004101000039000000040010043f0000011301000041000003de000104300000000003000414000000040020008c000000b00000c13d0000000103000031000000200030008c00000020040000390000000004034019000000d70000013d000000f80030009c000000f803008041000000c00130021000000114011001c703dc03d20000040f00000000030100190000006003300270000000f803300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000006a0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000000660000c13d000000000005004b000000790000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000100200190000000e20000613d0000001f02400039000000600220018f00000080022001bf000000400020043f000000200030008c000000e00000413d000000800200043d000000fa0020009c000000e00000213d000000020500036700000000040000310000001f0740018f0000000506400272000000920000613d0000000508600210000000000905034f000000000a000019000000009b09043c000000000aba043600000000008a004b0000008e0000c13d000000000007004b000000a00000613d00000003077002100000000506600210000000000806043300000000087801cf000000000878022f000000000565034f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000005000414000000040020008c000001700000c13d0000001f0430018f00000005023002720000000502200210000000ad0000613d000000000501034f0000000006000019000000005705043c0000000006760436000000000026004b000000a90000c13d000000000004004b000001bd0000613d0000013b0000013d000000f80030009c000000f803008041000000c00130021000000114011001c703dc03d20000040f000000800900003900000000030100190000006003300270000000f803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000c40000613d000000000701034f000000007807043c0000000009890436000000a00090008c000000c00000c13d000000000005004b000000d30000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000100200190000000f10000613d0000001f02400039000000600220018f00000080022001bf000000400020043f000000200030008c000000e00000413d000000800200043d000000fa0020009c000001120000a13d0000000001000019000003de00010430000000400200043d0000001f0430018f0000000505300272000000ee0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000000ea0000c13d000000000004004b0000010c0000613d000000ff0000013d000000400200043d0000001f0430018f0000000505300272000000fd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000000f90000c13d000000000004004b0000010c0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000000f80020009c000000f8020080410000004002200210000000000112019f000003de00010430000000020500036700000000040000310000001f0740018f00000005064002720000011e0000613d0000000508600210000000000905034f000000000a000019000000009b09043c000000000aba043600000000008a004b0000011a0000c13d000000000007004b0000012c0000613d00000003077002100000000506600210000000000806043300000000087801cf000000000878022f000000000565034f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000005000414000000040020008c000001970000c13d0000001f0430018f00000005023002720000000502200210000001390000613d000000000501034f0000000006000019000000005705043c0000000006760436000000000026004b000001350000c13d000000000004004b000001bd0000613d0000000304400210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000001bd0000013d0000001f0410003900000115044001970000003f044000390000011504400197000000400700043d0000000004470019000000000074004b00000000050000190000000105004039000000fb0040009c000000480000213d0000000100500190000000480000c13d0000008003300039000000400040043f0000000009170436000000a0022000390000000004210019000000000034004b000000e00000213d000400000007001d00000115041001970000001f0310018f000000000092004b000001c30000813d000000000004004b0000016c0000613d00000000063200190000000005390019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000001660000c13d000000000003004b000001dd0000613d0000000005090019000001d30000013d000000f80040009c000000f8040080410000006001400210000000f80050009c000000f805008041000000c003500210000000000113019f03dc03d70000040f0003000000010355000000000301001900000060033002700000001f0530018f000100f80030019d000000f80330019700000005043002720000000504400210000001870000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000001830000c13d000000000005004b000001940000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000001bd0000c13d000001c10000013d000000f80040009c000000f8040080410000006001400210000000f80050009c000000f805008041000000c003500210000000000113019f03dc03d70000040f0003000000010355000000000301001900000060033002700000001f0530018f000100f80030019d000000f80330019700000005043002720000000504400210000001ae0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000001aa0000c13d000000000005004b000001bb0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000001c10000613d000000f80030009c000000f8030080410000006001300210000003dd0001042e0000006001300210000003de00010430000000000004004b000001cf0000613d000000200540008a0000011505500197000000000595001900000020055000390000000006020019000000000709001900000000680604340000000007870436000000000057004b000001cb0000c13d000000000003004b000001dd0000613d000000000549001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00000000011900190000000000010435000000fc01000041000000000010043900050000000a001d0000000400a004430000000001000414000000f80010009c000000f801008041000000c001100210000000fd011001c7000080020200003903dc03d20000040f00000001002001900000039b0000613d000000400a00043d000000000101043b000000000001004b000002040000c13d0000006401a00039000001100200004100000000002104350000004401a00039000001110200004100000000002104350000002401a00039000000250200003900000000002104350000010a0100004100000000001a04350000000401a0003900000020020000390000000000210435000000f800a0009c000000f80a0080410000004001a002100000010f011001c7000003de00010430000000fe0100004100000000041a043600000000010004140000000502000029000000040020008c0000020f0000c13d0000000103000031000000200030008c000000200400003900000000040340190000023f0000013d000000f800a0009c000000f80300004100000000030a40190000004003300210000000f80010009c000000f801008041000000c001100210000000000131019f000000ff011001c700020000000a001d000100000004001d03dc03d20000040f000000010b000029000000020a00002900000000030100190000006003300270000000f803300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000022c0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002280000c13d000000000005004b0000023b0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000100200190000002740000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000000fb0010009c000000480000213d0000000100200190000000480000c13d000000400010043f000000200030008c000000e00000413d00000000010a0433000000fa0010009c000000e00000213d000000fc02000041000000000020043900000004001004430000000001000414000000f80010009c000000f801008041000000c001100210000000fd011001c7000080020200003903dc03d20000040f00000001002001900000039b0000613d000000400200043d000200000002001d000000000101043b000000000001004b000002830000c13d000000020300002900000064013000390000010d02000041000000000021043500000044013000390000010e0200004100000000002104350000002401300039000000300200003900000000002104350000010a010000410000000000130435000000040130003900000020020000390000000000210435000000f80030009c000000f80300804100000040013002100000010f011001c7000003de00010430000000400200043d0000001f0430018f00000005053002720000000505500210000002800000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000027c0000c13d000000000004004b000001000000c13d0000010c0000013d0000010001000041000000000201041a00000101022001970000000505000029000000000252019f000000000021041b0000000001000414000000f80010009c000000f801008041000000c00110021000000102011001c70000800d020000390000000203000039000001030400004103dc03cd0000040f00000001002001900000000401000029000000e00000613d0000000001010433000000000001004b0000029d0000c13d0000002001000039000001000010044300000120000004430000010c01000041000003dd0001042e000000fe0100004100000002020000290000000001120436000100000001001d00000000010004140000000502000029000000040020008c000002aa0000c13d0000000103000031000000200030008c00000020040000390000000004034019000002d80000013d0000000202000029000000f80020009c000000f8020080410000004002200210000000f80010009c000000f801008041000000c001100210000000000121019f000000ff011001c7000000050200002903dc03d20000040f00000000030100190000006003300270000000f803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000002c50000613d000000000701034f0000000208000029000000007907043c00000000089804360000000000a8004b000002c10000c13d000000000005004b000002d40000613d0000000506600210000000000761034f00000002066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000100200190000003040000613d0000001f01400039000000600110018f0000000202100029000000000012004b00000000010000190000000101004039000500000002001d000000fb0020009c0000000404000029000000480000213d0000000100100190000000480000c13d0000000501000029000000400010043f000000200030008c000000e00000413d00000002010000290000000001010433000200000001001d000000fa0010009c000000e00000213d0000000501000029000001040010009c000000480000213d00000005050000290000006001500039000000400010043f000000400150003900000105020000410000000000210435000000270100003900000000021504360000010601000041000100000002001d0000000000120435000000000204043300000000010004140000000204000029000000040040008c000003130000c13d000000fb0030009c000000480000213d00000001020000390000032a0000013d000000400200043d0000001f0430018f0000000505300272000003100000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000030c0000c13d000000000004004b000000ff0000c13d0000010c0000013d0000000303000029000000f80030009c000000f8030080410000004003300210000000f80020009c000000f8020080410000006002200210000000000232019f000000f80010009c000000f801008041000000c001100210000000000121019f000000020200002903dc03d70000040f000000010220018f00030000000103550000006001100270000100f80010019d000000f8031001980000032a0000c13d00000060010000390000008004000039000003540000013d0000001f0130003900000107011001970000003f011000390000010805100197000000400100043d0000000004150019000000000054004b00000000050000190000000105004039000000fb0040009c000000480000213d0000000100500190000000480000c13d000000400040043f0000001f0530018f000000000431043600000003060003670000000503300272000003450000613d00000005073002100000000007740019000000000806034f0000000009040019000000008a08043c0000000009a90436000000000079004b000003410000c13d000000000005004b000003540000613d0000000503300210000000000636034f00000000033400190000000305500210000000000703043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005304350000000001010433000000000002004b000003780000c13d000000000001004b0000039c0000c13d000000400100043d0000010a020000410000000000210435000000040210003900000020030000390000000000320435000000050200002900000000020204330000002403100039000000000023043500000115052001970000001f0420018f0000004403100039000000010030006b000003a40000813d000000000005004b000003740000613d00000001074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000036e0000c13d000000000004004b000003bf0000613d0000000006030019000003b40000013d000000000001004b000002980000c13d000000fc010000410000000000100439000000020100002900000004001004430000000001000414000000f80010009c000000f801008041000000c001100210000000fd011001c7000080020200003903dc03d20000040f00000001002001900000039b0000613d000000000101043b000000000001004b000002980000c13d000000400100043d00000044021000390000010903000041000000000032043500000024021000390000001d0300003900000000003204350000010a020000410000000000210435000000040210003900000020030000390000000000320435000000f80010009c000000f80100804100000040011002100000010b011001c7000003de00010430000000000001042f000000f80040009c000000f8040080410000004002400210000000f80010009c000000f8010080410000006001100210000000000121019f000003de00010430000000000005004b000003b00000613d000000200650008a0000011506600197000000000636001900000020066000390000000107000029000000000803001900000000790704340000000008980436000000000068004b000003ac0000c13d000000000004004b000003bf0000613d0000000006530019000100010050002d0000000304400210000000000506043300000000054501cf000000000545022f000000010700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f042000390000011504400197000000000232001900000000000204350000004402400039000000f80020009c000000f8020080410000006002200210000000f80010009c000000f8010080410000004001100210000000000112019f000003de00010430000000000001042f000003d0002104210000000102000039000000000001042d0000000002000019000000000001042d000003d5002104230000000102000039000000000001042d0000000002000019000000000001042d000003da002104250000000102000039000000000001042d0000000002000019000000000001042d000003dc00000432000003dd0001042e000003de00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000005c60da1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c000000000000000000000000000000000000000000000001ffffffffffffffe0000000000000000000000000000000000000000000000003ffffffffffffffe0416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000020000000000000000000000000000004000000100000000000000000073206e6f74206120636f6e747261637400000000000000000000000000000000455243313936373a20626561636f6e20696d706c656d656e746174696f6e206900000000000000000000000000000000000000840000000000000000000000007472616374000000000000000000000000000000000000000000000000000000455243313936373a206e657720626561636f6e206973206e6f74206120636f6e4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000004000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"01000117613f7e71fa8cfdec69be8cf83d432e6d74fe77c02dea6617ebf56484","factoryDependencies":{}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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. {BeaconProxy} 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]}},\"version\":1}","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. {BeaconProxy} will check that this address is a contract."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"implementation()":"5c60da1b"}}}},"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol":{"UpgradeableBeacon":{"abi":[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\",\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation returned by the beacon is changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the beacon.\"},\"implementation()\":{\"details\":\"Returns the current implementation address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":\"UpgradeableBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.","events":{"Upgraded(address)":{"details":"Emitted when the implementation returned by the beacon is changed."}},"kind":"dev","methods":{"constructor":{"details":"Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the beacon."},"implementation()":{"details":"Returns the current implementation address."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"details":"Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1718,"contract":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon","label":"_implementation","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"bytecode":{"object":"0002000000000002000000000301001900000060033002700000004b033001970000000100200190000000300000c13d0000008002000039000000400020043f000000040030008c000000c10000413d000000000201043b000000e002200270000000580020009c0000008e0000a13d000000590020009c000000980000613d0000005a0020009c000000b00000613d0000005b0020009c000000c10000c13d000000240030008c000000c10000413d0000000002000416000000000002004b000000c10000c13d0000000401100370000000000101043b0000004d0010009c000000c10000213d000000000200041a0000004d032001970000000005000411000000000053004b000000ed0000c13d0000004d06100198000001010000c13d0000005601000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000005e01000041000000c40010043f0000005f01000041000000e40010043f000000600100004100000129000104300000000002000416000000000002004b000000c10000c13d0000001f023000390000004c022001970000008002200039000000400020043f0000001f0230018f0000000504300272000000420000613d000000800500003900000005064002100000008006600039000000000701034f000000007807043c0000000005850436000000000065004b0000003e0000c13d000000000002004b000000510000613d0000000504400210000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000200030008c000000c10000413d000000800200043d0000004d0020009c000000c10000213d000000000100041a000200000002001d0000004e021001970000000006000411000000000262019f000000000020041b000000400200043d000100000002001d00000000020004140000004d051001970000004b0020009c0000004b02008041000000c0012002100000004f011001c70000800d02000039000000030300003900000050040000410127011d0000040f00000001002001900000000202000029000000c10000613d00000051010000410000000000100439000000040020044300000000010004140000004b0010009c0000004b01008041000000c00110021000000052011001c70000800202000039012701220000040f0000000100200190000000f60000613d000000000101043b000000000001004b000000f70000c13d0000000103000029000000640130003900000054020000410000000000210435000000440130003900000055020000410000000000210435000000240130003900000033020000390000000000210435000000560100004100000000001304350000000401300039000000200200003900000000002104350000004b0030009c0000004b03008041000000400130021000000057011001c700000129000104300000005c0020009c000000b80000613d0000005d0020009c000000c10000c13d0000000001000416000000000001004b000000c10000c13d0000000101000039000000000101041a000000b40000013d0000000001000416000000000001004b000000c10000c13d000000000100041a0000004d021001970000000005000411000000000052004b000000ed0000c13d0000004e01100197000000000010041b00000000010004140000004b0010009c0000004b01008041000000c0011002100000004f011001c70000800d020000390000000303000039000000500400004100000000060000190127011d0000040f0000000100200190000000c10000613d0000000001000019000001280001042e0000000001000416000000000001004b000000c10000c13d000000000100041a0000004d01100197000000800010043f0000006101000041000001280001042e000000240030008c000000c10000413d0000000002000416000000000002004b000000c10000c13d0000000401100370000000000301043b0000004d0030009c000000c30000a13d00000000010000190000012900010430000000000100041a0000004d011001970000000002000411000000000021004b000000ed0000c13d00000051010000410000000000100439000000040030044300000000010004140000004b0010009c0000004b01008041000000c00110021000000052011001c70000800202000039000200000003001d012701220000040f0000000100200190000000f60000613d0000000202000029000000000101043b000000000001004b0000010d0000c13d000000400100043d000000640210003900000054030000410000000000320435000000440210003900000055030000410000000000320435000000240210003900000033030000390000000000320435000000560200004100000000002104350000000402100039000000200300003900000000003204350000004b0010009c0000004b01008041000000400110021000000057011001c700000129000104300000005601000041000000800010043f0000002001000039000000840010043f000000a40010043f0000006201000041000000c40010043f00000063010000410000012900010430000000000001042f0000000101000039000000000201041a0000004e0220019700000002022001af000000000021041b0000002001000039000001000010044300000120000004430000005301000041000001280001042e0000004e01200197000000000161019f000000000010041b00000000010004140000004b0010009c0000004b01008041000000c0011002100000004f011001c70000800d0200003900000003030000390000005004000041000000ab0000013d0000004d052001970000000101000039000000000201041a0000004e02200197000000000252019f000000000021041b00000000010004140000004b0010009c0000004b01008041000000c0011002100000004f011001c70000800d0200003900000002030000390000006404000041000000ab0000013d000000000001042f00000120002104210000000102000039000000000001042d0000000002000019000000000001042d00000125002104230000000102000039000000000001042d0000000002000019000000000001042d0000012700000432000001280001042e00000129000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e01806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000000000002000000000000000000000000000000400000010000000000000000006e206973206e6f74206120636f6e7472616374000000000000000000000000005570677261646561626c65426561636f6e3a20696d706c656d656e746174696f08c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000005c60da1b4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b"},"methodIdentifiers":{"implementation()":"5c60da1b","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6"}},"hash":"0100006547c96e30990782620c95416144f5eaa3a4983285399c1968e9f82801","factoryDependencies":{}}},"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol":{"ProxyAdmin":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x8e99882a991853dc446278576c8cb9b3a5ded84642e9bcc917b1677807c2f18c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310153c1a4c739002ffbc1351ed1dd7488a0d20f5dd816353332fc2c1d81e0a3\",\"dweb:/ipfs/QmcvwXQVUBRTEAoNcvwSVFmhpHUXQ21s2Hfj79hq2uQNVM\"]},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x168e36d7e616bd41f6abab4a83009da64513ae9e638aa6d5980066e2a92db689\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a45c64b97311fabbcbe8dad7e94fa89e06a7f96060d5565326ef706f5f239017\",\"dweb:/ipfs/QmeU2jiBGbHhz9DqRotjbpAx5s2xExDSRQtSD5ENjuHzDq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.","kind":"dev","methods":{"changeProxyAdmin(address,address)":{"details":"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`."},"getProxyAdmin(address)":{"details":"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"getProxyImplementation(address)":{"details":"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgrade(address,address)":{"details":"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol:ProxyAdmin","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"bytecode":{"object":"00010000000000020002000000000002000000000301034f000000800a0000390000004000a0043f00000001002001900000002f0000c13d00000000010300190000006001100270000000be02100197000000040020008c000002130000413d000000000123034f000000000403043b000000e004400270000000c40040009c000000480000213d000000ca0040009c0000008d0000213d000000cd0040009c000000ae0000613d000000ce0040009c000002130000c13d0000000001000416000000000001004b000002130000c13d000000000100041a000000c0021001970000000005000411000000000052004b000001970000c13d000000bf01100197000000000010041b0000000001000414000000be0010009c000000be01008041000000c001100210000000c1011001c70000800d020000390000000303000039000000c204000041000000000600001902f102e70000040f0000000100200190000002130000613d0000000001000019000002f20001042e0000000001000416000000000001004b000002130000c13d000000000100041a000000bf021001970000000006000411000000000262019f000000000020041b0000000002000414000000c005100197000000be0020009c000000be02008041000000c001200210000000c1011001c70000800d020000390000000303000039000000c20400004102f102e70000040f0000000100200190000002130000613d000000200100003900000100001004430000012000000443000000c301000041000002f20001042e000000c50040009c000000990000213d000000c80040009c000000bf0000613d000000c90040009c000002130000c13d000000440020008c000002130000413d0000000001000416000000000001004b000002130000c13d0000000401300370000000000401043b000000c00040009c000002130000213d0000002401300370000000000301043b000000c00030009c000002130000213d000000000100041a000000c0011001970000000002000411000000000021004b000001970000c13d000100000003001d000000d7010000410000000000100439000200000004001d00000004004004430000000001000414000000be0010009c000000be01008041000000c001100210000000d8011001c7000080020200003902f102ec0000040f0000000100200190000002040000613d000000000101043b000000000001004b00000002020000290000000103000029000002130000613d000000400400043d000000d9010000410000000000140435000000040140003900000000003104350000000001000414000000040020008c0000008c0000613d000000be0040009c000000be0300004100000000030440190000004003300210000000be0010009c000000be01008041000000c001100210000000000131019f000000da011001c7000200000004001d02f102e70000040f000000020400002900000000030100190000006003300270000000be0030019d00000001002001900000023f0000613d000001760000013d000000cb0040009c000001380000613d000000cc0040009c000002130000c13d0000000001000416000000000001004b000002130000c13d000000000100041a000000c001100197000000800010043f000000e101000041000002f20001042e000000c60040009c0000017b0000613d000000c70040009c000002130000c13d000000240020008c000002130000413d0000000002000416000000000002004b000002130000c13d0000000402300370000000000202043b000000c00020009c000002130000213d000000cf03000041000000800030043f0000000003000414000000040020008c000001a00000c13d00000000040000310000000002000019000001ab0000013d000000240020008c000002130000413d0000000002000416000000000002004b000002130000c13d0000000402300370000000000202043b000000c00020009c000002130000213d000000e403000041000000800030043f0000000003000414000000040020008c000001b40000c13d00000000050000310000000002000019000001be0000013d000000640020008c000002130000413d0000000401300370000000000901043b000000c00090009c000002130000213d0000002401300370000000000801043b000000c00080009c000002130000213d0000004401300370000000000401043b000000d10040009c000002130000213d0000002301400039000000000021004b000002130000813d0000000405400039000000000153034f000000000101043b000000d10010009c000001fe0000213d0000001f06100039000000e7066001970000003f06600039000000e706600197000000db0060009c000001fe0000213d0000008006600039000000400060043f000000800010043f00000000041400190000002404400039000000000024004b000002130000213d000200000008001d0000002002500039000000000223034f0000001f0310018f0000000504100272000000f00000613d000000a0050000390000000506400210000000a006600039000000000702034f000000007807043c0000000005850436000000000065004b000000ec0000c13d000000000003004b000000ff0000613d0000000504400210000000000242034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f0000000000240435000000a0011000390000000000010435000000000100041a000000c0011001970000000002000411000000000021004b0000024f0000c13d000000d7010000410000000000100439000100000009001d00000004009004430000000001000414000000be0010009c000000be01008041000000c001100210000000d8011001c7000080020200003902f102ec0000040f0000000100200190000002040000613d000000000101043b000000000001004b0000000204000029000002130000613d000000400500043d000000240150003900000040020000390000000000210435000000de010000410000000000150435000000040150003900000000004104350000004402500039000000800100043d0000000000120435000000e7041001970000001f0310018f000200000005001d0000006402500039000000a10020008c000002810000413d000000000004004b000001330000613d000000000632001900000080053001bf000000200660008a0000000007460019000000000845001900000000080804330000000000870435000000200440008c0000012d0000c13d000000000003004b0000029b0000613d000000a0040000390000000005020019000002910000013d000000440020008c000002130000413d0000000001000416000000000001004b000002130000c13d0000000401300370000000000401043b000000c00040009c000002130000213d0000002401300370000000000301043b000000c00030009c000002130000213d000000000100041a000000c0011001970000000002000411000000000021004b000001970000c13d000100000003001d000000d7010000410000000000100439000200000004001d00000004004004430000000001000414000000be0010009c000000be01008041000000c001100210000000d8011001c7000080020200003902f102ec0000040f0000000100200190000002040000613d000000000101043b000000000001004b00000002020000290000000103000029000002130000613d000000400400043d000000e2010000410000000000140435000000040140003900000000003104350000000001000414000000040020008c000001760000613d000000be0040009c000000be0300004100000000030440190000004003300210000000be0010009c000000be01008041000000c001100210000000000131019f000000da011001c7000200000004001d02f102e70000040f000000020400002900000000030100190000006003300270000000be0030019d00000001002001900000025f0000613d000000d10040009c000001fe0000213d000000400040043f0000000001000019000002f20001042e000000240020008c000002130000413d0000000001000416000000000001004b000002130000c13d0000000401300370000000000601043b000000c00060009c000002130000213d000000000100041a000000c0021001970000000005000411000000000052004b000001970000c13d000000000006004b000002050000c13d000000d301000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f000000d401000041000000c40010043f000000d501000041000000e40010043f000000d601000041000002f300010430000000d301000041000000800010043f0000002001000039000000840010043f000000a40010043f000000dc01000041000000c40010043f000000e301000041000002f300010430000000be0030009c000000be03008041000000c001300210000000d0011001c702f102ec0000040f000000800a000039000000010220015f00000000030100190000006003300270000000be0030019d000000be04300197000000000004004b000001d00000c13d00000060030000390000000100200190000002130000c13d00000000010304330000000002a1001900000000010a0019000001c70000013d000000be0030009c000000be03008041000000c001300210000000d0011001c702f102ec0000040f000000010220015f00000000030100190000006003300270000000be0030019d000000be05300197000000000005004b000001fc0000c13d000000600400003900000080030000390000000100200190000002130000c13d00000000010404330000000002310019000000000103001902f102db0000040f000000c001100197000000400200043d0000000000120435000000be0020009c000000be020080410000004001200210000000d2011001c7000002f20001042e000000d10040009c000001fe0000213d0000001f03400039000000e7033001970000003f03300039000000e705300197000000400300043d0000000005530019000000000035004b00000000060000190000000106004039000000d10050009c000001fe0000213d0000000100600190000001fe0000c13d000000400050043f0000001f0540018f000000000a4304360000000504400272000001ec0000613d000000050640021000000000066a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000001e80000c13d000000000005004b000001ae0000613d0000000504400210000000000141034f00000000044a00190000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000001ae0000013d000000e50050009c000002150000413d000000e60100004100000000001004350000004101000039000000040010043f000000da01000041000002f300010430000000000001042f000000bf01100197000000000161019f000000000010041b0000000001000414000000be0010009c000000be01008041000000c001100210000000c1011001c70000800d020000390000000303000039000000c20400004102f102e70000040f00000001002001900000002d0000c13d0000000001000019000002f3000104300000001f03500039000000e7033001970000003f03300039000000e703300197000000400400043d0000000003340019000000000043004b00000000060000190000000106004039000000d10030009c000001fe0000213d0000000100600190000001fe0000c13d000000400030043f0000001f0650018f000000000354043600000005055002720000022f0000613d00000005075002100000000007730019000000000801034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000022b0000c13d000000000006004b000001c20000613d0000000505500210000000000151034f00000000055300190000000306600210000000000705043300000000076701cf000000000767022f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f0000000000150435000001c20000013d000000be03300197000000400200043d0000001f0430018f00000005053002720000024c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002480000c13d000000000004004b0000027b0000613d0000026e0000013d000000400100043d0000004402100039000000dc030000410000000000320435000000d302000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000000be0010009c000000be010080410000004001100210000000dd011001c7000002f300010430000000be03300197000000400200043d0000001f0430018f00000005053002720000026c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002680000c13d000000000004004b0000027b0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000000be0020009c000000be020080410000004002200210000000000112019f000002f300010430000000000004004b0000028d0000613d000000200540008a000000e706500197000000a00500003900000000062600190000002006600039000000000702001900000000580504340000000007870436000000000067004b000002890000c13d000000000003004b0000029b0000613d0000000005420019000000a0044000390000000303300210000000000605043300000000063601cf000000000636022f00000000040404330000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000002210019000000000002043500000000040004140000000102000029000000040020008c000002c40000613d0000001f01100039000000e70110019700000000030004160000006402100039000000be0040009c000000be04008041000000c0014002100000000204000029000000be0040009c000000be040080410000004004400210000000000003004b000002b50000c13d000000be0020009c000000be020080410000006002200210000000000242019f000000000121019f0000000102000029000002be0000013d0000006005200210000000df0020009c000000e005008041000000c1024001c70000000002520019000000000112001900008009020000390000000104000029000000000500001902f102e70000040f00000000030100190000006003300270000000be0030019d0000000100200190000002cb0000613d0000000201000029000000d10010009c000001fe0000213d0000000201000029000000400010043f0000000001000019000002f20001042e000000be03300197000000400200043d0000001f0430018f00000005053002720000000505500210000002d80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002d40000c13d000000000004004b0000027b0000613d0000026f0000013d0000000002120049000000e80020009c000002e40000213d0000001f0020008c000002e40000a13d0000000001010433000000c00010009c000002e40000213d000000000001042d0000000001000019000002f300010430000000000001042f000002ea002104210000000102000039000000000001042d0000000002000019000000000001042d000002ef002104230000000102000039000000000001042d0000000002000019000000000001042d000002f100000432000002f20001042e000002f300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009623609c00000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f3b7dead000000000000000000000000000000000000000000000000000000009623609d0000000000000000000000000000000000000000000000000000000099a88ec4000000000000000000000000000000000000000000000000000000007eff275d000000000000000000000000000000000000000000000000000000007eff275e000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000204e1c7a00000000000000000000000000000000000000000000000000000000715018a6f851a440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000002000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000000000000000000000004f1ef28600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000200000008000000000000000008f2839700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000008000000000000000005c60da1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"methodIdentifiers":{"changeProxyAdmin(address,address)":"7eff275e","getProxyAdmin(address)":"f3b7dead","getProxyImplementation(address)":"204e1c7a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgrade(address,address)":"99a88ec4","upgradeAndCall(address,address,bytes)":"9623609d"}},"hash":"010000e9dd92adf6e43af4e1319e55ac0eadffcbb63d810b65a35202b34c0abf","factoryDependencies":{}}},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"ITransparentUpgradeableProxy":{"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"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} does not implement this interface directly, and some of its functions are implemented by an internal dispatch mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not include them in the ABI so this interface must be used to interact with it.\",\"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/proxy/transparent/TransparentUpgradeableProxy.sol\":\"ITransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x168e36d7e616bd41f6abab4a83009da64513ae9e638aa6d5980066e2a92db689\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a45c64b97311fabbcbe8dad7e94fa89e06a7f96060d5565326ef706f5f239017\",\"dweb:/ipfs/QmeU2jiBGbHhz9DqRotjbpAx5s2xExDSRQtSD5ENjuHzDq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","devdoc":{"details":"Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} does not implement this interface directly, and some of its functions are implemented by an internal dispatch mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not include them in the ABI so this interface must be used to interact with it.","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},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}}},"TransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.\",\"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\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x168e36d7e616bd41f6abab4a83009da64513ae9e638aa6d5980066e2a92db689\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a45c64b97311fabbcbe8dad7e94fa89e06a7f96060d5565326ef706f5f239017\",\"dweb:/ipfs/QmeU2jiBGbHhz9DqRotjbpAx5s2xExDSRQtSD5ENjuHzDq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.","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":{"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0002000000000002000600000000000200000000030100190000006003300270000001390330019700010000003103550000000100200190000000210000c13d000000000431034f0000008002000039000000400020043f00000000060004110000014805000041000000000705041a0000013b05700197000000000003004b0000005f0000c13d000000000056004b000000700000c13d000000000101043b0000014c011001970000014d0010009c0000010b0000a13d0000014e0010009c000001960000613d0000014f0010009c000002210000613d000001500010009c000001880000c13d0000000001000416000000000001004b0000019c0000613d000002210000013d0000001f023000390000013a022001970000008002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000300000613d00000080050000390000008006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003e0000613d000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000600030008c000002210000413d000000800900043d0000013b0090009c000002210000213d000000a00600043d0000013b0060009c000002210000213d000000c00200043d0000013c0020009c000002210000213d0000001f01200039000000000031004b00000000040000190000013d040080410000013d01100197000000000001004b00000000050000190000013d050040410000013d0010009c000000000504c019000000000005004b000002210000c13d000000800120003900000000010104330000013c0010009c0000020d0000a13d0000015f0100004100000000001004350000004101000039000000040010043f0000016001000041000004df00010430000000000056004b000000840000c13d000000000401043b0000014c044001970000014d0040009c000001100000a13d0000014e0040009c000001a30000613d0000014f0040009c000001b50000613d000001500040009c000001880000c13d0000000001000416000000000001004b000002210000c13d000000a00050043f000001aa0000013d0000014001000041000000000201041a00000000010004140000013b02200197000000040020008c000000bc0000c13d00000000030000310000001f0230018f0000000501300272000000810000613d0000000505100210000000000604034f0000000007000019000000006806043c0000000007870436000000000057004b0000007d0000c13d000000000002004b000001050000613d000000af0000013d0000001f0530018f0000014002000041000000000202041a0000000506300272000000900000613d0000000507600210000000000801034f0000000009000019000000008a08043c0000000009a90436000000000079004b0000008c0000c13d0000013b02200197000000000005004b0000009f0000613d00000003055002100000000506600210000000000706043300000000075701cf000000000757022f000000000161034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f00000000001604350000000001000414000000040020008c000000e00000c13d00000000030000310000001f0230018f0000000501300272000000ad0000613d0000000505100210000000000604034f0000000007000019000000006806043c0000000007870436000000000057004b000000a90000c13d000000000002004b000001050000613d00000003022002100000000501100210000000000501043300000000052501cf000000000525022f000000000414034f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f0000000000210435000001050000013d000001390010009c0000013901008041000000c00110021004dd04d80000040f0001000000010355000000000301001900000060033002700000001f0430018f000001390030019d00000139033001970000000505300272000000cf0000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000000cb0000c13d000000000004004b000000dd0000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000151034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000000100200190000001050000c13d000001090000013d0000006003300210000001390010009c0000013901008041000000c001100210000000000131019f04dd04d80000040f0001000000010355000000000301001900000060033002700000001f0430018f000001390030019d00000139033001970000000505300272000000f50000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000000f10000c13d000000000004004b000001030000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000151034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000000100200190000001090000613d000001390030009c00000139030080410000006001300210000004de0001042e0000006001300210000004df00010430000001510010009c000002210000613d000001520010009c000002210000613d000001880000013d000001510040009c000001db0000613d000001520040009c000001880000c13d000000440030008c000002210000413d0000000402100370000000000902043b0000013b0090009c000002210000213d0000002402100370000000000402043b0000013c0040009c000002210000213d0000002302400039000000000032004b000002210000813d0000000405400039000000000251034f000000000202043b0000013c0020009c000000590000213d0000001f0620003900000168066001970000003f066000390000016806600197000001590060009c000000590000213d0000008006600039000000400060043f000000800020043f00000000042400190000002404400039000000000034004b000002210000213d0000002003500039000000000131034f0000001f0320018f00000005042002720000000504400210000001400000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b0000013c0000c13d000000000003004b0000014e0000613d000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a00120003900000000000104350000013e010000410000000000100439000600000009001d00000004009004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b000002660000613d0000014001000041000000000201041a000001410220019700000006022001af0000000605000029000000000021041b0000000001000414000001390010009c0000013901008041000000c00110021000000142011001c70000800d020000390000000203000039000001430400004104dd04ce0000040f00000006030000290000000100200190000002210000613d000000400100043d000500000001001d000001440010009c000000590000213d00000005040000290000006001400039000000400010043f000000400140003900000145020000410000000000210435000000270100003900000000021404360000014601000041000400000002001d0000000000120435000000800200043d0000000001000414000000040030008c0000040f0000c13d000000010200003900000000040000310000041e0000013d0000014701000041000000800010043f0000002001000039000000840010043f0000004201000039000000a40010043f0000016401000041000000c40010043f0000016501000041000000e40010043f0000016601000041000001040010043f0000016701000041000004df000104300000000001000416000000000001004b000002210000c13d0000014001000041000000000101041a0000013b05100197000000a00050043f0000002001000039000000800010043f000000c001000039000000400010043f0000016301000041000004de0001042e0000000001000416000000000001004b000002210000c13d0000014001000041000000000101041a0000013b01100197000000a00010043f0000002001000039000000800010043f000000c001000039000000400010043f00000153010000410000015d0020009c0000015d0200804100000040022002100000015e0220009a000000000112019f000004de0001042e000000240030008c000002210000413d0000000002000416000000000002004b000002210000c13d0000000401100370000000000201043b0000013b0020009c000002210000213d000000800050043f000000a00020043f0000000001000414000001390010009c0000013901008041000000c00110021000000154011001c7000500000002001d0000800d0200003900000001030000390000014a04000041000600000007001d04dd04ce0000040f000000060100002900000001002001900000000502000029000002210000613d000000000002004b0000027a0000c13d000000400100043d000000640210003900000156030000410000000000320435000000440210003900000157030000410000000000320435000000240210003900000026030000390000026f0000013d000000240030008c000002210000413d0000000002000416000000000002004b000002210000c13d0000000401100370000000000201043b0000013b0020009c000002210000213d000000a001000039000000400010043f000000800000043f0000013e010000410000000000100439000600000002001d00000004002004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b000002660000613d0000014001000041000000000201041a000001410220019700000006022001af0000000605000029000000000021041b0000000001000414000001390010009c0000013901008041000000c00110021000000142011001c70000800d020000390000000203000039000001430400004104dd04ce0000040f00000006030000290000000100200190000002210000613d000000800100043d000000000001004b000002c20000c13d0000027e0000013d0000001f0410003900000168044001970000003f044000390000016804400197000000400800043d0000000004480019000000000084004b000000000500001900000001050040390000013c0040009c000000590000213d0000000100500190000000590000c13d0000008003300039000000400040043f000000000a180436000000a0022000390000000004210019000000000034004b000002230000a13d0000000001000019000004df00010430000400000008001d000500000006001d00000168041001970000001f0310018f0000000000a2004b000002390000813d000000000004004b000002350000613d000000000632001900000000053a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000022f0000c13d000000000003004b000002530000613d00000000050a0019000002490000013d000000000004004b000002450000613d000000200540008a00000168055001970000000005a500190000002005500039000000000602001900000000070a001900000000680604340000000007870436000000000057004b000002410000c13d000000000003004b000002530000613d00000000054a001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f000000000025043500030000000a001d00000000011a001900000000000104350000013e010000410000000000100439000600000009001d00000004009004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b000002860000c13d000000400100043d00000064021000390000016103000041000000000032043500000044021000390000016203000041000000000032043500000024021000390000002d03000039000000000032043500000147020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c0000013901008041000000400110021000000158011001c7000004df000104300000014101100197000000000112019f0000014802000041000000000012041b000000400200043d000001550020009c000000590000213d0000002001200039000000400010043f00000000000204350000000001000019000001af0000013d0000014001000041000000000201041a000001410220019700000006022001af0000000605000029000000000021041b0000000001000414000001390010009c0000013901008041000000c00110021000000142011001c70000800d020000390000000203000039000001430400004104dd04ce0000040f00000006040000290000000100200190000000050300002900000004050000290000000306000029000002210000613d0000000001050433000000000001004b000002d70000c13d0000014801000041000000000401041a000000400100043d00000020021000390000000000320435000600000004001d0000013b024001970000000000210435000001390010009c000001390100804100000040011002100000000002000414000001390020009c0000013902008041000000c002200210000000000112019f00000149011001c70000800d0200003900000001030000390000014a0400004104dd04ce0000040f00000005030000290000000100200190000002210000613d000000000003004b000001d10000613d00000006010000290000014101100197000000000131019f0000014802000041000000000012041b0000002001000039000001000010044300000120000004430000014b01000041000004de0001042e000000400400043d000001440040009c000000590000213d0000006001400039000000400010043f0000004001400039000001450200004100000000002104350000002701000039000400000004001d00000000021404360000014601000041000500000002001d0000000000120435000000800200043d0000000001000414000000040030008c000002ec0000c13d00000001020000390000000004000031000002fb0000013d000000400300043d000001440030009c000000590000213d0000006001300039000000400010043f0000004001300039000001450200004100000000002104350000002701000039000100000003001d00000000021304360000014601000041000200000002001d000000000012043500000000020504330000000001000414000000040040008c0000034f0000c13d00000001020000390000000004000031000003610000013d000001390020009c00000139020080410000006002200210000001390010009c0000013901008041000000c001100210000000000121019f0000015a011001c7000000000203001904dd04d80000040f000000010220018f00010000000103550000006001100270000001390010019d0000013904100197000000000004004b000003230000c13d000000600100003900000080030000390000000001010433000000000002004b000003b60000c13d000000000001004b000004460000c13d000000400100043d00000147020000410000000000210435000000040210003900000020030000390000000000320435000000040200002900000000020204330000002403100039000000000023043500000168062001970000001f0520018f0000004404100039000000050040006b000003ee0000813d000000000006004b0000031f0000613d00000005085000290000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003190000c13d000000000005004b000004090000613d0000000007040019000003fe0000013d0000013c0040009c000000590000213d0000001f0140003900000168011001970000003f011000390000016803100197000000400100043d0000000003310019000000000013004b000000000500001900000001050040390000013c0030009c000000590000213d0000000100500190000000590000c13d000000400030043f0000001f0540018f0000000003410436000000010600036700000005044002720000000504400210000003400000613d0000000007430019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000033c0000c13d000000000005004b000002ff0000613d000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000002ff0000013d000001390060009c00000139060080410000004003600210000001390020009c00000139020080410000006002200210000000000232019f000001390010009c0000013901008041000000c001100210000000000112019f000000000204001904dd04d80000040f000000010220018f00010000000103550000006001100270000001390010019d0000013904100197000000000004004b000003890000c13d000000600100003900000080030000390000000001010433000000000002004b000003c90000c13d000000000001004b000004460000c13d000000400100043d00000147020000410000000000210435000000040210003900000020030000390000000000320435000000010200002900000000020204330000002403100039000000000023043500000168052001970000001f0420018f0000004403100039000000020030006b0000047b0000813d000000000005004b000003850000613d00000002074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000037f0000c13d000000000004004b000004960000613d00000000060300190000048b0000013d0000013c0040009c000000590000213d0000001f0140003900000168011001970000003f011000390000016803100197000000400100043d0000000003310019000000000013004b000000000500001900000001050040390000013c0030009c000000590000213d0000000100500190000000590000c13d000000400030043f0000001f0540018f000000000341043600000001060003670000000504400272000003a60000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000003a20000c13d000000000005004b000003650000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000003650000013d000000000001004b00000006020000290000020c0000c13d0000013e01000041000000000010043900000004002004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b0000020c0000c13d000003dd0000013d000000000001004b000000050300002900000006020000290000029e0000c13d0000013e01000041000000000010043900000004002004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b00000005030000290000029e0000c13d000000400100043d00000044021000390000015b03000041000000000032043500000024021000390000001d03000039000000000032043500000147020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c000001390100804100000040011002100000015c011001c7000004df00010430000000000006004b000003fa0000613d000000200760008a00000168077001970000000007470019000000200770003900000005080000290000000009040019000000008a0804340000000009a90436000000000079004b000003f60000c13d000000000005004b000004090000613d0000000007640019000500050060002d0000000305500210000000000607043300000000065601cf000000000656022f000000050800002900000000080804330000010005500089000000000858022f00000000055801cf000000000565019f00000000005704350000001f0520003900000168035001970000000002420019000000000002043500000044023000390000049b0000013d000001390020009c00000139020080410000006002200210000001390010009c0000013901008041000000c001100210000000000121019f0000015a011001c7000000060200002904dd04d80000040f000000010220018f00010000000103550000006001100270000001390010019d0000013904100197000000000004004b0000044e0000c13d000000600100003900000080030000390000000001010433000000000002004b000004a30000c13d000000000001004b000004460000c13d000000400100043d00000147020000410000000000210435000000040210003900000020030000390000000000320435000000050200002900000000020204330000002403100039000000000023043500000168052001970000001f0420018f0000004403100039000000040030006b000004b70000813d000000000005004b000004420000613d00000004074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000043c0000c13d000000000004004b000004960000613d0000000006030019000004c70000013d000001390030009c00000139030080410000004002300210000001390010009c00000139010080410000006001100210000000000121019f000004df000104300000013c0040009c000000590000213d0000001f0140003900000168011001970000003f011000390000016803100197000000400100043d0000000003310019000000000013004b000000000500001900000001050040390000013c0030009c000000590000213d0000000100500190000000590000c13d000000400030043f0000001f0540018f0000000003410436000000010600036700000005044002720000046b0000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000004670000c13d000000000005004b000004220000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000004220000013d000000000005004b000004870000613d000000200650008a0000016806600197000000000636001900000020066000390000000207000029000000000803001900000000790704340000000008980436000000000068004b000004830000c13d000000000004004b000004960000613d0000000006530019000200020050002d0000000304400210000000000506043300000000054501cf000000000545022f000000020700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f042000390000016804400197000000000232001900000000000204350000004402400039000001390020009c00000139020080410000006002200210000001390010009c00000139010080410000004001100210000000000112019f000004df00010430000000000001004b0000027e0000c13d0000013e010000410000000000100439000000060100002900000004001004430000000001000414000001390010009c0000013901008041000000c0011002100000013f011001c7000080020200003904dd04d30000040f0000000100200190000004b60000613d000000000101043b000000000001004b0000027e0000c13d000003dd0000013d000000000001042f000000000005004b000004c30000613d000000200650008a0000016806600197000000000636001900000020066000390000000407000029000000000803001900000000790704340000000008980436000000000068004b000004bf0000c13d000000000004004b000004960000613d0000000006530019000400040050002d0000000304400210000000000506043300000000054501cf000000000545022f0000000407000029000004900000013d000000000001042f000004d1002104210000000102000039000000000001042d0000000002000019000000000001042d000004d6002104230000000102000039000000000001042d0000000002000019000000000001042d000004db002104250000000102000039000000000001042d0000000002000019000000000001042d000004dd00000432000004de0001042e000004df00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c08c379a000000000000000000000000000000000000000000000000000000000b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610302000000000000000000000000000000000000400000000000000000000000007e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f0000000200000000000000000000000000000040000001000000000000000000ffffffff000000000000000000000000000000000000000000000000000000005c60da1affffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60da1b000000000000000000000000000000000000000000000000000000008f28397000000000000000000000000000000000000000000000000000000000f851a440000000000000000000000000000000000000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000004f1ef2860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf6464726573730000000000000000000000000000000000000000000000000000455243313936373a206e65772061646d696e20697320746865207a65726f20610000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0000000000000000000000000000000000000000000000a00000000000000000416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffdfffffffffffffffffffffffffffffffffffffffffffffffe000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006f74206120636f6e747261637400000000000000000000000000000000000000455243313936373a206e657720696d706c656d656e746174696f6e206973206e0000000000000000000000000000000000000020000000a000000000000000005472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"methodIdentifiers":{}},"hash":"010001699155fedc8d33bf86f8f8006e6cc211c9c9bef943c8b75850aec3a025","factoryDependencies":{}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002000600000000000200000000000103550000008004000039000000400040043f0000000003010019000000600330027000000123033001970000000100200190000000300000c13d000000040030008c000000510000413d000000000201043b000000e002200270000001290020009c0000006c0000a13d0000012a0020009c0000007b0000213d0000012e0020009c000001550000613d0000012f0020009c0000012a0000613d000001300020009c000000510000c13d0000000001000416000000000001004b000000510000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000000e10000c13d000000800010043f000000000005004b0000022f0000c13d0000014601200197000000a00010043f000000000004004b000000c001000039000000a001006039000002430000013d0000000002000416000000000002004b000000510000c13d0000001f0230003900000124022001970000008002200039000000400020043f0000001f0230018f00000005053002720000000505500210000000410000613d0000008006500039000000000701034f000000007807043c0000000004840436000000000064004b0000003d0000c13d000000000002004b0000004f0000613d000000000151034f00000003022002100000008004500039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000400030008c000000530000813d00000000010000190000048800010430000000800400043d000001250040009c000000510000213d0000001f01400039000000000031004b000000000200001900000126020080410000012601100197000000000001004b00000000050000190000012605004041000001260010009c000000000502c019000000000005004b000000510000c13d00000080014000390000000002010433000001250020009c000000aa0000a13d000001410100004100000000001004350000004101000039000000040010043f00000142010000410000048800010430000001310020009c000000980000a13d000001320020009c0000014d0000613d000001330020009c000000e70000613d000001340020009c000000510000c13d0000000001000416000000000001004b000000510000c13d0000001201000039000000800010043f0000013801000041000004870001042e0000012b0020009c000001820000613d0000012c0020009c000001380000613d0000012d0020009c000000510000c13d000000440030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000001370020009c000000510000213d0000002401100370000000000101043b000001370010009c000000510000213d0000000000200435000600000001001d0000000101000039000000200010043f00000040010000390486046b0000040f00000006020000290000000000200435000000200010043f000001350000013d000001350020009c000000d20000613d000001360020009c000000510000c13d000000440030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000001370020009c000000510000213d0000002401100370000000000301043b0000000001000411048603a10000040f000001450000013d0000001f0120003900000147011001970000003f011000390000014701100197000000400c00043d00000000051c00190000000000c5004b00000000010000190000000101004039000001250050009c000000660000213d0000000100100190000000660000c13d0000008001300039000000400050043f000000000d2c0436000000a0044000390000000005420019000000000015004b000000510000213d00000147062001970000001f0520018f0000000000d4004b000001ca0000813d000000000006004b000000ce0000613d000000000854001900000000075d0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000c80000c13d000000000005004b000001e40000613d00000000070d0019000001da0000013d0000000001000416000000000001004b000000510000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001c10000613d000001410100004100000000001004350000002201000039000000040010043f00000142010000410000048800010430000000640030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000302043b000001370030009c000000510000213d0000002402100370000000000202043b000600000002001d000001370020009c000000510000213d0000004401100370000000000101043b000400000001001d00000000003004350000000101000039000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039000500000003001d048604810000040f0000000100200190000000510000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f00000005040000290000000100200190000000510000613d000000000101043b000000000101041a000001480010009c000002b90000613d000000040310006c000002b50000813d000000400100043d00000044021000390000014303000041000000000032043500000024021000390000001d0300003900000000003204350000013d020000410000000000210435000000040210003900000020030000390000000000320435000001230010009c0000012301008041000000400110021000000144011001c70000048800010430000000240030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000001370010009c000000510000213d0000000000100435000000200000043f00000040010000390486046b0000040f000001510000013d000000440030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000001370020009c000000510000213d0000002401100370000000000301043b0000000001000411048603f80000040f0000000101000039000000400200043d0000000000120435000001230020009c0000012302008041000000400120021000000139011001c7000004870001042e0000000001000416000000000001004b000000510000c13d0000000201000039000000000101041a000000800010043f0000013801000041000004870001042e000000440030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000401100370000000000101043b000600000001001d000001370010009c000000510000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000000510000613d000000000101043b00000006020000290000000000200435000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000000510000613d000000000101043b000000000101041a00000024020000390000000002200367000000000202043b000000000012001a000003620000413d0000000003120019000002340000013d000000440030008c000000510000413d0000000002000416000000000002004b000000510000c13d0000000402100370000000000202043b000600000002001d000001370020009c000000510000213d0000002401100370000000000101043b000500000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000000510000613d000000000101043b00000006020000290000000000200435000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000000510000613d000000000101043b000000000101041a000000050310006c000002340000813d000000400100043d00000064021000390000013b03000041000000000032043500000044021000390000013c0300004100000000003204350000002402100039000000250300003900000000003204350000013d020000410000000000210435000000040210003900000020030000390000000000320435000001230010009c000001230100804100000040011002100000013e011001c70000048800010430000000800010043f000000000005004b000002200000c13d0000014601200197000000a00010043f000000000004004b000000c001000039000000a001006039000002430000013d000000000006004b000001d60000613d000000200760008a00000147077001970000000007d700190000002007700039000000000804001900000000090d0019000000008a0804340000000009a90436000000000079004b000001d20000c13d000000000005004b000001e40000613d00000000076d001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000022d00190000000000020435000000a00400043d000001250040009c000000510000213d0000001f02400039000000000032004b000000000300001900000126030080410000012602200197000000000002004b00000000050000190000012605004041000001260020009c000000000503c019000000000005004b000000510000c13d00000080024000390000000002020433000001250020009c000000660000213d0000001f0320003900000147033001970000003f033000390000014703300197000000400900043d0000000003390019000000000093004b00000000050000190000000105004039000001250030009c000000660000213d0000000100500190000000660000c13d000000400030043f000000000a290436000000a0034000390000000004320019000000000014004b000000510000213d00000147042001970000001f0120018f0000000000a3004b000002560000813d000000000004004b0000021c0000613d000000000613001900000000051a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002160000c13d000000000001004b000002700000613d00000000050a0019000002660000013d0000000000300435000000020020008c000002320000413d000001450200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002250000413d000000c001300039000002430000013d0000000000300435000000020020008c000002380000813d0000002001000039000002470000013d00000000010004110000000602000029048603a10000040f000002bd0000013d0000013f0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000023a0000413d000000c001300039000000610110008a0000014701100197000001400010009c000000660000213d0000008001100039000600000001001d000000400010043f0000008002000039048603680000040f00000006020000290000000001210049000001230010009c00000123010080410000006001100210000001230020009c00000123020080410000004002200210000000000121019f000004870001042e000000000004004b000002620000613d000000200540008a00000147055001970000000005a500190000002005500039000000000603001900000000070a001900000000680604340000000007870436000000000057004b0000025e0000c13d000000000001004b000002700000613d00000000054a001900000000034300190000000301100210000000000405043300000000041401cf000000000414022f00000000030304330000010001100089000000000313022f00000000011301cf000000000141019f000000000015043500000000012a0019000000000001043500000000040c0433000001250040009c000000660000213d0000000303000039000000000103041a000000010210019000000001051002700000007f0550618f0000001f0050008c00000000010000190000000101002039000000000012004b000000e10000c13d00020000000d001d00010000000a001d00030000000c001d000500000009001d000400000005001d000000200050008c000600000004001d000002a30000413d00000000003004350000000001000414000001230010009c0000012301008041000000c00110021000000127011001c70000801002000039048604810000040f0000000100200190000000510000613d00000006040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000004010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000303000039000002a30000813d000000000002041b0000000102200039000000000012004b0000029f0000413d0000001f0040008c000002c50000a13d00000000003004350000000001000414000001230010009c0000012301008041000000c00110021000000127011001c70000801002000039048604810000040f0000000100200190000000200200008a000000510000613d0000000602200180000000000101043b000002d20000c13d0000002003000039000002df0000013d00000000010400190000000002000411048603a10000040f0000000504000029000000000104001900000006020000290000000403000029048603f80000040f000000400100043d00000001020000390000000000210435000001230010009c0000012301008041000000400110021000000139011001c7000004870001042e000000060000006b0000000001000019000002ca0000613d0000000201000029000000000101043300000006040000290000000302400210000001480220027f0000014802200167000000000121016f0000000102400210000000000121019f000002ed0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000030600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000002d80000c13d000000060020006c000002ea0000813d00000006020000290000000302200210000000f80220018f000001480220027f000001480220016700000003033000290000000003030433000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000302000039000000000012041b00000005010000290000000001010433000600000001001d000001250010009c000000660000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000400000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000000e10000c13d0000000401000029000000200010008c0000031f0000413d000000040100003900000000001004350000000001000414000001230010009c0000012301008041000000c00110021000000127011001c70000801002000039048604810000040f0000000100200190000000510000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000004010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000031f0000813d000000000002041b0000000102200039000000000012004b0000031b0000413d00000006010000290000001f0010008c000003330000a13d000000040100003900000000001004350000000001000414000001230010009c0000012301008041000000c00110021000000127011001c70000801002000039048604810000040f0000000100200190000000200200008a000000510000613d0000000602200180000000000101043b0000033f0000c13d00000020030000390000034c0000013d000000060000006b0000000001000019000003380000613d0000000101000029000000000101043300000006040000290000000302400210000001480220027f0000014802200167000000000221016f00000001014002100000035a0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000050600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003450000c13d000000060020006c000003570000813d00000006020000290000000302200210000000f80220018f000001480220027f000001480220016700000005033000290000000003030433000000000223016f000000000021041b000000010100003900000006020000290000000102200210000000000112019f0000000402000039000000000012041b0000002001000039000001000010044300000120000004430000012801000041000004870001042e000001410100004100000000001004350000001101000039000000040010043f00000142010000410000048800010430000000200300003900000000033104360000000042020434000000000023043500000147062001970000001f0520018f0000004001100039000000000014004b000003810000813d000000000006004b0000037d0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003770000c13d000000000005004b0000039b0000613d0000000007010019000003910000013d000000000006004b0000038d0000613d000000200760008a00000147077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000003890000c13d000000000005004b0000039b0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f0220003900000147022001970000000001210019000000000001042d00030000000000020000013701100198000003da0000613d000200000003001d000301370020019c000003e40000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f00000001002001900000000303000029000003d80000613d000000000101043b0000000000300435000000200010043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f00000003060000290000000100200190000003d80000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001230010009c000001230100804100000040011002100000000002000414000001230020009c0000012302008041000000c002200210000000000112019f00000127011001c70000800d020000390000000303000039000001490400004100000001050000290486047c0000040f0000000100200190000003d80000613d000000000001042d00000000010000190000048800010430000000400100043d00000064021000390000014c03000041000000000032043500000044021000390000014d03000041000000000032043500000024021000390000002403000039000003ed0000013d000000400100043d00000064021000390000014a03000041000000000032043500000044021000390000014b0300004100000000003204350000002402100039000000220300003900000000003204350000013d020000410000000000210435000000040210003900000020030000390000000000320435000001230010009c000001230100804100000040011002100000013e011001c700000488000104300004000000000002000400000003001d0000013701100198000004430000613d000201370020019c0000044d0000613d000300000001001d0000000000100435000000200000043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000004410000613d000000000101043b000000000101041a0001000400100074000004570000413d00000003010000290000000000100435000000200000043f0000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000004410000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001230010009c0000012301008041000000c0011002100000013a011001c70000801002000039048604810000040f0000000100200190000004410000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001230010009c000001230100804100000040011002100000000002000414000001230020009c0000012302008041000000c002200210000000000112019f00000127011001c70000800d0200003900000003030000390000014e04000041000000030500002900000002060000290486047c0000040f0000000100200190000004410000613d000000000001042d00000000010000190000048800010430000000400100043d00000064021000390000015303000041000000000032043500000044021000390000015403000041000000000032043500000024021000390000002503000039000004600000013d000000400100043d00000064021000390000015103000041000000000032043500000044021000390000015203000041000000000032043500000024021000390000002303000039000004600000013d000000400100043d00000064021000390000014f0300004100000000003204350000004402100039000001500300004100000000003204350000002402100039000000260300003900000000003204350000013d020000410000000000210435000000040210003900000020030000390000000000320435000001230010009c000001230100804100000040011002100000013e011001c70000048800010430000001230010009c000001230100804100000060011002100000000002000414000001230020009c0000012302008041000000c002200210000000000112019f00000155011001c70000801002000039048604810000040f00000001002001900000047a0000613d000000000101043b000000000001042d000000000100001900000488000104300000047f002104210000000102000039000000000001042d0000000002000019000000000001042d00000484002104230000000102000039000000000001042d0000000002000019000000000001042d0000048600000432000004870001042e000004880001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000000000000000000000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000003950935000000000000000000000000000000000000000000000000000000000a457c2d600000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000395093510000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddc0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b3000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7708c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f20616402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"hash":"010001572e63b995fe970c7d8ab140044e949cdf3dfd5d9270cf948957a6a474","factoryDependencies":{}}},"@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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]}},\"version\":1}","devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"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 `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]}},\"version\":1}","devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","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 `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]}},\"version\":1}","devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol":{"AccessControlledV8":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"AccessControlledV8\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"}},\"kind\":\"user\",\"methods\":{\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"}},\"notice\":\"This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13) to integrate access controlled mechanism. It provides initialise methods and verifying access methods.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":\"AccessControlledV8\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]}},\"version\":1}","devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"title":"AccessControlledV8","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"}},"kind":"user","methods":{"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"}},"notice":"This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13) to integrate access controlled mechanism. It provides initialise methods and verifying access methods.","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol:AccessControlledV8","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"methodIdentifiers":{"acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","transferOwnership(address)":"f2fde38b"}}}},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"IAccessControlManagerV8":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"},{"internalType":"address","name":"accountToPermit","type":"address"}],"name":"giveCallPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"functionSig","type":"string"}],"name":"isAllowedToCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"},{"internalType":"address","name":"accountToRevoke","type":"address"}],"name":"revokeCallPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToPermit\",\"type\":\"address\"}],\"name\":\"giveCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"isAllowedToCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToRevoke\",\"type\":\"address\"}],\"name\":\"revokeCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"title\":\"IAccessControlManagerV8\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface implemented by the `AccessControlManagerV8` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":\"IAccessControlManagerV8\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]}},\"version\":1}","devdoc":{"author":"Venus","events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"title":"IAccessControlManagerV8","version":1},"userdoc":{"kind":"user","methods":{},"notice":"Interface implemented by the `AccessControlManagerV8` contract.","version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","giveCallPermission(address,string,address)":"584f6b60","grantRole(bytes32,address)":"2f2ff15d","hasPermission(address,address,string)":"82bfd0f0","hasRole(bytes32,address)":"91d14854","isAllowedToCall(address,string)":"18c5e8ab","renounceRole(bytes32,address)":"36568abe","revokeCallPermission(address,string,address)":"545f7a32","revokeRole(bytes32,address)":"d547741f"}}}},"contracts/ReferenceOracle.sol":{"ReferenceOracle":{"abi":[{"inputs":[{"internalType":"contract ResilientOracleInterface","name":"resilientOracle","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"OracleConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"PRICES_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct ReferenceOracle.ExternalPrice[]","name":"externalPrices","type":"tuple[]"}],"name":"getPriceAssuming","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oracles","outputs":[{"internalType":"contract OracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"contract OracleInterface","name":"oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"resilientOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"OracleConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PRICES_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"internalType\":\"struct ReferenceOracle.ExternalPrice[]\",\"name\":\"externalPrices\",\"type\":\"tuple[]\"}],\"name\":\"getPriceAssuming\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"oracles\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"contract OracleInterface\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:error\":\"ZeroAddressNotAllowed is thrown if resilient oracle address is null\",\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"params\":{\"resilientOracle\":\"Resilient oracle address\"}},\"getPrice(address)\":{\"params\":{\"asset\":\"asset address\"},\"returns\":{\"_0\":\"USD price in scaled decimal places\"}},\"getPriceAssuming(address,(address,uint256)[])\":{\"params\":{\"asset\":\"asset address\",\"externalPrices\":\"an array of prices for other assets\"},\"returns\":{\"_0\":\"USD price in scaled decimal places\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setOracle(address,address)\":{\"custom:access\":\"Only owner\",\"custom:error\":\"ZeroAddressNotAllowed is thrown if asset address is null\",\"custom:event\":\"Emits OracleConfigured event\",\"details\":\"The production resilientOracle will be used if zero address is passed\",\"params\":{\"asset\":\"Asset address\",\"oracle\":\"Oracle address\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"RESILIENT_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"ReferenceOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"OracleConfigured(address,address)\":{\"notice\":\"Event emitted when an oracle is set\"}},\"kind\":\"user\",\"methods\":{\"PRICES_SLOT()\":{\"notice\":\"Slot to temporarily store price information from external sources like CMC/Coingecko, useful to compute prices of derivative assets based on prices of the base assets with no on chain price information\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Resilient oracle address\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract. Sets immutable variables.\"},\"getPrice(address)\":{\"notice\":\"Gets price of the asset\"},\"getPriceAssuming(address,(address,uint256)[])\":{\"notice\":\"Gets price of the asset assuming other assets have the defined price\"},\"initialize()\":{\"notice\":\"Initializes the contract admin\"},\"oracles(address)\":{\"notice\":\"Oracle configuration for assets\"},\"setOracle(address,address)\":{\"notice\":\"Sets an oracle to use for a specific asset\"}},\"notice\":\"Reference oracle is the oracle that is not used for production but required for price monitoring. This oracle contains some extra configurations for assets required to compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ReferenceOracle.sol\":\"ReferenceOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/ReferenceOracle.sol\":{\"keccak256\":\"0xa088ba1fb64a6e4a56fc174dd53834d8588d26d99dc5a9940a9f7810e09de8cc\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://03fec3be4528acd08f4652227ad6b45bd4908d18e82fb86a9d32332b995671a3\",\"dweb:/ipfs/QmREhRD3K1sEfvbgtWMk3akEA1TsspewnxH9kWuDMCbv4K\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:error":"ZeroAddressNotAllowed is thrown if resilient oracle address is null","custom:oz-upgrades-unsafe-allow":"constructor","params":{"resilientOracle":"Resilient oracle address"}},"getPrice(address)":{"params":{"asset":"asset address"},"returns":{"_0":"USD price in scaled decimal places"}},"getPriceAssuming(address,(address,uint256)[])":{"params":{"asset":"asset address","externalPrices":"an array of prices for other assets"},"returns":{"_0":"USD price in scaled decimal places"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setOracle(address,address)":{"custom:access":"Only owner","custom:error":"ZeroAddressNotAllowed is thrown if asset address is null","custom:event":"Emits OracleConfigured event","details":"The production resilientOracle will be used if zero address is passed","params":{"asset":"Asset address","oracle":"Oracle address"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"RESILIENT_ORACLE":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"title":"ReferenceOracle","version":1},"userdoc":{"errors":{"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"OracleConfigured(address,address)":{"notice":"Event emitted when an oracle is set"}},"kind":"user","methods":{"PRICES_SLOT()":{"notice":"Slot to temporarily store price information from external sources like CMC/Coingecko, useful to compute prices of derivative assets based on prices of the base assets with no on chain price information"},"RESILIENT_ORACLE()":{"notice":"Resilient oracle address"},"constructor":{"notice":"Constructor for the implementation contract. Sets immutable variables."},"getPrice(address)":{"notice":"Gets price of the asset"},"getPriceAssuming(address,(address,uint256)[])":{"notice":"Gets price of the asset assuming other assets have the defined price"},"initialize()":{"notice":"Initializes the contract admin"},"oracles(address)":{"notice":"Oracle configuration for assets"},"setOracle(address,address)":{"notice":"Sets an oracle to use for a specific asset"}},"notice":"Reference oracle is the oracle that is not used for production but required for price monitoring. This oracle contains some extra configurations for assets required to compute reference prices of their derivative assets (OneJump, ERC4626, Pendle, etc.)","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3694,"contract":"contracts/ReferenceOracle.sol:ReferenceOracle","label":"oracles","offset":0,"slot":"151","type":"t_mapping(t_address,t_contract(OracleInterface)5140)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(OracleInterface)5140":{"encoding":"inplace","label":"contract OracleInterface","numberOfBytes":"20"},"t_mapping(t_address,t_contract(OracleInterface)5140)":{"encoding":"mapping","key":"t_address","label":"mapping(address => contract OracleInterface)","numberOfBytes":"32","value":"t_contract(OracleInterface)5140"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0001000000000002000900000000000200000000030100190000006003300270000001120330019700000001002001900000001c0000c13d0000008002000039000000400020043f000000040030008c000000420000413d000000000201043b000000e0022002700000011e0020009c000000440000213d000001260020009c0000005a0000213d0000012a0020009c000000bd0000613d0000012b0020009c000000de0000613d0000012c0020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0441028f0000040f000000e80000013d0000000002000416000000000002004b000000420000c13d0000001f023000390000011302200197000000a002200039000000400020043f0000001f0230018f00000005043002720000002e0000613d000000a0050000390000000506400210000000a006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002a0000c13d000000000002004b0000003d0000613d0000000504400210000000000141034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000200030008c000000420000413d000000a00100043d000001140010009c0000006c0000a13d000000000100001900000443000104300000011f0020009c000000760000213d000001230020009c000000ef0000613d000001240020009c0000010d0000613d000001250020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000001000412000700000001001d000600000000001d000080050100003900000044030000390000000004000415000000070440008a000000050440021000000131020000410441041e0000040f0000015d0000013d000001270020009c000001120000613d000001280020009c0000012b0000613d000001290020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000006501000039000000000101041a00000114021001970000000001000411000000000012004b000001ce0000c13d044103ef0000040f0000000001000019000004420001042e000000000001004b000000990000c13d000000400100043d0000011c020000410000000000210435000001120010009c000001120100804100000040011002100000011d011001c70000044300010430000001200020009c000001480000613d000001210020009c000001580000613d000001220020009c000000420000c13d000000240030008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000401100370000000000601043b000001140060009c000000420000213d0000003301000039000000000101041a00000114051001970000000001000411000000000015004b000001750000c13d0000006501000039000000000201041a0000012d02200197000000000262019f000000000021041b0000000001000414000001120010009c0000011201008041000000c0011002100000012e011001c70000800d0200003900000003030000390000012f04000041000001430000013d000000800010043f000000000200041a0000ff0000200190000001610000c13d000000ff0320018f000000ff0030008c000000b50000613d000000ff012001bf000000000010041b000000ff01000039000000400200043d0000000000120435000001120020009c000001120200804100000040012002100000000002000414000001120020009c0000011202008041000000c002200210000000000112019f00000119011001c70000800d0200003900000001030000390000011a04000041044104370000040f0000000100200190000000420000613d000000800100043d0000000102000039000001400000044300000160001004430000002001000039000001000010044300000120002004430000011b01000041000004420001042e000000440030008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000402100370000000000202043b000100000002001d000001140020009c000000420000213d0000002402100370000000000202043b000001430020009c000000420000213d0000002304200039000000000034004b000000420000813d0000000404200039000000000441034f000000000504043b000001440050009c000000d80000813d00000005045002100000003f044000390000014504400197000001460040009c000001e80000a13d000001490100004100000000001004350000004101000039000000040010043f0000014a010000410000044300010430000000240030008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000401100370000000000101043b000001140010009c000000420000213d044102bd0000040f000000400200043d0000000000120435000001120020009c0000011202008041000000400120021000000142011001c7000004420001042e0000000001000416000000000001004b000000420000c13d0000000002000415000000090220008a0000000502200210000000000300041a0000ff00013001900000017e0000c13d0000000002000415000000080220008a0000000502200210000000ff003001900000017e0000c13d000001360130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001a20000c13d000000400100043d00000064021000390000013803000041000000000032043500000044021000390000013903000041000000000032043500000024021000390000002b030000390000016a0000013d0000000001000416000000000001004b000000420000c13d00000033010000390000015c0000013d000000440030008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000402100370000000000302043b000001140030009c000000420000213d0000002401100370000000000401043b000001140040009c000000420000213d0000003301000039000000000101041a00000114011001970000000002000411000000000021004b000001750000c13d000000000003004b000001f40000c13d0000011c01000041000000800010043f000001410100004100000443000104300000000001000416000000000001004b000000420000c13d0000003301000039000000000201041a00000114052001970000000003000411000000000035004b000001750000c13d0000006503000039000000000403041a0000012d04400197000000000043041b0000012d02200197000000000021041b0000000001000414000001120010009c0000011201008041000000c0011002100000012e011001c70000800d02000039000000030300003900000137040000410000000006000019044104370000040f0000000100200190000000420000613d0000000001000019000004420001042e000000240030008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000401100370000000000101043b000001140010009c000000420000213d00000000001004350000009701000039000000200010043f00000040020000390000000001000019044104090000040f0000015c0000013d0000000001000416000000000001004b000000420000c13d0000006501000039000000000101041a0000011401100197000000800010043f0000013001000041000004420001042e000000400100043d00000064021000390000011503000041000000000032043500000044021000390000011603000041000000000032043500000024021000390000002703000039000000000032043500000117020000410000000000210435000000040210003900000020030000390000000000320435000001120010009c0000011201008041000000400110021000000118011001c700000443000104300000011701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000013d01000041000000c40010043f0000013e010000410000044300010430000500000002001d000300000001001d000400000003001d00000132010000410000000000100439000000000100041000000004001004430000000001000414000001120010009c0000011201008041000000c00110021000000133011001c700008002020000390441043c0000040f0000000100200190000001da0000613d000000000101043b000000000001004b000001db0000c13d0000000403000029000000ff0130018f000000010010008c0000000001000019000000010100603900000005020000290000000502200270000000000201001f000001de0000c13d000000030000006b000000fd0000613d0000014f01300197000000010200003900000001011001bf000000000010041b0000ff0000100190000001030000613d000500000002001d0000006501000039000000000201041a0000012d02200197000000000021041b000000000100041100000114061001970000003301000039000000000201041a0000012d03200197000000000363019f000000000031041b00000000010004140000011405200197000001120010009c0000011201008041000000c0011002100000012e011001c70000800d0200003900000003030000390000013704000041044104370000040f0000000100200190000000420000613d000000050000006b000001460000c13d000000000200041a0000015001200197000000000010041b0000000103000039000000400100043d0000000000310435000001120010009c000001120100804100000040011002100000000002000414000001120020009c0000011202008041000000c002200210000000000112019f00000119011001c70000800d020000390000011a04000041000001430000013d0000011701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000013a01000041000000c40010043f0000013b01000041000000e40010043f0000013c010000410000044300010430000000000001042f00000005010000290000000501100270000000000100001f000000400100043d00000064021000390000013403000041000000000032043500000044021000390000013503000041000000000032043500000024021000390000002e030000390000016a0000013d0000008004400039000000400040043f000000800050043f000000240220003900000006045002100000000004240019000000000034004b000000420000213d000000000005004b000002130000c13d0000000101000029000000e70000013d00000000003004350000009701000039000000200010043f0000000001000414000001120010009c0000011201008041000000c0011002100000013f011001c70000801002000039000500000003001d000400000004001d0441043c0000040f000000040300002900000005050000290000000100200190000000420000613d0000011406300197000000000101043b000000000201041a0000012d02200197000000000262019f000000000021041b0000000001000414000001120010009c0000011201008041000000c0011002100000012e011001c70000800d0200003900000003030000390000014004000041000001430000013d000000a0050000390000000006230049000001470060009c000000420000213d000000400060008c000000420000413d000000400600043d000001480060009c000000d80000213d0000004007600039000000400070043f000000000721034f000000000707043b000001140070009c000000420000213d00000000077604360000002008200039000000000881034f000000000808043b000000000087043500000000056504360000004002200039000000000042004b000002140000413d000000800100043d000200000001001d000000000001004b000001f20000613d0000000002000019000000800100043d000000000021004b000002890000a13d000400000002001d0000000501200210000000a001100039000000000101043300000020021000390000000002020433000300000002001d0000000001010433000500000001001d000000400100043d00000080021000390000014b03000041000000000032043500000060021000390000014c03000041000000000032043500000040021000390000002c030000390000000000320435000000200210003900000020030000390000000000320435000000800300003900000000003104350000014d0010009c000000d80000213d000000a003100039000000400030043f000001120020009c000001120200804100000040022002100000000001010433000001120010009c00000112010080410000006001100210000000000121019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f0000000100200190000000420000613d00000005020000290000011402200197000000000301043b000000400100043d0000004004100039000000000024043500000020021000390000000000320435000000400300003900000000003104350000014e0010009c000000d80000213d0000006003100039000000400030043f000001120020009c000001120200804100000040022002100000000001010433000001120010009c00000112010080410000006001100210000000000121019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f0000000100200190000000420000613d000000000101043b0000000302000029000000000021044700000004020000290000000102200039000000020020006c000002300000413d000001f20000013d000001490100004100000000001004350000003201000039000000040010043f0000014a010000410000044300010430000000400100043d00000080021000390000014b03000041000000000032043500000060021000390000014c03000041000000000032043500000040021000390000002c0300003900000000003204350000008002000039000000000221043600000020030000390000000000320435000001510010009c000002b50000813d000000a003100039000000400030043f000001120020009c000001120200804100000040022002100000000001010433000001120010009c00000112010080410000006001100210000000000121019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f0000000100200190000002bb0000613d000000000101043b000000000001042d000001490100004100000000001004350000004101000039000000040010043f0000014a010000410000044300010430000000000100001900000443000104300002000000000002000200000001001d000000400100043d00000080021000390000014b03000041000000000032043500000060021000390000014c03000041000000000032043500000040021000390000002c0300003900000000003204350000008002000039000000000221043600000020030000390000000000320435000001510010009c000003b90000813d000000a003100039000000400030043f000001120020009c000001120200804100000040022002100000000001010433000001120010009c00000112010080410000006001100210000000000121019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f0000000100200190000003b70000613d000000000301043b00000002010000290000011404100197000000400100043d0000004002100039000200000004001d000000000042043500000020021000390000000000320435000000400300003900000000003104350000014e0010009c000003b90000213d0000006003100039000000400030043f000001120020009c000001120200804100000040022002100000000001010433000001120010009c00000112010080410000006001100210000000000121019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f0000000100200190000003b70000613d000000000101043b0000000001010446000000000001004b000003090000613d000000000001042d000000020100002900000000001004350000009701000039000000200010043f0000000001000414000001120010009c0000011201008041000000c0011002100000013f011001c700008010020000390441043c0000040f0000000100200190000003b70000613d000000000101043b000000000101041a000000400a00043d000001520200004100000000042a04360000000402a00039000000020300002900000000003204350000011402100198000003280000613d0000000001000414000000040020008c000003430000c13d0000000003000031000000200030008c00000020040000390000000004034019000003720000013d000100000004001d00020000000a001d000001310100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001120010009c0000011201008041000000c00110021000000153011001c700008005020000390441043c0000040f0000000100200190000003bf0000613d000000000201043b00000000010004140000011402200197000000040020008c000000020a0000290000037b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003a80000013d0000011200a0009c000001120300004100000000030a40190000004003300210000001120010009c0000011201008041000000c001100210000000000131019f0000014a011001c700020000000a001d000100000004001d0441043c0000040f000000010b000029000000020a000029000000000301001900000060033002700000011203300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000003600000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b0000035c0000c13d000000000005004b0000036f0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003c00000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000001430010009c000003b90000213d000003b00000013d0000011200a0009c000001120300004100000000030a40190000004003300210000001120010009c0000011201008041000000c001100210000000000131019f0000014a011001c70441043c0000040f000000020a000029000000000301001900000060033002700000011203300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000003960000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000003920000c13d000000000005004b000003a50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003cf0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000001430010009c000003b90000213d0000000100200190000003b90000c13d000000400010043f000000200030008c000003b70000413d00000000010a0433000000000001042d00000000010000190000044300010430000001490100004100000000001004350000004101000039000000040010043f0000014a010000410000044300010430000000000001042f000000400200043d0000001f0430018f00000005053002720000000505500210000003cc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003c80000c13d000000000004004b000003dd0000c13d000003e90000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003db0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003d70000c13d000000000004004b000003e90000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001120020009c00000112020080410000004002200210000000000121019f00000443000104300000006502000039000000000302041a0000012d03300197000000000032041b00000114061001970000003301000039000000000201041a0000012d03200197000000000363019f000000000031041b00000000010004140000011405200197000001120010009c0000011201008041000000c0011002100000012e011001c70000800d0200003900000003030000390000013704000041044104370000040f0000000100200190000004060000613d000000000001042d00000000010000190000044300010430000000000001042f000001120010009c00000112010080410000004001100210000001120020009c00000112020080410000006002200210000000000112019f0000000002000414000001120020009c0000011202008041000000c002200210000000000112019f0000012e011001c700008010020000390441043c0000040f00000001002001900000041c0000613d000000000101043b000000000001042d0000000001000019000004430001043000000000050100190000000000200439000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b000004210000413d000001120030009c000001120300804100000060013002100000000002000414000001120020009c0000011202008041000000c002200210000000000112019f00000154011001c700000000020500190441043c0000040f0000000100200190000004360000613d000000000101043b000000000001042d000000000001042f0000043a002104210000000102000039000000000001042d0000000002000019000000000001042d0000043f002104230000000102000039000000000001042d0000000002000019000000000001042d0000044100000432000004420001042e0000044300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff616c697a696e6700000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e69746908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249800000002000000000000000000000000000000800000010000000000000000008579befe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000008129fc1b00000000000000000000000000000000000000000000000000000000addd509800000000000000000000000000000000000000000000000000000000addd509900000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000a4edcd4c000000000000000000000000000000000000000000000000000000005c38eb39000000000000000000000000000000000000000000000000000000005c38eb3a00000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000079ba509700000000000000000000000000000000000000000000000000000000310770b50000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000539b18a1ffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000040000000000000000000000000e625c7b7d4661988d3a1140f3225faefa7b57c73524adb62fd77dbc945a6db8200000000000000000000000000000000000000040000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000000000000100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007261636c652f707269636573000000000000000000000000000000000000000076656e75732d70726f746f636f6c2f6f7261636c652f5265666572656e63654f000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000ffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff000000000000000000000000000000000000000000000000ffffffffffffff6041976e090000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000440000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"PRICES_SLOT()":"539b18a1","RESILIENT_ORACLE()":"a4edcd4c","acceptOwnership()":"79ba5097","getPrice(address)":"41976e09","getPriceAssuming(address,(address,uint256)[])":"310770b5","initialize()":"8129fc1c","oracles(address)":"addd5099","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setOracle(address,address)":"5c38eb3a","transferOwnership(address)":"f2fde38b"}},"hash":"01000155c19ded9b99cbf1078d99af14c530b0b70f7e68f58e581f95187ee103","factoryDependencies":{}}},"contracts/ResilientOracle.sol":{"ResilientOracle":{"abi":[{"inputs":[{"internalType":"address","name":"nativeMarketAddress","type":"address"},{"internalType":"address","name":"vaiAddress","type":"address"},{"internalType":"contract BoundValidatorInterface","name":"_boundValidator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"CachedEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"uint256","name":"role","type":"uint256"},{"indexed":true,"internalType":"bool","name":"enable","type":"bool"}],"name":"OracleEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":true,"internalType":"uint256","name":"role","type":"uint256"}],"name":"OracleSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"mainOracle","type":"address"},{"indexed":true,"internalType":"address","name":"pivotOracle","type":"address"},{"indexed":false,"internalType":"address","name":"fallbackOracle","type":"address"}],"name":"TokenConfigAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"CACHE_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALID_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boundValidator","outputs":[{"internalType":"contract BoundValidatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"enum ResilientOracle.OracleRole","name":"role","type":"uint8"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"enableOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"enum ResilientOracle.OracleRole","name":"role","type":"uint8"}],"name":"getOracle","outputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getTokenConfig","outputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address[3]","name":"oracles","type":"address[3]"},{"internalType":"bool[3]","name":"enableFlagsForOracles","type":"bool[3]"},{"internalType":"bool","name":"cachingEnabled","type":"bool"}],"internalType":"struct ResilientOracle.TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nativeMarket","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"enum ResilientOracle.OracleRole","name":"role","type":"uint8"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address[3]","name":"oracles","type":"address[3]"},{"internalType":"bool[3]","name":"enableFlagsForOracles","type":"bool[3]"},{"internalType":"bool","name":"cachingEnabled","type":"bool"}],"internalType":"struct ResilientOracle.TokenConfig","name":"tokenConfig","type":"tuple"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address[3]","name":"oracles","type":"address[3]"},{"internalType":"bool[3]","name":"enableFlagsForOracles","type":"bool[3]"},{"internalType":"bool","name":"cachingEnabled","type":"bool"}],"internalType":"struct ResilientOracle.TokenConfig[]","name":"tokenConfigs_","type":"tuple[]"}],"name":"setTokenConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"updateAssetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vai","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeMarketAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaiAddress\",\"type\":\"address\"},{\"internalType\":\"contract BoundValidatorInterface\",\"name\":\"_boundValidator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"CachedEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"OracleEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"OracleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mainOracle\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pivotOracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fallbackOracle\",\"type\":\"address\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CACHE_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INVALID_PRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"boundValidator\",\"outputs\":[{\"internalType\":\"contract BoundValidatorInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"enableOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"getOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"},{\"internalType\":\"bool\",\"name\":\"cachingEnabled\",\"type\":\"bool\"}],\"internalType\":\"struct ResilientOracle.TokenConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeMarket\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum ResilientOracle.OracleRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"},{\"internalType\":\"bool\",\"name\":\"cachingEnabled\",\"type\":\"bool\"}],\"internalType\":\"struct ResilientOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address[3]\",\"name\":\"oracles\",\"type\":\"address[3]\"},{\"internalType\":\"bool[3]\",\"name\":\"enableFlagsForOracles\",\"type\":\"bool[3]\"},{\"internalType\":\"bool\",\"name\":\"cachingEnabled\",\"type\":\"bool\"}],\"internalType\":\"struct ResilientOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"updateAssetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vai\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"nativeMarketAddress can be address(0) if on the chain we do not support native market      (e.g vETH on ethereum would not be supported, only vWETH)\",\"params\":{\"_boundValidator\":\"Address of the bound validator contract\",\"nativeMarketAddress\":\"The address of a native market (for bsc it would be vBNB address)\",\"vaiAddress\":\"The address of the VAI token (if there is VAI on the deployed chain).          Set to address(0) of VAI is not existent.\"}},\"enableOracle(address,uint8,bool)\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set\",\"custom:event\":\"Emits OracleEnabled event with asset address, role of the oracle and enabled flag\",\"details\":\"Configuration for the asset **must** already exist and the asset cannot be 0 address\",\"params\":{\"asset\":\"Asset address\",\"enable\":\"Enabled boolean of the oracle\",\"role\":\"Oracle role\"}},\"getOracle(address,uint8)\":{\"params\":{\"asset\":\"asset address\",\"role\":\"Oracle role\"},\"returns\":{\"enabled\":\"Enabled flag of the oracle based on token config\",\"oracle\":\"Oracle address based on role\"}},\"getPrice(address)\":{\"custom:error\":\"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid\",\"params\":{\"asset\":\"asset address\"},\"returns\":{\"_0\":\"price USD price in scaled decimal places.\"}},\"getTokenConfig(address)\":{\"details\":\"Gets token config by asset address\",\"params\":{\"asset\":\"asset address\"},\"returns\":{\"_0\":\"tokenConfig Config for the asset\"}},\"getUnderlyingPrice(address)\":{\"custom:error\":\"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid\",\"params\":{\"vToken\":\"vToken address\"},\"returns\":{\"_0\":\"price USD price in scaled decimal places.\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"custom:access\":\"Only Governance\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setOracle(address,address,uint8)\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Null address error if main-role oracle address is nullNotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set\",\"custom:event\":\"Emits OracleSet event with asset address, oracle address and role of the oracle for the asset\",\"details\":\"Supplied asset **must** exist and main oracle may not be null\",\"params\":{\"asset\":\"Asset address\",\"oracle\":\"Oracle address\",\"role\":\"Oracle role\"}},\"setTokenConfig((address,address[3],bool[3],bool))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress is thrown if asset address is nullNotNullAddress is thrown if main-role oracle address for asset is null\",\"custom:event\":\"Emits TokenConfigAdded event when the asset config is set successfully by the authorized accountEmits CachedEnabled event when the asset cachingEnabled flag is set successfully\",\"details\":\"main oracle **must not** be a null address\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address[3],bool[3],bool)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Throws a length error if the length of the token configs array is 0\",\"params\":{\"tokenConfigs_\":\"Token config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"unpause()\":{\"custom:access\":\"Only Governance\"},\"updateAssetPrice(address)\":{\"details\":\"This function should always be called before calling getPrice\",\"params\":{\"asset\":\"asset address\"}},\"updatePrice(address)\":{\"details\":\"This function should always be called before calling getUnderlyingPrice\",\"params\":{\"vToken\":\"vToken address\"}}},\"stateVariables\":{\"boundValidator\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"nativeMarket\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"vai\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"ResilientOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"CachedEnabled(address,bool)\":{\"notice\":\"Event emitted when an asset cachingEnabled flag is set\"},\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"OracleEnabled(address,uint256,bool)\":{\"notice\":\"Event emitted when an oracle is enabled or disabled\"},\"OracleSet(address,address,uint256)\":{\"notice\":\"Event emitted when an oracle is set\"}},\"kind\":\"user\",\"methods\":{\"CACHE_SLOT()\":{\"notice\":\"Slot to cache the asset's price, used for transient storage custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache keccak256(abi.encode(uint256(keccak256(\\\"venus-protocol/oracle/ResilientOracle/cache\\\")) - 1))   & ~bytes32(uint256(0xff))\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc) and can serve as any underlying asset of a market that supports native tokens\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"boundValidator()\":{\"notice\":\"Bound validator contract address\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract. Sets immutable variables.\"},\"enableOracle(address,uint8,bool)\":{\"notice\":\"Enables/ disables oracle for the input asset. Token config for the input asset **must** exist\"},\"getOracle(address,uint8)\":{\"notice\":\"Gets oracle and enabled status by asset address\"},\"getPrice(address)\":{\"notice\":\"Gets price of the asset\"},\"getUnderlyingPrice(address)\":{\"notice\":\"Gets price of the underlying asset for a given vToken. Validation flow: - Check if the oracle is paused globally - Validate price from main oracle against pivot oracle - Validate price from fallback oracle against pivot oracle if the first validation failed - Validate price from main oracle against fallback oracle if the second validation failed In the case that the pivot oracle is not available but main price is available and validation is successful, main oracle price is returned.\"},\"initialize(address)\":{\"notice\":\"Initializes the contract admin and sets the BoundValidator contract address\"},\"nativeMarket()\":{\"notice\":\"Native market address\"},\"pause()\":{\"notice\":\"Pauses oracle\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setOracle(address,address,uint8)\":{\"notice\":\"Sets oracle for a given asset and role.\"},\"setTokenConfig((address,address[3],bool[3],bool))\":{\"notice\":\"Sets/resets single token configs.\"},\"setTokenConfigs((address,address[3],bool[3],bool)[])\":{\"notice\":\"Batch sets token configs\"},\"unpause()\":{\"notice\":\"Unpauses oracle\"},\"updateAssetPrice(address)\":{\"notice\":\"Updates the capped main oracle snapshot.\"},\"updatePrice(address)\":{\"notice\":\"Updates the capped main oracle snapshot.\"},\"vai()\":{\"notice\":\"VAI address\"}},\"notice\":\"The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets. DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly reported prices. If only one oracle is used, this creates a single point of failure and opens a vector for attacking the protocol. The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect the protocol from oracle attacks. For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source. To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every market. The upper bound ratio represents the deviation between reported price (the price that\\u2019s being validated) and the anchor price (the price we are validating against) above which the reported price will be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below which the reported price will be invalidated. So for oracle price to be considered valid the below statement should be true: ``` anchorRatio = anchorPrice/reporterPrice isValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio ``` In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending on which supports the given market and Binance oracle is used as the fallback oracle. For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the oracle to be stagnant and treat it like it's disabled.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ResilientOracle.sol\":\"ResilientOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0xad32f6821f860555f9530902a65b54203a4f5db2117f4384ae47a124958078db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d362da7417bc7d7cc8623f3d3f8f04c3808d043ee6379568c63a63ec14a124e\",\"dweb:/ipfs/QmYm3wDHUcfGh3MNiRqpWEBbSSYnDSyUsppDATy5DVsfui\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"contracts/ResilientOracle.sol\":{\"keccak256\":\"0xc42d06b29b0b81aa51d0b9e9b9e98c09d855fae3d0824b64d43f95e0b49d284a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://650e5ffd99f4f08d5c50dbf57df1143e20c058606dc71f1bfd4a08f6287821f8\",\"dweb:/ipfs/Qmd7qLsZd3VmMcPcFgFNQrQFpnGQ1MQXLB2zbDMrc6Fnjw\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]},\"contracts/lib/Transient.sol\":{\"keccak256\":\"0x60d7133a48a757ee777cb9230e890ef489ffc33dcea9dadfcf5a8b72f9dd43aa\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9bf75e914ecc45b879fa05281d6398cf6407a2acfd53ec8659d27cbe0225b607\",\"dweb:/ipfs/QmYrm6nyYXX9pSXwGfnHa67FvkARr3YtpVBHaQHgZ6HSZ3\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"nativeMarketAddress can be address(0) if on the chain we do not support native market      (e.g vETH on ethereum would not be supported, only vWETH)","params":{"_boundValidator":"Address of the bound validator contract","nativeMarketAddress":"The address of a native market (for bsc it would be vBNB address)","vaiAddress":"The address of the VAI token (if there is VAI on the deployed chain).          Set to address(0) of VAI is not existent."}},"enableOracle(address,uint8,bool)":{"custom:access":"Only Governance","custom:error":"NotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set","custom:event":"Emits OracleEnabled event with asset address, role of the oracle and enabled flag","details":"Configuration for the asset **must** already exist and the asset cannot be 0 address","params":{"asset":"Asset address","enable":"Enabled boolean of the oracle","role":"Oracle role"}},"getOracle(address,uint8)":{"params":{"asset":"asset address","role":"Oracle role"},"returns":{"enabled":"Enabled flag of the oracle based on token config","oracle":"Oracle address based on role"}},"getPrice(address)":{"custom:error":"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid","params":{"asset":"asset address"},"returns":{"_0":"price USD price in scaled decimal places."}},"getTokenConfig(address)":{"details":"Gets token config by asset address","params":{"asset":"asset address"},"returns":{"_0":"tokenConfig Config for the asset"}},"getUnderlyingPrice(address)":{"custom:error":"Paused error is thrown when resilent oracle is pausedInvalid resilient oracle price error is thrown if fetched prices from oracle is invalid","params":{"vToken":"vToken address"},"returns":{"_0":"price USD price in scaled decimal places."}},"initialize(address)":{"params":{"accessControlManager_":"Address of the access control manager contract"}},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"custom:access":"Only Governance"},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setOracle(address,address,uint8)":{"custom:access":"Only Governance","custom:error":"Null address error if main-role oracle address is nullNotNullAddress error is thrown if asset address is nullTokenConfigExistance error is thrown if token config is not set","custom:event":"Emits OracleSet event with asset address, oracle address and role of the oracle for the asset","details":"Supplied asset **must** exist and main oracle may not be null","params":{"asset":"Asset address","oracle":"Oracle address","role":"Oracle role"}},"setTokenConfig((address,address[3],bool[3],bool))":{"custom:access":"Only Governance","custom:error":"NotNullAddress is thrown if asset address is nullNotNullAddress is thrown if main-role oracle address for asset is null","custom:event":"Emits TokenConfigAdded event when the asset config is set successfully by the authorized accountEmits CachedEnabled event when the asset cachingEnabled flag is set successfully","details":"main oracle **must not** be a null address","params":{"tokenConfig":"Token config struct"}},"setTokenConfigs((address,address[3],bool[3],bool)[])":{"custom:access":"Only Governance","custom:error":"Throws a length error if the length of the token configs array is 0","params":{"tokenConfigs_":"Token config array"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"unpause()":{"custom:access":"Only Governance"},"updateAssetPrice(address)":{"details":"This function should always be called before calling getPrice","params":{"asset":"asset address"}},"updatePrice(address)":{"details":"This function should always be called before calling getUnderlyingPrice","params":{"vToken":"vToken address"}}},"stateVariables":{"boundValidator":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"nativeMarket":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"vai":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"title":"ResilientOracle","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"CachedEnabled(address,bool)":{"notice":"Event emitted when an asset cachingEnabled flag is set"},"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"},"OracleEnabled(address,uint256,bool)":{"notice":"Event emitted when an oracle is enabled or disabled"},"OracleSet(address,address,uint256)":{"notice":"Event emitted when an oracle is set"}},"kind":"user","methods":{"CACHE_SLOT()":{"notice":"Slot to cache the asset's price, used for transient storage custom:storage-location erc7201:venus-protocol/oracle/ResilientOracle/cache keccak256(abi.encode(uint256(keccak256(\"venus-protocol/oracle/ResilientOracle/cache\")) - 1))   & ~bytes32(uint256(0xff))"},"NATIVE_TOKEN_ADDR()":{"notice":"Set this as asset address for Native token on each chain.This is the underlying for vBNB (on bsc) and can serve as any underlying asset of a market that supports native tokens"},"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"boundValidator()":{"notice":"Bound validator contract address"},"constructor":{"notice":"Constructor for the implementation contract. Sets immutable variables."},"enableOracle(address,uint8,bool)":{"notice":"Enables/ disables oracle for the input asset. Token config for the input asset **must** exist"},"getOracle(address,uint8)":{"notice":"Gets oracle and enabled status by asset address"},"getPrice(address)":{"notice":"Gets price of the asset"},"getUnderlyingPrice(address)":{"notice":"Gets price of the underlying asset for a given vToken. Validation flow: - Check if the oracle is paused globally - Validate price from main oracle against pivot oracle - Validate price from fallback oracle against pivot oracle if the first validation failed - Validate price from main oracle against fallback oracle if the second validation failed In the case that the pivot oracle is not available but main price is available and validation is successful, main oracle price is returned."},"initialize(address)":{"notice":"Initializes the contract admin and sets the BoundValidator contract address"},"nativeMarket()":{"notice":"Native market address"},"pause()":{"notice":"Pauses oracle"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setOracle(address,address,uint8)":{"notice":"Sets oracle for a given asset and role."},"setTokenConfig((address,address[3],bool[3],bool))":{"notice":"Sets/resets single token configs."},"setTokenConfigs((address,address[3],bool[3],bool)[])":{"notice":"Batch sets token configs"},"unpause()":{"notice":"Unpauses oracle"},"updateAssetPrice(address)":{"notice":"Updates the capped main oracle snapshot."},"updatePrice(address)":{"notice":"Updates the capped main oracle snapshot."},"vai()":{"notice":"VAI address"}},"notice":"The Resilient Oracle is the main contract that the protocol uses to fetch prices of assets. DeFi protocols are vulnerable to price oracle failures including oracle manipulation and incorrectly reported prices. If only one oracle is used, this creates a single point of failure and opens a vector for attacking the protocol. The Resilient Oracle uses multiple sources and fallback mechanisms to provide accurate prices and protect the protocol from oracle attacks. For every market (vToken) we configure the main, pivot and fallback oracles. The oracles are configured per vToken's underlying asset address. The main oracle oracle is the most trustworthy price source, the pivot oracle is used as a loose sanity checker and the fallback oracle is used as a backup price source. To validate prices returned from two oracles, we use an upper and lower bound ratio that is set for every market. The upper bound ratio represents the deviation between reported price (the price that’s being validated) and the anchor price (the price we are validating against) above which the reported price will be invalidated. The lower bound ratio presents the deviation between reported price and anchor price below which the reported price will be invalidated. So for oracle price to be considered valid the below statement should be true: ``` anchorRatio = anchorPrice/reporterPrice isValid = anchorRatio <= upperBoundAnchorRatio && anchorRatio >= lowerBoundAnchorRatio ``` In most cases, Chainlink is used as the main oracle, other oracles are used as the pivot oracle depending on which supports the given market and Binance oracle is used as the fallback oracle. For a fetched price to be valid it must be positive and not stagnant. If the price is invalid then we consider the oracle to be stagnant and treat it like it's disabled.","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":533,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_paused","offset":0,"slot":"51","type":"t_bool"},{"astId":638,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":221,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_owner","offset":0,"slot":"101","type":"t_address"},{"astId":341,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_pendingOwner","offset":0,"slot":"151","type":"t_address"},{"astId":208,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"_accessControlManager","offset":0,"slot":"201","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":3982,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"tokenConfigs","offset":0,"slot":"251","type":"t_mapping(t_address,t_struct(TokenConfig)3956_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)3_storage":{"base":"t_address","encoding":"inplace","label":"address[3]","numberOfBytes":"96"},"t_array(t_bool)3_storage":{"base":"t_bool","encoding":"inplace","label":"bool[3]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_mapping(t_address,t_struct(TokenConfig)3956_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct ResilientOracle.TokenConfig)","numberOfBytes":"32","value":"t_struct(TokenConfig)3956_storage"},"t_struct(TokenConfig)3956_storage":{"encoding":"inplace","label":"struct ResilientOracle.TokenConfig","members":[{"astId":3942,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"asset","offset":0,"slot":"0","type":"t_address"},{"astId":3947,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"oracles","offset":0,"slot":"1","type":"t_array(t_address)3_storage"},{"astId":3952,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"enableFlagsForOracles","offset":0,"slot":"4","type":"t_array(t_bool)3_storage"},{"astId":3955,"contract":"contracts/ResilientOracle.sol:ResilientOracle","label":"cachingEnabled","offset":0,"slot":"5","type":"t_bool"}],"numberOfBytes":"192"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0001000000000002000f000000000002000000000301001900000060033002700000035d033001970000000100200190000000200000c13d0000008002000039000000400020043f000000040030008c000005e30000413d000000000201043b000000e002200270000003690020009c000000540000a13d0000036a0020009c0000008e0000213d000003740020009c000000bb0000a13d000003750020009c000001810000213d000003780020009c000001e50000613d000003790020009c000005e30000c13d0000000001000416000000000001004b000005e30000c13d000003a501000041000000800010043f000003930100004100000d710001042e0000000002000416000000000002004b000005e30000c13d0000001f023000390000035e02200197000000e002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000320000613d000000e005000039000000e006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002e0000c13d000000000002004b000000400000613d000000000141034f0000000302200210000000e004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000600030008c000005e30000413d000000e00100043d0000035f0010009c000005e30000213d000001000200043d0000035f0020009c000005e30000213d000001200300043d0000035f0030009c000005e30000213d000000000003004b000003cd0000c13d000000400100043d000000440210003900000367030000410000000000320435000000240210003900000015030000390000043d0000013d0000037d0020009c0000009d0000a13d0000037e0020009c000000ff0000a13d0000037f0020009c0000018f0000213d000003820020009c0000028c0000613d000003830020009c000005e30000c13d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000402100370000000000202043b000003b10020009c000005e30000213d0000002304200039000000000034004b000005e30000813d0000000404200039000000000441034f000000000604043b000003b10060009c0000016f0000213d00000005046002100000003f04400039000003b204400197000003950040009c0000016f0000213d0000008005400039000000400050043f000000800060043f000000240220003900000008046002100000000004240019000000000034004b000005e30000213d000000000006004b000004bf0000c13d0000004401500039000003b9020000410000000000210435000000240150003900000011020000390000000000210435000003620100004100000000001504350000000401500039000000200200003900000000002104350000035d0050009c0000035d05008041000000400150021000000368011001c700000d72000104300000036b0020009c000001110000a13d0000036c0020009c000001d20000213d0000036f0020009c000002ae0000613d000003700020009c000005e30000c13d0000000001000416000000000001004b000005e30000c13d0000039201000041000000800010043f000003930100004100000d710001042e000003870020009c000001750000213d0000038b0020009c000002b30000613d0000038c0020009c000002d00000613d0000038d0020009c000005e30000c13d0000000001000416000000000001004b000005e30000c13d000000c001000039000000400010043f0000000901000039000000800010043f000003c501000041000000a00010043f00000080010000390d7007ad0000040f000000400100043d0000003302000039000000000302041a000000ff00300190000004170000c13d0000004402100039000003c7030000410000000000320435000000240210003900000014030000390000043d0000013d0000037a0020009c000002db0000613d0000037b0020009c000002e00000613d0000037c0020009c000005e30000c13d000000640030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000402100370000000000202043b000700000002001d0000035f0020009c000005e30000213d0000002402100370000000000202043b000600000002001d0000035f0020009c000005e30000213d0000004401100370000000000101043b000500000001001d000000020010008c000005e30000213d0000000701000029000000000001004b0000038f0000613d0000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000000101043b000000000101041a0000035f00100198000004af0000613d000000400100043d000003ab0010009c0000016f0000213d00000006020000290006035f0020019b0000004002100039000000400020043f0000002002100039000003ac030000410000000000320435000000200200003900000000002104350d7007ad0000040f000000060200002900000005002001b0000005c10000c13d000000400100043d0000006402100039000003ae0300004100000000003204350000004402100039000003af030000410000035c0000013d000003840020009c000002ed0000613d000003850020009c000002f80000613d000003860020009c000005e30000c13d0000000001000416000000000001004b000005e30000c13d0000009701000039000000000101041a0000035f021001970000000001000411000000000012004b0000042c0000c13d0d700bcd0000040f000000000100001900000d710001042e000003710020009c000003110000613d000003720020009c0000031c0000613d000003730020009c000005e30000c13d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000402100370000000000202043b0000035f0020009c000005e30000213d000000000131034f0000010003000039000000800000043f000000000401034f000000004504043c0000000003530436000001600030008c000001240000c13d0000010003000039000000a00030043f000001c003000039000000400030043f0000016003000039000000001401043c0000000003430436000001c00030008c0000012d0000c13d0000016001000039000000c00010043f000000e00000043f0000000000200435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000000201043b000000400100043d000003950010009c0000016f0000213d0000008003100039000000400030043f000000000302041a0000035f0330019700000000033104360000000104200039000000000404041a0000035f05400197000000400400043d00000000055404360000000206200039000000000606041a0000035f0660019700000000006504350000000305200039000000000505041a0000035f0550019700000040064000390000000000560435000003960040009c0000016f0000213d0000006005400039000000400050043f00000000004304350000000404200039000000000504041a00000397005001980000000006000019000000010600c039000000400400043d000000400740003900000000006704350000ff00005001900000000006000019000000010600c03900000020074000390000000000670435000000ff005001900000000005000019000000010500c0390000000000540435000003960040009c000005270000a13d000003b50100004100000000001004350000004101000039000000040010043f000003b60100004100000d7200010430000003880020009c000003600000613d000003890020009c000003750000613d0000038a0020009c000005e30000c13d0000000001000416000000000001004b000005e30000c13d000000800000043f000003930100004100000d710001042e000003760020009c000003990000613d000003770020009c000005e30000c13d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b0000035f0010009c000002ea0000a13d000005e30000013d000003800020009c0000039f0000613d000003810020009c000005e30000c13d000000440030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000402100370000000000302043b00000000020300190000035f0030009c000005e30000213d0000002401100370000000000101043b000700000001001d000000020010008c000005e30000213d000400000002001d0000000000200435000000fb01000039000000200010043f000000400200003900000000010000190d700d380000040f000000010110003900000007020000290d70076c0000040f000600000002001d000000000101041a000500000001001d00000004010000290000000000100435000000fb01000039000000200010043f000000000100001900000040020000390d700d380000040f000000040110003900000007020000290d7007610000040f0000000302200210000000000101041a000000000121022f000000ff001001900000000001000019000000010100c039000001000020008c00000000020000190000000102004039000000000112016f000000400200043d0000002003200039000000000013043500000006010000290000000301100210000000050310024f0000035f03300197000000ff0010008c000000000300201900000000003204350000035d0020009c0000035d020080410000004001200210000003b0011001c700000d710001042e0000036d0020009c000003b00000613d0000036e0020009c000005e30000c13d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b0000035f0010009c000005e30000213d0000003302000039000000000202041a000000ff00200190000004480000c13d0d700be60000040f0000036d0000013d000001040030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000010005000039000000400050043f0000000402100370000000000202043b0000035f0020009c000005e30000213d000000800020043f0000016004000039000000400040043f0000002403100370000000000303043b0000035f0030009c000005e30000213d000001000030043f0000004406100370000000000606043b0000035f0060009c000005e30000213d000001200060043f0000006406100370000000000606043b0000035f0060009c000005e30000213d000001400060043f000000a00050043f000001c005000039000000400050043f0000008405100370000000000505043b000000000005004b0000000006000019000000010600c039000000000065004b000005e30000c13d000001600050043f000000a405100370000000000505043b000000000005004b0000000006000019000000010600c039000000000065004b000005e30000c13d000001800050043f000000c405100370000000000505043b000000000005004b0000000006000019000000010600c039000000000065004b000005e30000c13d000001a00050043f000000c00040043f000000e401100370000000000101043b000000000001004b0000000004000019000000010400c039000000000041004b000005e30000c13d000000e00010043f000000000002004b000005e50000613d000000000003004b000005e50000613d0000020001000039000000400010043f0000001b01000039000001c00010043f000003a601000041000001e00010043f000001c0010000390d7007ad0000040f000000800100043d0000035f011001970000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000800200043d0000035f05200197000000000101043b000000000201041a0000038f02200197000000000252019f000000000021041b000000a00200043d00000000430204340000035f063001970000000103100039000000000063041b00000000030404330000035f073001970000000203100039000000000073041b000000400220003900000000020204330000035f022001970000000303100039000000000023041b000000c00300043d0000000084030434000000000004004b0000000004000019000000010400c0390000000008080433000000000008004b000001000440c1bf00000040033000390000000003030433000000000003004b000003a7030000410000000003006019000000000334019f0000000404100039000000000034041b0000000501100039000000000401041a000003ca03400197000000e00400043d000000000004004b000000010330c1bf000000000031041b000000400100043d00000000002104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000364011001c70000800d020000390000000403000039000003a8040000410d700d660000040f0000000100200190000005e30000613d000000e00100043d000000800200043d00000000030004140000035f05200197000000000001004b0000000006000019000000010600c0390000035d0030009c0000035d03008041000000c00130021000000390011001c70000800d020000390000000303000039000003a904000041000004270000013d0000000001000416000000000001004b000005e30000c13d000000c001000039000000400010043f0000000701000039000000800010043f000003ba01000041000000a00010043f00000080010000390d7007ad0000040f000000400100043d0000003302000039000000000302041a000000ff00300190000004380000c13d000003ca0330019700000001033001bf000000000032041b000000000200041100000000002104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000364011001c70000800d020000390000000103000039000003bc04000041000004270000013d0000000001000416000000000001004b000005e30000c13d00000097010000390000039d0000013d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b0000035f0010009c000005e30000213d0000006502000039000000000202041a0000035f022001970000000003000411000000000032004b000003fa0000c13d000000000001004b000004810000c13d0000036201000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f000003a101000041000000c40010043f000003a001000041000000e40010043f000003bf0100004100000d72000104300000000001000416000000000001004b000005e30000c13d0000000001000412000f00000001001d000e00400000003d0000800501000039000000440300003900000000040004150000000f0440008a000003a90000013d0000000001000416000000000001004b000005e30000c13d00000065010000390000039d0000013d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b0000035f0010009c000005e30000213d0d700be60000040f0d700c910000040f000000000100001900000d710001042e0000000001000416000000000001004b000005e30000c13d0000003301000039000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000003930100004100000d710001042e0000000001000416000000000001004b000005e30000c13d0000006501000039000000000201041a0000035f052001970000000003000411000000000035004b000003fa0000c13d0000009703000039000000000403041a0000038f04400197000000000043041b0000038f02200197000000000021041b00000000010004140000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d0200003900000003030000390000039e040000410000000006000019000004270000013d0000000001000416000000000001004b000005e30000c13d0000000001000412000b00000001001d000a00200000003d0000800501000039000000440300003900000000040004150000000b0440008a000003a90000013d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b000700000001001d0000035f0010009c000005e30000213d0000000002000415000000090220008a0000000502200210000000000300041a0000ff0001300190000004520000c13d0000000002000415000000080220008a0000000502200210000000ff00300190000004520000c13d0000039d0130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000004760000613d000600000002001d0000009701000039000000000201041a0000038f02200197000000000021041b00000000010004110000035f061001970000006501000039000000000201041a0000038f03200197000000000363019f000000000031041b00000000010004140000035f052001970000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d0200003900000003030000390000039e040000410d700d660000040f0000000100200190000005e30000613d000000000100041a0000ff0000100190000004760000613d000500000001001d000000400100043d0000000705000029000000000005004b000005910000c13d0000006402100039000003a00300004100000000003204350000004402100039000003a1030000410000000000320435000000240210003900000025030000390000040c0000013d000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000101043b0000035f0010009c000005e30000213d0000003302000039000000000202041a000000ff00200190000004480000c13d0d7008850000040f000000400200043d00000000001204350000035d0020009c0000035d0200804100000040012002100000038e011001c700000d710001042e000000640030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000402100370000000000202043b000700000002001d0000035f0020009c000005e30000213d0000002402100370000000000202043b000600000002001d000000020020008c000005e30000213d0000004401100370000000000201043b000000000002004b0000000001000019000000010100c039000500000002001d000000000012004b000005e30000c13d0000000701000029000000000001004b0000049f0000c13d0000036201000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000036701000041000000c40010043f000003c30100004100000d72000104300000000001000416000000000001004b000005e30000c13d000000c901000039000000000101041a000003ac0000013d0000000001000416000000000001004b000005e30000c13d0000000001000412000d00000001001d000c00000000001d0000800501000039000000440300003900000000040004150000000d0440008a0000000504400210000003a4020000410d700d4d0000040f0000035f01100197000000800010043f000003930100004100000d710001042e000000240030008c000005e30000413d0000000002000416000000000002004b000005e30000c13d0000000401100370000000000601043b0000035f0060009c000005e30000213d0000006501000039000000000101041a0000035f051001970000000001000411000000000015004b000003fa0000c13d0000009701000039000000000201041a0000038f02200197000000000262019f000000000021041b00000000010004140000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d0200003900000003030000390000039104000041000004270000013d000000800010043f000000a00020043f000000c00030043f000000000400041a0000ff0000400190000004030000c13d000000ff0540018f000000ff0050008c000003ed0000613d000000ff014001bf000000000010041b000000ff01000039000000400200043d00000000001204350000035d0020009c0000035d02008041000000400120021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000364011001c70000800d02000039000000010300003900000365040000410d700d660000040f0000000100200190000005e30000613d000000c00300043d000000a00200043d000000800100043d0000014000000443000001600010044300000020010000390000018000100443000001a0002004430000004002000039000001c000200443000001e000300443000001000010044300000003010000390000012000100443000003660100004100000d710001042e0000036201000041000000800010043f0000002001000039000000840010043f000000a40010043f000003c801000041000000c40010043f000003c30100004100000d7200010430000000400100043d000000640210003900000360030000410000000000320435000000440210003900000361030000410000000000320435000000240210003900000027030000390000000000320435000003620200004100000000002104350000000402100039000000200300003900000000003204350000035d0010009c0000035d01008041000000400110021000000363011001c700000d7200010430000003ca03300197000000000032041b000000000200041100000000002104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000364011001c70000800d020000390000000103000039000003c6040000410d700d660000040f0000000100200190000005e30000613d000000000100001900000d710001042e0000036201000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000003bd01000041000000c40010043f000003be01000041000000e40010043f000003bf0100004100000d72000104300000004402100039000003bb030000410000000000320435000000240210003900000010030000390000000000320435000003620200004100000000002104350000000402100039000000200300003900000000003204350000035d0010009c0000035d01008041000000400110021000000368011001c700000d72000104300000036201000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000003c401000041000000c40010043f000003c30100004100000d7200010430000600000002001d000400000001001d000500000003001d000003990100004100000000001004390000000001000410000000040010044300000000010004140000035d0010009c0000035d01008041000000c0011002100000039a011001c700008002020000390d700d6b0000040f0000000100200190000004800000613d000000000101043b000000000001004b000004920000c13d0000000503000029000000ff0130018f000000010010008c0000000001000019000000010100603900000006020000290000000502200270000000000201001f000004950000c13d000000040000006b000003310000613d000003ca01300197000000010200003900000001011001bf000000000010041b0000ff0000100190000003370000c13d000000400100043d0000006402100039000003a20300004100000000003204350000004402100039000003a303000041000000000032043500000024021000390000002b030000390000040c0000013d000000000001042f000000c902000039000000000302041a0000038f04300197000000000414019f000000000042041b0000035f02300197000000800020043f000000a00010043f00000000010004140000035d0010009c0000035d01008041000000c001100210000003c9011001c70000800d0200003900000001030000390000039f04000041000004270000013d00000006010000290000000501100270000000000100001f000000400100043d00000064021000390000039b03000041000000000032043500000044021000390000039c03000041000000000032043500000024021000390000002e030000390000040c0000013d0000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000000101043b000000000101041a0000035f00100198000005620000c13d000000400200043d000700000002001d0000036201000041000000000012043500000004012000390d7007570000040f000000070200002900000000012100490000035d0010009c0000035d0100804100000060011002100000035d0020009c0000035d020080410000004002200210000000000121019f00000d7200010430000000a0050000390000000006230049000003b30060009c000005e30000213d000001000060008c000005e30000413d000000400600043d000003950060009c0000016f0000213d0000008007600039000000400070043f000000000721034f000000000707043b0000035f0070009c000005e30000213d00000000087604360000003f07200039000000000037004b0000000009000019000003b409008041000003b407700197000000000007004b000000000a000019000003b40a004041000003b40070009c000000000a09c01900000000000a004b000005e30000c13d000000400900043d000003960090009c0000016f0000213d0000006007900039000000400070043f0000008007200039000000000037004b000005e30000213d000000200a20003900000000007a004b000004ef0000813d000000000b090019000000000ca1034f000000000c0c043b0000035f00c0009c000005e30000213d000000000bcb0436000000200aa0003900000000007a004b000004e70000413d00000000009804350000009f08200039000000000038004b0000000009000019000003b409008041000003b408800197000000000008004b000000000a000019000003b40a004041000003b40080009c000000000a09c01900000000000a004b000005e30000c13d000000400800043d000003960080009c0000016f0000213d0000006009800039000000400090043f000000e009200039000000000039004b000005e30000213d000000000097004b000005120000813d000000000a080019000000000b71034f000000000b0b043b00000000000b004b000000000c000019000000010c00c0390000000000cb004b000005e30000c13d000000000aba04360000002007700039000000000097004b000005070000413d00000040076000390000000000870435000000000791034f000000000707043b000000000007004b0000000008000019000000010800c039000000000087004b000005e30000c13d0000006008600039000000000078043500000000056504360000010002200039000000000042004b000004c00000413d000000800100043d000400000001001d000000000001004b000005ef0000c13d000000400500043d0000007e0000013d0000006005400039000000400050043f000000400510003900000000004504350000000502200039000000000202041a000000ff002001900000000004000019000000010400c0390000006002100039000000000042043500000000010104330000035f04100197000000400100043d0000000004410436000000000303043300000000760304340000035f06600197000000000064043500000000040704330000035f0440019700000040061000390000000000460435000000400330003900000000030304330000035f033001970000006004100039000000000034043500000000030504330000000054030434000000000004004b0000000004000019000000010400c039000000800610003900000000004604350000000004050433000000000004004b0000000004000019000000010400c039000000a005100039000000000045043500000040033000390000000003030433000000000003004b0000000003000019000000010300c039000000c00410003900000000003404350000000002020433000000000002004b0000000002000019000000010200c039000000e00310003900000000002304350000035d0010009c0000035d01008041000000400110021000000398011001c700000d710001042e000000400100043d000003c00010009c0000016f0000813d0000004002100039000000400020043f0000002002100039000003c1030000410000000000320435000000200200003900000000002104350d7007ad0000040f00000007010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d00000006060000290000000302600210000000ff0320020f000003cb03300167000000000101043b000000050460027000000000011400190000000401100039000000000401041a000000000334016f000000050700002900000000022701cf000000000223019f000000000021041b00000000010004140000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d020000390000000403000039000003c204000041000005df0000013d000000c902000039000000000302041a0000038f04300197000000000454019f000000000042041b000000200210003900000000005204350000035f0230019700000000002104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000394011001c70000800d0200003900000001030000390000039f040000410d700d660000040f0000000100200190000005e30000613d0000003301000039000000000201041a000003ca02200197000000000021041b000000060000006b0000042a0000c13d0000ff010100008a000000050110017f000000000010041b000000400100043d000000010300003900000000003104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000364011001c70000800d020000390000036504000041000004270000013d00000007010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000000101043b000000050700002900000000011700190000000101100039000000000201041a0000038f022001970000000606000029000000000262019f000000000021041b00000000010004140000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d020000390000000403000039000003ad0400004100000007050000290d700d660000040f00000001002001900000042a0000c13d000000000100001900000d72000104300000036201000041000001c00010043f0000002001000039000001c40010043f0000001501000039000001e40010043f0000036701000041000002040010043f000003aa0100004100000d7200010430000600000000001d000000800100043d0000000602000029000000000012004b0000070e0000813d0000000501200210000000a0011000390000000001010433000700000001001d00000000210104340000035f00100198000007070000613d000000000102043300000000010104330000035f00100198000007070000613d000500000002001d000000400b00043d000003ab00b0009c0000016f0000213d0000004001b00039000000400010043f0000002003b00039000003a60100004100000000001304350000001b0100003900000000001b0435000000c901000039000000000201041a000000400c00043d0000002401c0003900000040040000390000000000410435000003b701000041000000000d1c04360000000401c000390000000004000411000000000041043500000000010b04330000004404c000390000000000140435000003cc061001970000001f0510018f0000006404c00039000000000043004b0000062d0000813d000000000006004b000006290000613d00000000085300190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000006230000c13d000000000005004b000006470000613d00000000070400190000063d0000013d000000000006004b000006390000613d000000200760008a000003cc077001970000000007740019000000200770003900000000080300190000000009040019000000008a0804340000000009a90436000000000079004b000006350000c13d000000000005004b000006470000613d000000000764001900000000036300190000000305500210000000000607043300000000065601cf000000000656022f00000000030304330000010005500089000000000353022f00000000035301cf000000000363019f00000000003704350000035f02200197000000000341001900000000000304350000000003000414000000040020008c000006520000c13d0000000003000031000000200030008c00000020040000390000000004034019000006880000013d00030000000b001d0000001f01100039000003cc0110019700000064011000390000035d0010009c0000035d0100804100000060011002100000035d00c0009c0000035d0400004100000000040c40190000004004400210000000000141019f0000035d0030009c0000035d03008041000000c003300210000000000131019f00020000000c001d00010000000d001d0d700d6b0000040f0000000109000029000000020c000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000000505400272000006750000613d000000000601034f00000000070c0019000000006806043c0000000007870436000000000097004b000006710000c13d0000001f06400190000006840000613d0000000505500210000000000751034f00000000055c00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000030b0000290000072d0000613d0000001f01400039000000600110018f0000000004c10019000000000014004b00000000010000190000000101004039000003b10040009c0000016f0000213d00000001001001900000016f0000c13d000000400040043f000000200030008c000005e30000413d00000000010c0433000000000001004b0000000002000019000000010200c039000000000021004b000005e30000c13d000000000001004b000007140000613d000000070100002900000000010104330000035f011001970000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f0000000100200190000005e30000613d000000070900002900000000020904330000035f05200197000000000101043b000000000201041a0000038f02200197000000000252019f000000000021041b0000000502000029000000000202043300000000430204340000035f063001970000000103100039000000000063041b00000000030404330000035f073001970000000203100039000000000073041b000000400220003900000000020204330000035f022001970000000303100039000000000023041b000000400390003900000000030304330000000084030434000000000004004b0000000004000019000000010400c0390000000008080433000000000008004b000001000440c1bf00000040033000390000000003030433000000000003004b000003a7030000410000000003006019000000000334019f0000000404100039000000000034041b0000000501100039000000000301041a000003ca033001970000006004900039000500000004001d0000000004040433000000000004004b000000010330c1bf000000000031041b000000400100043d00000000002104350000035d0010009c0000035d01008041000000400110021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000121019f00000364011001c70000800d020000390000000403000039000003a8040000410d700d660000040f0000000100200190000005e30000613d000000050100002900000000010104330000000702000029000000000202043300000000030004140000035f05200197000000000001004b0000000006000019000000010600c0390000035d0030009c0000035d03008041000000c00130021000000390011001c70000800d020000390000000303000039000003a9040000410d700d660000040f0000000100200190000005e30000613d00000006020000290000000102200039000600000002001d000000040020006c000005f00000413d0000042a0000013d000000400200043d000700000002001d0000036201000041000000000012043500000004012000390d70074d0000040f000004b50000013d000003b50100004100000000001004350000003201000039000000040010043f000003b60100004100000d7200010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000003b8010000410000000000140435000000040140003900000000020004110000000000210435000000640240003900000000010b0019000700000004001d0d7007770000040f000000070200002900000000012100490000035d0010009c0000035d010080410000035d0020009c0000035d0200804100000060011002100000004002200210000000000121019f00000d7200010430000000400200043d0000001f0430018f00000005053002720000000505500210000007390000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007350000c13d000000000004004b000007470000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000035d0020009c0000035d020080410000004002200210000000000112019f00000d7200010430000000400210003900000367030000410000000000320435000000200210003900000015030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0000004002100039000003cd030000410000000000320435000000200210003900000017030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000000030020008c000007660000813d00000005032002700000000001130019000000000001042d000003b50100004100000000001004350000003201000039000000040010043f000003b60100004100000d7200010430000000030020008c000007710000813d00000000011200190000000002000019000000000001042d000003b50100004100000000001004350000003201000039000000040010043f000003b60100004100000d720001043000000000430104340000000001320436000003cc063001970000001f0530018f000000000014004b0000078d0000813d000000000006004b000007890000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000007830000c13d000000000005004b000007a70000613d00000000070100190000079d0000013d000000000006004b000007990000613d000000200760008a000003cc077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007950000c13d000000000005004b000007a70000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000003cc023001970000000001210019000000000001042d0003000000000002000000000c010019000000c901000039000000000201041a000000400e00043d0000002401e0003900000040030000390000000000310435000003b701000041000000000f1e04360000000401e00039000000000d0004110000000000d104350000004403e0003900000000510c043400000000001304350000035f02200197000003cc071001970000001f0610018f0000006404e00039000000000045004b000007d30000813d000000000007004b000007cf0000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000007c90000c13d000000000006004b000007ed0000613d0000000008040019000007e30000013d000000000007004b000007df0000613d000000200870008a000003cc08800197000000000848001900000020088000390000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b000007db0000c13d000000000006004b000007ed0000613d000000000874001900000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f0000000000580435000000000441001900000000000404350000000004000414000000040020008c000007f70000c13d0000000003000031000000200030008c000000200400003900000000040340190000082f0000013d00030000000c001d0000001f01100039000003cc0110019700000064011000390000035d0010009c0000035d0100804100000060011002100000035d00e0009c0000035d0300004100000000030e40190000004003300210000000000131019f0000035d0040009c0000035d04008041000000c003400210000000000131019f00020000000e001d00010000000f001d0d700d6b0000040f000000010a000029000000020e000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000081b0000613d000000000701034f00000000080e0019000000007907043c00000000089804360000000000a8004b000008170000c13d000000000005004b0000082a0000613d0000000506600210000000000761034f00000000066e00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000000030c000029000000000d000411000008650000613d0000001f01400039000000600110018f0000000004e10019000000000014004b00000000010000190000000101004039000003b10040009c000008470000213d0000000100100190000008470000c13d000000400040043f0000001f0030008c000008450000a13d00000000010e0433000000000001004b0000000002000019000000010200c039000000000021004b000008450000c13d000000000001004b0000084d0000613d000000000001042d000000000100001900000d7200010430000003b50100004100000000001004350000004101000039000000040010043f000003b60100004100000d7200010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000003b801000041000000000014043500000004014000390000000000d10435000000640240003900000000010c0019000300000004001d0d7007770000040f000000030200002900000000012100490000035d0010009c0000035d010080410000035d0020009c0000035d0200804100000060011002100000004002200210000000000121019f00000d7200010430000000400200043d0000001f0430018f00000005053002720000000505500210000008710000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000086d0000c13d000000000004004b0000087f0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000035d0020009c0000035d020080410000004002200210000000000112019f00000d7200010430000d000000000002000000400200043d000000400300003900000000033204360000035f041001970000004001200039000700000004001d000000000041043500000392010000410000000000130435000003ce0020009c00000b640000813d0000006001200039000000400010043f0000035d0030009c0000035d03008041000000400130021000000000020204330000035d0020009c0000035d020080410000006002200210000000000112019f00000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000390011001c700008010020000390d700d6b0000040f000000010020019000000b620000613d000000000101043b0000000005010446000000000005004b00000aca0000c13d00000007010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f000000010020019000000b620000613d000000000101043b0000000402100039000000000202041a0000ff0000200190000008d10000613d0000000201100039000000000101041a0000035f05100198000008d40000613d000000400a00043d000003cf0100004100000000031a04360000000401a00039000000070200002900000000002104350000000001000414000000040050008c000008d60000c13d00000000010004150000000d0110008a00000005011002100000000003000031000000200030008c00000020040000390000000004034019000d00000000001d0000090d0000013d000500000000001d000300000000001d000009220000013d00000000020000190000091d0000013d0000035d00a0009c0000035d0200004100000000020a401900000040022002100000035d0010009c0000035d01008041000000c001100210000000000121019f000003b6011001c7000600000005001d000000000205001900050000000a001d000400000003001d0d700d6b0000040f000000040b000029000000050a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000008f50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000008f10000c13d000000000005004b000009040000613d0000000506600210000000000161034f00000000066a00190000000305500210000000000706043300000000075701cf000000000757022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f0000000000160435000000000003001f00000000010004150000000c0110008a0000000501100210000c00000000001d0000000100200190000000000200001900000006050000290000091d0000613d0000001f02400039000000600420018f0000000002a40019000000000042004b00000000040000190000000104004039000003b10020009c00000b640000213d000000010040019000000b640000c13d000000400020043f000000200030008c00000b620000413d00000000020a04330000000501100270000000000102001f000300000002001d000000000005004b0000000001000019000000010100c039000500000001001d0000000001000415000600000001001d00000007010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f000000010020019000000b620000613d000000000101043b0000000402100039000000000202041a000000ff00200190000009b90000613d0000000101100039000000000101041a0000035f02100198000009b90000613d000000400a00043d000003cf0100004100000000041a04360000000401a00039000000070300002900000000003104350000000001000414000000040020008c0000094b0000c13d00000000010004150000000b0110008a00000005011002100000000003000031000000200030008c000000200400003900000000040340190000097d0000013d0000035d00a0009c0000035d0300004100000000030a401900000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f000003b6011001c700040000000a001d000200000004001d0d700d6b0000040f000000020b000029000000040a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000009680000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009640000c13d000000000005004b000009770000613d0000000506600210000000000161034f00000000066a00190000000305500210000000000706043300000000075701cf000000000757022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f0000000000160435000000000003001f00000000010004150000000a0110008a00000005011002100000000100200190000009b90000613d0000001f02400039000000600220018f0000000004a20019000000000024004b00000000020000190000000102004039000003b10040009c00000b640000213d000000010020019000000b640000c13d000000400040043f000000200030008c00000b620000413d00000000050a04330000000501100270000000000105001f000000050000006b00000acc0000613d0000000302000029000000000002004b00000b180000613d000000440140003900000000002104350000002401400039000200000005001d0000000000510435000003d0010000410000000001140436000500000001001d000400000004001d000000040140003900000007020000290000000000210435000003a4010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000035d0010009c0000035d01008041000000c001100210000003d1011001c700008005020000390d700d6b0000040f000000010020019000000b6a0000613d000000000201043b00000000010004140000035f02200197000000040020008c00000b1a0000c13d0000000003000031000000200030008c000000200400003900000000040340190000000205000029000000040a00002900000b480000013d000000000100041500000006011000690000000001000002000400010000003d000600000000001d0000000001000415000500000001001d00000007010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f000000010020019000000b620000613d000000000101043b0000000402100039000000000202041a0000039700200198000009e80000613d0000000301100039000000000101041a0000035f02100198000000000500001900000a570000613d000000400a00043d000003cf0100004100000000041a04360000000401a00039000000070300002900000000003104350000000001000414000000040020008c000009ea0000c13d0000000001000415000000090110008a00000005011002100000000003000031000000200030008c0000002004000039000000000403401900000a1d0000013d000000000500001900000a570000013d0000035d00a0009c0000035d0300004100000000030a401900000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f000003b6011001c700020000000a001d000100000004001d0d700d6b0000040f000000010b000029000000020a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f000000050640027200000a070000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000a030000c13d000000000005004b00000a160000613d0000000506600210000000000161034f00000000066a00190000000305500210000000000706043300000000075701cf000000000757022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f0000000000160435000000000003001f0000000001000415000000080110008a00000005011002100000000100200190000000000500001900000a570000613d0000001f02400039000000600220018f0000000004a20019000000000024004b00000000020000190000000102004039000003b10040009c00000b640000213d000000010020019000000b640000c13d000000400040043f000000200030008c00000b620000413d00000000050a04330000000501100270000000000105001f0000000302000029000000000002004b00000a570000613d000000440140003900000000002104350000002401400039000200000005001d0000000000510435000003d0010000410000000001140436000300000001001d000100000004001d000000040140003900000007020000290000000000210435000003a4010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000035d0010009c0000035d01008041000000c001100210000003d1011001c700008005020000390d700d6b0000040f000000010020019000000b6a0000613d000000000201043b00000000010004140000035f02200197000000040020008c00000ad20000c13d0000000003000031000000200030008c000000200400003900000000040340190000000205000029000000010a00002900000b000000013d000000000100041500000005011000690000000001000002000000000005004b0000000001000019000000010100603900000004011001af000000400300043d000000010010019000000b6b0000c13d00000044013000390000000000510435000000240130003900000006020000290000000000210435000003d0010000410000000001130436000400000001001d000500000003001d000000040130003900000007020000290000000000210435000003a4010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000035d0010009c0000035d01008041000000c001100210000003d1011001c700008005020000390d700d6b0000040f000000010020019000000b6a0000613d000000000201043b00000000010004140000035f02200197000000040020008c00000a870000c13d0000000003000031000000200030008c00000020040000390000000004034019000000050a00002900000ab40000013d00000005030000290000035d0030009c0000035d0300804100000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f00000368011001c70d700d6b0000040f000000050a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040b00002900000aa20000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000a9e0000c13d000000000005004b00000ab10000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000b7c0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003b10010009c00000b640000213d000000010020019000000b640000c13d000000400010043f000000200030008c00000b620000413d00000000020a0433000000000002004b0000000003000019000000010300c039000000000032004b00000b620000c13d000000000002004b000000060500002900000b6c0000613d0000000001050019000000000001042d000000000100041500000006011000690000000001000002000000000005004b00000aca0000c13d000009bc0000013d00000001030000290000035d0030009c0000035d0300804100000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f00000368011001c70d700d6b0000040f000000010a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b00002900000aed0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000ae90000c13d000000000005004b00000afc0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000b9d0000613d00000002050000290000001f01400039000000600110018f0000000001a10019000003b10010009c00000b640000213d000000400010043f000000200030008c00000b620000413d00000000020a0433000000000002004b0000000001000019000000010100c039000000000012004b00000b620000c13d000000000100041500000005011000690000000001000002000000000005004b0000000001000019000000010100603900000a5d0000613d000000000002004b00000aca0000c13d00000a5d0000013d000000000100001900000b560000013d00000004030000290000035d0030009c0000035d0300804100000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f00000368011001c70d700d6b0000040f000000040a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050b00002900000b350000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000b310000c13d000000000005004b00000b440000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000bac0000613d00000002050000290000001f01400039000000600110018f0000000001a10019000003b10010009c00000b640000213d000000400010043f000000200030008c00000b620000413d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b00000b620000c13d000000000200041500000006022000690000000002000002000000000005004b000009bc0000613d000000000001004b00000b5f0000613d0000000001050019000000000001042d000400000000001d000600000005001d000009be0000013d000000000100001900000d7200010430000003b50100004100000000001004350000004101000039000000040010043f000003b60100004100000d7200010430000000000001042f00000000010300190000004402100039000003d203000041000000000032043500000024021000390000001e030000390000000000320435000003620200004100000000002104350000000402100039000000200300003900000000003204350000035d0010009c0000035d01008041000000400110021000000368011001c700000d7200010430000000400200043d0000001f0430018f000000050530027200000b880000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000b840000c13d000000000004004b00000b970000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000035d0020009c0000035d020080410000004002200210000000000121019f00000d7200010430000000400200043d0000001f0430018f000000050530027200000ba90000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000ba50000c13d000000000004004b00000bc70000613d00000bba0000013d000000400200043d0000001f0430018f000000050530027200000bb80000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000bb40000c13d000000000004004b00000bc70000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000035d0020009c0000035d020080410000004002200210000000000112019f00000d72000104300000009702000039000000000302041a0000038f03300197000000000032041b0000035f061001970000006501000039000000000201041a0000038f03200197000000000363019f000000000031041b00000000010004140000035f052001970000035d0010009c0000035d01008041000000c00110021000000390011001c70000800d0200003900000003030000390000039e040000410d700d660000040f000000010020019000000be40000613d000000000001042d000000000100001900000d720001043000020000000000020002035f0010019c00000c5d0000613d000003a401000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000035d0010009c0000035d01008041000000c001100210000003d1011001c700008005020000390d700d6b0000040f000000000301034f000000010020019000000c5c0000613d000003a501000041000000000203043b0000035f02200197000000020020006b00000c5b0000613d000003a4010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000035d0010009c0000035d01008041000000c001100210000003d1011001c700008005020000390d700d6b0000040f000000010020019000000c5c0000613d000000000101043b0000035f031001970000000202000029000000000032004b00000c5b0000613d000000400a00043d000003d30100004100000000041a04360000000001000414000000040020008c00000c1c0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000c4b0000013d0000035d00a0009c0000035d0300004100000000030a401900000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f000003d4011001c700020000000a001d000100000004001d0d700d6b0000040f000000010b000029000000020a000029000000000301001900000060033002700000035d03300197000000200030008c000000200400003900000000040340190000001f0540018f000000050640027200000c390000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000c350000c13d000000000005004b00000c480000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000c750000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003b10010009c00000c6f0000213d000000010020019000000c6f0000c13d000000400010043f0000001f0030008c00000c6d0000a13d00000000010a04330000035f0010009c00000c6d0000213d000000000001042d000000000001042f000000400200043d000200000002001d0000036201000041000000000012043500000004012000390d70074d0000040f000000020200002900000000012100490000035d0010009c0000035d0100804100000060011002100000035d0020009c0000035d020080410000004002200210000000000121019f00000d7200010430000000000100001900000d7200010430000003b50100004100000000001004350000004101000039000000040010043f000003b60100004100000d7200010430000000400200043d0000001f0430018f0000000505300272000000050550021000000c810000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000c7d0000c13d000000000004004b00000c8f0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000600130021000000c680000013d0004000000000002000000400500043d00000040020000390000000002250436000300000001001d0000035f041001970000004003500039000400000004001d000000000043043500000392030000410000000000320435000003ce0050009c00000d300000813d0000006003500039000000400030043f0000035d0020009c0000035d02008041000000400220021000000000010504330000035d0010009c0000035d010080410000006001100210000000000121019f00000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000390011001c700008010020000390d700d6b0000040f000000010020019000000d2e0000613d000000000101043b0000000001010446000000000001004b00000cb70000613d000000000001042d00000004010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f000000010020019000000d2e0000613d000000000101043b0000000102100039000000000202041a0000035f0220019800000cf70000613d0000000401100039000000000101041a000000ff0010019000000cf70000613d00000399010000410000000000100439000200000002001d000000040020044300000000010004140000035d0010009c0000035d01008041000000c0011002100000039a011001c700008002020000390d700d6b0000040f000000010020019000000d360000613d000000000101043b000000000001004b00000d2e0000613d000000400300043d000003d501000041000000000013043500000000010004140000000202000029000000040020008c00000cf40000613d0000035d0030009c000100000003001d0000035d03000041000000010300402900000040033002100000035d0010009c0000035d01008041000000c001100210000000000131019f000003d4011001c70d700d660000040f000000010300002900000060011002700000035d0010019d000000010020019000000cf70000613d000003b10030009c00000d300000213d000000400030043f00000004010000290000000000100435000000fb01000039000000200010043f00000000010004140000035d0010009c0000035d01008041000000c00110021000000394011001c700008010020000390d700d6b0000040f000000010020019000000d2e0000613d000000000101043b0000000501100039000000000101041a000000ff0010019000000cb60000613d00000003010000290d7008850000040f000000400200043d0000004003200039000000040400002900000000004304350000004003000039000000000332043600000392040000410000000000430435000400000001001d000003960020009c00000d300000213d0000006001200039000000400010043f0000035d0030009c0000035d03008041000000400130021000000000020204330000035d0020009c0000035d020080410000006002200210000000000112019f00000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000390011001c700008010020000390d700d6b0000040f000000010020019000000d2e0000613d000000000101043b00000004020000290000000000210447000000000001042d000000000100001900000d7200010430000003b50100004100000000001004350000004101000039000000040010043f000003b60100004100000d7200010430000000000001042f000000000001042f0000035d0010009c0000035d0100804100000040011002100000035d0020009c0000035d020080410000006002200210000000000112019f00000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f00000390011001c700008010020000390d700d6b0000040f000000010020019000000d4b0000613d000000000101043b000000000001042d000000000100001900000d720001043000000000050100190000000000200439000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00000d500000413d0000035d0030009c0000035d03008041000000600130021000000000020004140000035d0020009c0000035d02008041000000c002200210000000000112019f000003d6011001c700000000020500190d700d6b0000040f000000010020019000000d650000613d000000000101043b000000000001042d000000000001042f00000d69002104210000000102000039000000000001042d0000000002000019000000000001042d00000d6e002104230000000102000039000000000001042d0000000002000019000000000001042d00000d700000043200000d710001042e00000d7200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff616c697a696e6700000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e69746908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498000000020000000000000000000000000000010000000100000000000000000063616e2774206265207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000b62e4c9100000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fc57d4df00000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000e9d1284f00000000000000000000000000000000000000000000000000000000b62e4c9200000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000cb67e3b100000000000000000000000000000000000000000000000000000000a8e6846200000000000000000000000000000000000000000000000000000000b4a0bdf200000000000000000000000000000000000000000000000000000000b4a0bdf300000000000000000000000000000000000000000000000000000000b62cad6900000000000000000000000000000000000000000000000000000000a8e6846300000000000000000000000000000000000000000000000000000000a9534f8a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000096e85ced00000000000000000000000000000000000000000000000000000000a6b1344a000000000000000000000000000000000000000000000000000000005c975aba000000000000000000000000000000000000000000000000000000008456cb58000000000000000000000000000000000000000000000000000000008a2f7f6c000000000000000000000000000000000000000000000000000000008a2f7f6d000000000000000000000000000000000000000000000000000000008b855da4000000000000000000000000000000000000000000000000000000008456cb5900000000000000000000000000000000000000000000000000000000883cfb91000000000000000000000000000000000000000000000000000000005c975abb00000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000079ba50970000000000000000000000000000000000000000000000000000000041976e080000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000004b932b8f000000000000000000000000000000000000000000000000000000004bf39cba000000000000000000000000000000000000000000000000000000000e32cb860000000000000000000000000000000000000000000000000000000033d33494000000000000000000000000000000000000000000000000000000003f4ba83a0000000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227004e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc780000000000000000000000000000000000000000200000008000000000000000000200000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff9f0000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000001000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa06472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb736574546f6b656e436f6e66696728546f6b656e436f6e6669672900000000000000000000000000000000000000000000000000000000000000000000010000a51ad01e2270c314a7b78f0c60fe66c723f2d06c121d63fcdce776e654878fc1ca250c5374abedcbf71c0e3eda7ff4cf940fa9e6561d8cd31d2bf480a140a93f0000000000000000000000000000000000000064000001c00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf7365744f7261636c6528616464726573732c616464726573732c75696e743829ea681d3efb830ef032a9c29a7215b5ceeeb546250d2c463dbf87817aecda1bf17261636c6500000000000000000000000000000000000000000000000000000063616e277420736574207a65726f206164647265737320746f206d61696e206f0000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000006c656e6774682063616e2774206265203000000000000000000000000000000070617573652829000000000000000000000000000000000000000000000000005061757361626c653a207061757365640000000000000000000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2584f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657200000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc0656e61626c654f7261636c6528616464726573732c75696e74382c626f6f6c29cf3cad1ec87208efbde5d82a0557484a78d4182c3ad16926a5463bc1f7234b3d0000000000000000000000000000000000000064000000800000000000000000726573696c69656e74206f7261636c6520697320706175736564000000000000756e7061757365282900000000000000000000000000000000000000000000005db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f74207061757365640000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720200000000000000000000000000000000000040000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0746f6b656e20636f6e666967206d757374206578697374000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa041976e090000000000000000000000000000000000000000000000000000000097c7033e000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000696e76616c696420726573696c69656e74206f7261636c6520707269636500006f307dc300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000069240426000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"CACHE_SLOT()":"e9d1284f","INVALID_PRICE()":"4bf39cba","NATIVE_TOKEN_ADDR()":"a9534f8a","acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","boundValidator()":"33d33494","enableOracle(address,uint8,bool)":"4b932b8f","getOracle(address,uint8)":"8b855da4","getPrice(address)":"41976e09","getTokenConfig(address)":"cb67e3b1","getUnderlyingPrice(address)":"fc57d4df","initialize(address)":"c4d66de8","nativeMarket()":"8a2f7f6d","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","setOracle(address,address,uint8)":"a6b1344a","setTokenConfig((address,address[3],bool[3],bool))":"a8e68463","setTokenConfigs((address,address[3],bool[3],bool)[])":"883cfb91","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","updateAssetPrice(address)":"b62cad69","updatePrice(address)":"96e85ced","vai()":"b62e4c92"}},"hash":"010003d7f41e076885f4ce2a2b556b459e4c7000600db7e0eba5c487e153c2ff","factoryDependencies":{}}},"contracts/interfaces/FeedRegistryInterface.sol":{"FeedRegistryInterface":{"abi":[{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"decimalsByName","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"latestRoundDataByName","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"decimalsByName\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"latestRoundDataByName\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/FeedRegistryInterface.sol\":\"FeedRegistryInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/FeedRegistryInterface.sol\":{\"keccak256\":\"0xf57101e676f7d93b0714f5774a3111a80ce9df0bbaed6d5e78668293c11b04e8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ba65cef548fc89fc731345cc38656ca1a6ccb970657233588d8fb2eeec8aa8c7\",\"dweb:/ipfs/QmYYeoRENPKFPgztvrTU3V3SRpHjf5e1ctAQ6PtB2hp9wi\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimalsByName(string,string)":"6e91995a","latestRoundDataByName(string,string)":"bfda5e71"}}}},"contracts/interfaces/IAccountant.sol":{"IAccountant":{"abi":[{"inputs":[],"name":"getRateSafe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRateSafe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IAccountant.sol\":\"IAccountant\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAccountant.sol\":{\"keccak256\":\"0x04672ffcad2a2f951d7afc7288a5875dc6e67d12445666c959ac64966102b06b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f034d1afbbe39db076d65058d9ab9d4b914f1c87908e72c2ab73aae86fe0d222\",\"dweb:/ipfs/QmXV1D3Ahzs6cCE8KWvqzGNnBsUt4q3bcTo8DyWzi4LWDS\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getRateSafe()":"282a8700"}}}},"contracts/interfaces/IAnkrBNB.sol":{"IAnkrBNB":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sharesToBonds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sharesToBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IAnkrBNB.sol\":\"IAnkrBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAnkrBNB.sol\":{\"keccak256\":\"0x4e04d3cae00fc38b1f754cff9aa4054deea6e8a4d3fe80a1d8f0a54bbe73342e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://0d71b0f99ad632d1ff47444648989868e025044a88bb1344e1bcc9d9550b8755\",\"dweb:/ipfs/QmWi4ZVPWe6Bwb87Nffng2G8TTCQzsJdxTG7LUCsRup2Di\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","sharesToBonds(uint256)":"6c58d43d"}}}},"contracts/interfaces/IAsBNB.sol":{"IAsBNB":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IAsBNB.sol\":\"IAsBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAsBNB.sol\":{\"keccak256\":\"0x34a434d78d48a1c33f79740bab9454fb5eaf05eb38e3abddd3fe55e6f4b4c937\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://5b57d04ca188691bdf445954adbdb2c8dd49d10bd76a20e122c44e9287026277\",\"dweb:/ipfs/QmNwrVGU39FGACYUxxyXT48ugCufzv4SqEJUiosbf4XL2s\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","minter()":"07546172"}}}},"contracts/interfaces/IAsBNBMinter.sol":{"IAsBNBMinter":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertToTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IAsBNBMinter.sol\":\"IAsBNBMinter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAsBNBMinter.sol\":{\"keccak256\":\"0x3cf93eddba855443b20f0dcfd7938448c9b44caa866403f53b6cd5bcf4ec1003\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e18d57275418d11e020c30f1e15c8f702ab3c9387b690e37c1ddd55236f91854\",\"dweb:/ipfs/QmdwsZM4rEACUhfD8z8KJAbi7WpxNp57HxrHnrMssXVgPi\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"convertToTokens(uint256)":"85906256"}}}},"contracts/interfaces/ICappedOracle.sol":{"ICappedOracle":{"abi":[{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ICappedOracle.sol\":\"ICappedOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"updateSnapshot()":"69240426"}}}},"contracts/interfaces/IERC4626.sol":{"IERC4626":{"abi":[{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x7f2096f62d52d5f4db07dce231fc37d7ce25f7aecf4245cc03da87002d3038ff\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c39fe117493680bbaf45d008c51eb9fc507f42b527032e47ee2aeb4229511146\",\"dweb:/ipfs/QmNn77V2DyvX1tQyShSCM7MSyNBYV1kyeU8MgyV55DCiFb\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"convertToAssets(uint256)":"07a2d13a","decimals()":"313ce567"}}}},"contracts/interfaces/IEtherFiLiquidityPool.sol":{"IEtherFiLiquidityPool":{"abi":[{"inputs":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"amountForShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_share\",\"type\":\"uint256\"}],\"name\":\"amountForShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEtherFiLiquidityPool.sol\":\"IEtherFiLiquidityPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IEtherFiLiquidityPool.sol\":{\"keccak256\":\"0xce3955be63e9f3787e90573c72c119238d2e63712c1a828b874145b1f91761d6\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://861adbf644c2884b4c55ac4d3ae94eabb917a3dfd184cda2356b09a5c301ffe8\",\"dweb:/ipfs/QmTxe6CuC4nT1su9FM84KQYxLTXfwzEa2ov5uzUnCWTzU5\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"amountForShare(uint256)":"561bddf8"}}}},"contracts/interfaces/IPStakePool.sol":{"IPStakePool":{"abi":[{"inputs":[],"name":"exchangeRate","outputs":[{"components":[{"internalType":"uint256","name":"totalWei","type":"uint256"},{"internalType":"uint256","name":"poolTokenSupply","type":"uint256"}],"internalType":"struct IPStakePool.Data","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"exchangeRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolTokenSupply\",\"type\":\"uint256\"}],\"internalType\":\"struct IPStakePool.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exchangeRate()\":{\"details\":\"The current exchange rate for converting stkBNB to BNB.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPStakePool.sol\":\"IPStakePool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPStakePool.sol\":{\"keccak256\":\"0xe1f74f35e9873a0e4dd128bd51a78ef548083d8b66771ebee45a27a093cf830d\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://182d5253ec2db09a016be54b92ff349bbb68fa1c74b8f56e8146a6948f56789d\",\"dweb:/ipfs/QmUHD1TG2uLKemkQ3QUnqtGBrRjAThdsxM4yzfmcLWrHpV\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{"exchangeRate()":{"details":"The current exchange rate for converting stkBNB to BNB."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"exchangeRate()":"3ba0b9a9"}}}},"contracts/interfaces/IPendlePtOracle.sol":{"IPendlePtOracle":{"abi":[{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"getOracleState","outputs":[{"internalType":"bool","name":"increaseCardinalityRequired","type":"bool"},{"internalType":"uint16","name":"cardinalityRequired","type":"uint16"},{"internalType":"bool","name":"oldestObservationSatisfied","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"getPtToAssetRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"getPtToSyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"name\":\"getOracleState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"increaseCardinalityRequired\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"cardinalityRequired\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"oldestObservationSatisfied\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"name\":\"getPtToAssetRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"name\":\"getPtToSyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPendlePtOracle.sol\":\"IPendlePtOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPendlePtOracle.sol\":{\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://20c6f0727f06025b7ecaf9613ba78ba44a2a6a305edf347d360bbaaa26288682\",\"dweb:/ipfs/Qma44fx2EGb3sfQRgw79gB5Yaykn1VhLf7wxKcfTvF3ZxF\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getOracleState(address,uint32)":"873e9600","getPtToAssetRate(address,uint32)":"abca0eab","getPtToSyRate(address,uint32)":"a31426d1"}}}},"contracts/interfaces/ISFrax.sol":{"ISFrax":{"abi":[{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISFrax.sol\":\"ISFrax\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISFrax.sol\":{\"keccak256\":\"0x478821eeeb2b7699442dc19b5029f918f650448cb0655b88348a167ea856efb8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a995dfc29d1c157443f29c033087d3507491e1ddf8d5e47ca193bd316117e06b\",\"dweb:/ipfs/QmZUWhVMi71xkQeJFuvMjAsyt6vR6j98XxdsB94ApgBkVW\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"convertToAssets(uint256)":"07a2d13a","decimals()":"313ce567"}}}},"contracts/interfaces/ISfrxEthFraxOracle.sol":{"ISfrxEthFraxOracle":{"abi":[{"inputs":[],"name":"getPrices","outputs":[{"internalType":"bool","name":"_isbadData","type":"bool"},{"internalType":"uint256","name":"_priceLow","type":"uint256"},{"internalType":"uint256","name":"_priceHigh","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getPrices\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"_isbadData\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_priceLow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_priceHigh\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISfrxEthFraxOracle.sol\":\"ISfrxEthFraxOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISfrxEthFraxOracle.sol\":{\"keccak256\":\"0x1444fbcfe658b985041e7ca5da6cce92fd143ca46d9793316ab2ef542fbde87a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://267911fa7bdbc36b71265c3c42fc0b17aa6363dd9145696a1b155e086f19bd07\",\"dweb:/ipfs/QmbYVGQmGrGzWra9mqDbMe97V1HmR5JdmGtUrbsptnQQaj\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getPrices()":"bd9a548b"}}}},"contracts/interfaces/IStETH.sol":{"IStETH":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sharesAmount","type":"uint256"}],"name":"getPooledEthByShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_sharesAmount\",\"type\":\"uint256\"}],\"name\":\"getPooledEthByShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IStETH.sol\":\"IStETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IStETH.sol\":{\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://58ac15ad672bb5b2c4eaf5141df686b39a462d9f8a5ad1e7859999547ad25ea3\",\"dweb:/ipfs/Qmdjvm4qUr3Uy6kTFkbGZeRjk645FT2g36Pq7fxHafhvxf\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","getPooledEthByShares(uint256)":"7a28fb88"}}}},"contracts/interfaces/IStaderStakeManager.sol":{"IStaderStakeManager":{"abi":[{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"convertBnbXToBnb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertBnbXToBnb\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IStaderStakeManager.sol\":\"IStaderStakeManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IStaderStakeManager.sol\":{\"keccak256\":\"0x8caeef2f75ea7996ac155fc0432569238ed148c92f8e719e8ec0bcb4db5b585b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a6218428b7749a7f862e85525877126d36e8328cfdc4343a627928b73f21ffdd\",\"dweb:/ipfs/QmTYBsj6fMx6exWeNkUzWakNAWXQ7gaYSJEwonNzMDtjkg\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"convertBnbXToBnb(uint256)":"ca0506e8"}}}},"contracts/interfaces/ISynclubStakeManager.sol":{"ISynclubStakeManager":{"abi":[{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"convertSnBnbToBnb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertSnBnbToBnb\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISynclubStakeManager.sol\":\"ISynclubStakeManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISynclubStakeManager.sol\":{\"keccak256\":\"0x81da7034490b7e92a26c58e9f22ff08c0c13f9aa9debffc95237684989ce2e3e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://b893b1bc15ae709e4eb683c5a624a714df0c37e16526dcd89c0807b91c039f82\",\"dweb:/ipfs/QmUU5YE2fWPEw81EvT2cH6FJ8SJ5zKEwXJ9aeyvix2DSPA\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"convertSnBnbToBnb(uint256)":"ce6298e1"}}}},"contracts/interfaces/IWBETH.sol":{"IWBETH":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IWBETH.sol\":\"IWBETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IWBETH.sol\":{\"keccak256\":\"0xaff923809f41bf7bc321d5285ddf2c03856a3cf0050c005154e31e811161d7db\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9d16862f49fdc93dc8bef402b8489460e013b4c2f742f3f788c95b91deabe957\",\"dweb:/ipfs/QmRQf8kduAB81ZLp3f88YAzzZ8MLZBzpp3pNtKNk78z34h\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"decimals()":"313ce567","exchangeRate()":"3ba0b9a9"}}}},"contracts/interfaces/IZkETH.sol":{"IZkETH":{"abi":[{"inputs":[],"name":"LSTPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LSTPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IZkETH.sol\":\"IZkETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IZkETH.sol\":{\"keccak256\":\"0xdf8e9d184e0a855a710971f53e61604f4131b6250986982bfaf036689b9622a7\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://986714076bead8cd5f5eb9a2d4b83270df73056dec6101024d93501e2cce4ffa\",\"dweb:/ipfs/QmUdBoG2yKEpTUNrVHA5eJJEK1D8P7iLp9Rkt9xvKrwMbK\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"LSTPerToken()":"39648e00","decimals()":"313ce567"}}}},"contracts/interfaces/OracleInterface.sol":{"BoundValidatorInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"reporterPrice","type":"uint256"},{"internalType":"uint256","name":"anchorPrice","type":"uint256"}],"name":"validatePriceWithAnchorPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reporterPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validatePriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/OracleInterface.sol\":\"BoundValidatorInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"validatePriceWithAnchorPrice(address,uint256,uint256)":"97c7033e"}}},"OracleInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/OracleInterface.sol\":\"OracleInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getPrice(address)":"41976e09"}}},"ResilientOracleInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"updateAssetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"updateAssetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/OracleInterface.sol\":\"ResilientOracleInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getPrice(address)":"41976e09","getUnderlyingPrice(address)":"fc57d4df","updateAssetPrice(address)":"b62cad69","updatePrice(address)":"96e85ced"}}}},"contracts/interfaces/PublicResolverInterface.sol":{"PublicResolverInterface":{"abi":[{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/PublicResolverInterface.sol\":\"PublicResolverInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/PublicResolverInterface.sol\":{\"keccak256\":\"0xe8ea3c3ec3b30f2b2022fe221530b15d18887eb6aa39c10d06d1fd5a0a7d1ece\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9f23aa98ced0191bc30cf7ac29c18bf6bb91ac0921c8b30af38fb76694e63b74\",\"dweb:/ipfs/QmZjSLY7K12tvDy6TNjshN97UPRNYzzPTn6qMh24eJtZcz\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"addr(bytes32)":"3b3b57de"}}}},"contracts/interfaces/SIDRegistryInterface.sol":{"SIDRegistryInterface":{"abi":[{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/SIDRegistryInterface.sol\":\"SIDRegistryInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/SIDRegistryInterface.sol\":{\"keccak256\":\"0x306f0a50d27c016a6e13346901f6c692426af0a755eb913adc4e8494f311c2d2\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ea0fc7e311e8d7104106f8be5226f84fd1f25eed4c6a5ba2b29e317c11e5db6e\",\"dweb:/ipfs/QmNTwyv64DxvbBpZKazurcUAbzxZC83MUWh6Fs8j7UbYrg\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"resolver(bytes32)":"0178b8bf"}}}},"contracts/interfaces/VBep20Interface.sol":{"VBep20Interface":{"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"underlying()\":{\"notice\":\"Underlying asset for this VToken\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/VBep20Interface.sol\":\"VBep20Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]}},\"version\":1}","devdoc":{"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 `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` 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 `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{"underlying()":{"notice":"Underlying asset for this VToken"}},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}}}},"contracts/lib/Transient.sol":{"Transient":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Transient.sol\":\"Transient\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Transient.sol\":{\"keccak256\":\"0x60d7133a48a757ee777cb9230e890ef489ffc33dcea9dadfcf5a8b72f9dd43aa\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9bf75e914ecc45b879fa05281d6398cf6407a2acfd53ec8659d27cbe0225b607\",\"dweb:/ipfs/QmYrm6nyYXX9pSXwGfnHa67FvkARr3YtpVBHaQHgZ6HSZ3\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"contracts/oracles/AnkrBNBOracle.sol":{"AnkrBNBOracle":{"abi":[{"inputs":[{"internalType":"address","name":"ankrBNB","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ankrBNB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of BNB for ankrBNB\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"AnkrBNBOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"This is used as token address of BNB on BSC\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of BNB for 1 ankrBNB\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of ankrBNB asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/AnkrBNBOracle.sol\":\"AnkrBNBOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/IAnkrBNB.sol\":{\"keccak256\":\"0x4e04d3cae00fc38b1f754cff9aa4054deea6e8a4d3fe80a1d8f0a54bbe73342e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://0d71b0f99ad632d1ff47444648989868e025044a88bb1344e1bcc9d9550b8755\",\"dweb:/ipfs/QmWi4ZVPWe6Bwb87Nffng2G8TTCQzsJdxTG7LUCsRup2Di\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/AnkrBNBOracle.sol\":{\"keccak256\":\"0x9fc598489b63ab8ece375615b743117d50851ab5c5c22aee1f55d167797b877f\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7ca2c032e9285f6a26a8194839f752df37154e8c94fa8321368940005bb25dc0\",\"dweb:/ipfs/QmWZLHcbqnLFymQi8CT47GKo4RgPn5TPxjMFVifVbFyb95\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of BNB for ankrBNB"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"AnkrBNBOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"NATIVE_TOKEN_ADDR()":{"notice":"This is used as token address of BNB on BSC"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of BNB for 1 ankrBNB"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of ankrBNB asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/AnkrBNBOracle.sol:AnkrBNBOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/AnkrBNBOracle.sol:AnkrBNBOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/AnkrBNBOracle.sol:AnkrBNBOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/AnkrBNBOracle.sol:AnkrBNBOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/AnkrBNBOracle.sol:AnkrBNBOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020011000000000002000000000301001900000060033002700000021b033001970000000100200190000000280000c13d0000008004000039000000400040043f000000040030008c000003cb0000413d000000000201043b000000e002200270000002240020009c000000600000213d000002310020009c0000006f0000a13d000002320020009c000000910000a13d000002330020009c0000010d0000613d000002340020009c000001120000613d000002350020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d0000000101000039000000000101041a000000000001004b00000000010000190000020c0000c13d000000010110018f00000000001404350000021b0040009c0000021b0400804100000040014002100000023d011001c7000008690001042e0000000002000416000000000002004b000003cb0000c13d0000001f023000390000021c022001970000010002200039000000400020043f0000001f0230018f00000005043002720000003a0000613d000001000500003900000005064002100000010006600039000000000701034f000000007807043c0000000005850436000000000065004b000000360000c13d000000000002004b000000490000613d0000000504400210000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001000030008c000003cb0000413d000001000100043d0000021d0010009c000003cb0000213d000001200300043d0000021d0030009c000003cb0000213d000001c00500043d0000021d0050009c000003cb0000213d000001a00600043d000001800700043d000001600900043d000001400400043d0000021e0240012a000001e00800043d000000000020041b0000021f0040009c000001c80000213d000000000009004b000001ca0000613d000002250000013d000002250020009c000000800000a13d000002260020009c000000b80000a13d000002270020009c0000012e0000613d000002280020009c000001390000613d000002290020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d086806ed0000040f000001320000013d000002380020009c000000c30000213d0000023b0020009c000001400000613d0000023c0020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d0000000001000412000f00000001001d000e00200000003d0000800501000039000000440300003900000000040004150000000f0440008a000001940000013d0000022c0020009c000001040000213d0000022f0020009c000001450000613d000002300020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d0000000001000412000b00000001001d000a00000000001d0000800501000039000000440300003900000000040004150000000b0440008a000001940000013d000002360020009c0000017f0000613d000002370020009c000003cb0000c13d000000240030008c000003cb0000413d0000000002000416000000000002004b000003cb0000c13d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025201000041000000a00010043f0000008001000039086807570000040f0000000401000039000000000501041a00000000010004140000021b0010009c0000021b01008041000000c00110021000000241011001c70000800d020000390000000303000039000002530400004100000007060000290868085e0000040f0000000100200190000003cb0000613d00000007010000290000000402000039000000000012041b0000000001000019000008690001042e0000022a0020009c0000018a0000613d0000022b0020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d0000022001000041000000800010043f0000023e01000041000008690001042e000002390020009c0000019b0000613d0000023a0020009c000003cb0000c13d000000240030008c000003cb0000413d0000000002000416000000000002004b000003cb0000c13d0000000401100370000000000101043b0000021d0010009c000003cb0000213d000700000001001d0000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000101043b000000070110014f000000400200043d0000021d00100198000002460000c13d00000245010000410000000001120436000600000001001d000700000002001d0000000401200039000002460200004100000000002104350000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c000002870000c13d0000000003000031000000200030008c00000020040000390000000004034019000000070a000029000002b40000013d0000022d0020009c000001a30000613d0000022e0020009c000003cb0000c13d0000000001000416000000000001004b000003cb0000c13d00000003010000390000019f0000013d0000000001000416000000000001004b000003cb0000c13d00000002010000390000019f0000013d000000440030008c000003cb0000413d0000000002000416000000000002004b000003cb0000c13d0000002402100370000000000202043b000700000002001d0000000401100370000000000101043b000600000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000024e01000041000000a00010043f0000008001000039086807570000040f00000006010000290000021e0610012a000000000500041a000000000060041b0000021f0010009c000002230000213d000000070000006b000002250000c13d0000022d0000013d0000000001000416000000000001004b000003cb0000c13d086806660000040f000000400200043d00000000001204350000021b0020009c0000021b0200804100000040012002100000023d011001c7000008690001042e0000000001000416000000000001004b000003cb0000c13d000000000100041a000000800010043f0000023e01000041000008690001042e0000000001000416000000000001004b000003cb0000c13d00000001010000390000019f0000013d0000000001000416000000000001004b000003cb0000c13d0000000301000039000000000101041a000700000001001d0000024301000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000244011001c70000800b02000039086808630000040f00000001002001900000056e0000613d000000000301043b000000070130006c0000021d0000413d0000000102000039000000000202041a000000010220008a000000000012004b000001c60000813d000500000003001d000000400200043d00000245010000410000000001120436000600000001001d000700000002001d0000000401200039000002460200004100000000002104350000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c000002fa0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003260000013d0000000001000416000000000001004b000003cb0000c13d0000000001000412000d00000001001d000c00600000003d0000800501000039000000440300003900000000040004150000000d0440008a000001940000013d0000000001000416000000000001004b000003cb0000c13d0000000001000412000900000001001d000800400000003d000080050100003900000044030000390000000004000415000000090440008a00000005044002100000023f02000041086808400000040f0000021d01100197000000800010043f0000023e01000041000008690001042e0000000001000416000000000001004b000003cb0000c13d0000000401000039000000000101041a000000800010043f0000023e01000041000008690001042e000000440030008c000003cb0000413d0000000002000416000000000002004b000003cb0000c13d0000002402100370000000000202043b000700000002001d0000000401100370000000000101043b000600000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024001000041000000a00010043f0000008001000039086807570000040f00000002010000390000000605000029000000000051041b00000003030000390000000706000029000000000063041b00000000010004140000021b0010009c0000021b01008041000000c00110021000000241011001c70000800d0200003900000242040000410868085e0000040f0000000100200190000003cb0000613d0000000001000019000008690001042e000000000009004b000002250000613d0000000004000415000000110440008a0000000504400210000000000007004b000001d40000613d0000000004000415000000100440008a0000000504400210000000000006004b000001dd0000c13d000000000009004b0000000002000019000000010200c0390000000504400270000000000402001f000001dd0000613d000000400100043d0000022202000041000002270000013d000600000003001d000100000001001d000700000005001d000400000006001d000300000007001d000500000008001d000200000009001d0868065b0000040f00000006010000290868065b0000040f00000007010000290868065b0000040f0000000103000029000000800030043f0000022001000041000000a00010043f0000000605000029000000c00050043f00000001020000390000000204000029000000000042041b00000002020000390000000304000029000000000042041b00000003020000390000000404000029000000000042041b00000004020000390000000504000029000000000042041b0000000704000029000000e00040043f0000014000000443000001600030044300000020030000390000018000300443000001a0001004430000004001000039000001c000100443000001e000500443000000600100003900000200001004430000022000400443000001000030044300000120002004430000022101000041000008690001042e0000000301000039000000000101041a000700000001001d0000024301000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000244011001c70000800b02000039086808630000040f00000001002001900000056e0000613d000000000101043b000000070210006c0000024d0000813d000002570100004100000000001004350000001101000039000000040010043f00000248010000410000086a00010430000000070000006b0000022d0000c13d000000400100043d0000024f0200004100000000002104350000021b0010009c0000021b01008041000000400110021000000223011001c70000086a000104300000000101000039000000000701041a000000400100043d000000070200002900000000002104350000021b0010009c0000021b01008041000000400110021000000000020004140000021b0020009c0000021b02008041000000c002200210000000000112019f00000250011001c70000800d02000039000000040300003900000251040000410868085e0000040f0000000100200190000003cb0000613d00000007010000290000000102000039000000000012041b0000000001000019000008690001042e000002540100004100000000001204350000021b0020009c0000021b02008041000000400120021000000223011001c70000086a000104300000000201000039000000000101041a000000000001004b00000000030000190000025a0000c13d000002460230012a000000000012001a0000021d0000413d000000000112001a000000400400043d000002670000c13d0000000001000019000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b0000021d0000c13d000000000004004b0000000003000019000002520000613d00000000032400a900000000044300d9000000000024004b0000021d0000c13d000002520000013d000500000001001d00000245010000410000000001140436000600000001001d000700000004001d0000000401400039000002460200004100000000002104350000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c000003920000c13d0000000003000031000000200030008c00000020040000390000000004034019000003be0000013d00000007030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000070a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060b000029000002a20000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b0000029e0000c13d000000000005004b000002b10000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003620000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002490020009c000004d00000213d0000000100100190000004d00000c13d000000400020043f000000200030008c000003cb0000413d000600000002001d00000000010a0433000700000001001d0000000101000039000500000001001d000000000101041a000000000001004b000003cd0000c13d000002550100004100000006020000290000000001120436000400000001001d0000023f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d00000006020000290000000402200039000000000101043b0000021d0110019700000000001204350000023f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c0000049d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004c90000013d00000007030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000003140000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000003100000c13d000000000005004b000003230000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003710000613d0000001f01400039000000600210018f0000000701200029000000000021004b00000000020000190000000102004039000002490010009c000004d00000213d0000000100200190000004d00000c13d000000400010043f000000200030008c000003cb0000413d0000000301000039000000000101041a000600000001001d00000007010000290000000001010433000700000001001d0000024301000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000244011001c70000800b02000039086808630000040f00000001002001900000056e0000613d000000000101043b000000060210006c00000005060000290000021d0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004380000c13d000002460230012a000000000012001a0000021d0000413d0000000001120019000000070010006b000000000301001900000007030040290000000401000039000000000101041a0000000002030019000000000031001a0000021d0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004450000c13d000000400100043d0000024d02000041000002270000013d000000400200043d0000001f0430018f00000005053002720000036e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000036a0000c13d000000000004004b0000037f0000c13d0000038c0000013d000000400200043d0000001f0430018f00000005053002720000037d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003790000c13d000000000004004b0000038c0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f0000086a0001043000000007030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000003ac0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000003a80000c13d000000000005004b000003bb0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004230000613d0000001f01400039000000600110018f0000000704100029000000000014004b00000000010000190000000101004039000002490040009c000004d00000213d0000000100100190000004d00000c13d000000400040043f000000200030008c000004320000813d00000000010000190000086a000104300000000301000039000000000101041a000600000001001d0000024301000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000244011001c70000800b02000039086808630000040f00000001002001900000056e0000613d000000000101043b000000060210006c0000021d0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004d60000c13d000002460230012a000000000012001a0000021d0000413d000600000012001d000000400200043d0000025501000041000400000002001d0000000001120436000300000001001d0000023f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f0000000606000029000000070060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000706006029000600000006001d00000001002001900000056e0000613d00000004020000290000000402200039000000000101043b0000021d0110019700000000001204350000023f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c000005140000c13d0000000003000031000000200030008c00000020040000390000000004034019000005400000013d000000400200043d0000001f0430018f000000050530027200000005055002100000042f0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000042b0000c13d000000000004004b0000038c0000613d000003800000013d00000007010000290000000001010433000000050010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b0000021d0000c13d000000000004004b00000000030000190000034d0000613d00000000032400a900000000044300d9000000000024004b0000021d0000c13d0000034d0000013d0000023f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000101043b0000024a0200004100000000002004390000021d01100197000700000001001d000000040010044300000000010004140000021b0010009c0000021b01008041000000c0011002100000024b011001c70000800202000039086808630000040f00000001002001900000056e0000613d000000000101043b000000000001004b000003cb0000613d000000400200043d0000024c01000041000600000002001d00000000001204350000023f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d00000006020000290000000402200039000000000101043b0000021d01100197000000000012043500000000010004140000000702000029000000040020008c000004920000613d00000006020000290000021b0020009c0000021b0200804100000040022002100000021b0010009c0000021b01008041000000c001100210000000000121019f00000248011001c700000007020000290868085e0000040f000000000301001900000060033002700000021b0030019d0000000100200190000005cc0000613d0000000601000029000002490010009c000004d00000213d0000000601000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001bd0000013d00000006030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000004b70000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000004b30000c13d000000000005004b000004c60000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005050000613d0000001f01400039000000600110018f00000006020000290000000001210019000400000001001d000002490010009c000004e30000a13d000002570100004100000000001004350000004101000039000000040010043f00000248010000410000086a00010430000000000300041a00000000041300a900000000051400d9000000000035004b0000021d0000c13d000000000004004b0000000003000019000003e30000613d00000000032400a900000000044300d9000000000024004b0000021d0000c13d000003e30000013d0000000401000029000000400010043f000000200030008c000003cb0000413d0000000001020433000300000001001d000002560100004100000004020000290000000001120436000600000001001d0000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c0000056f0000c13d0000000003000031000000200030008c000000200400003900000000040340190000059b0000013d000000400200043d0000001f0430018f0000000505300272000005110000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000050d0000c13d000000000004004b0000038c0000613d0000037f0000013d00000004030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a0000290000052e0000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b0000052a0000c13d000000000005004b0000053d0000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005ae0000613d0000001f01400039000000600110018f0000000402100029000000000012004b00000000010000190000000101004039000700000002001d000002490020009c000004d00000213d0000000100100190000004d00000c13d0000000701000029000000400010043f000000200030008c000003cb0000413d00000004010000290000000001010433000300000001001d000002560100004100000007020000290000000001120436000400000001001d0000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f00000001002001900000056e0000613d000000000201043b00000000010004140000021d02200197000000040020008c000005dc0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006080000013d000000000001042f00000004030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000223011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000005890000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000005850000c13d000000000005004b000005980000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005bd0000613d0000001f01400039000000600110018f0000000401100029000002490010009c000004d00000213d000000400010043f000000200030008c000003cb0000413d00000004020000290000000003020433000000ff0030008c000003cb0000213d000000030200002900000007022000b9000000070000006b0000061b0000c13d0000004d0030008c0000021d0000213d000006200000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ba0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005b60000c13d000000000004004b0000038c0000613d000003800000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005c90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005c50000c13d000000000004004b0000038c0000613d000003800000013d0000021b03300197000000400200043d0000001f0430018f0000000505300272000005d90000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d50000c13d000000000004004b0000038c0000613d0000037f0000013d00000007030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000223011001c7086808630000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005f60000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000005f20000c13d000000000005004b000006050000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006340000613d0000001f01400039000000600110018f0000000701100029000002490010009c000004d00000213d000000400010043f000000200030008c000003cb0000413d00000007020000290000000003020433000000ff0030008c000003cb0000213d000000030200002900000006022000b9000000060000006b000006430000c13d0000004d0030008c0000021d0000213d000006480000013d0000004d0030008c0000021d0000213d00000007042000fa000000030040006c0000021d0000c13d000000000003004b0000064a0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006240000c13d000500000006001d000000000006004b0000064a0000c13d000002570100004100000000001004350000001201000039000000040010043f00000248010000410000086a00010430000000400200043d0000001f0430018f0000000505300272000006400000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000063c0000c13d000000000004004b0000038c0000613d0000037f0000013d0000004d0030008c0000021d0000213d00000006042000fa000000030040006c0000021d0000c13d000000000003004b000006510000c13d00000005022000fa00000000002104350000021b0010009c0000021b0100804100000040011002100000023d011001c7000008690001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006530000c13d0000062b0000013d0000021d001001980000065e0000613d000000000001042d000000400100043d000002580200004100000000002104350000021b0010009c0000021b01008041000000400110021000000223011001c70000086a000104300002000000000002000000400200043d00000245010000410000000001120436000100000001001d000200000002001d0000000401200039000002460200004100000000002104350000023f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f0000000100200190000006c40000613d000000000201043b00000000010004140000021d02200197000000040020008c000006880000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006b50000013d00000002030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000248011001c7086808630000040f000000020a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006a30000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b0000069f0000c13d000000000005004b000006b20000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006cd0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002490010009c000006c50000213d0000000100200190000006c50000c13d000000400010043f0000001f0030008c000006cb0000a13d00000000010a0433000000000001042d000000000001042f000002570100004100000000001004350000004101000039000000040010043f00000248010000410000086a0001043000000000010000190000086a00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006d90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006d50000c13d000000000004004b000006e70000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f0000086a0001043000010000000000020000000301000039000000000101041a000100000001001d0000024301000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000244011001c70000800b02000039086808630000040f0000000100200190000007200000613d000000000101043b000000010210006c0000071a0000413d0000000201000039000000000101041a000000000001004b0000070f0000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000071a0000c13d000000000004004b000007150000613d00000000032400a900000000044300d9000000000024004b000007100000613d0000071a0000013d0000000003000019000002460230012a000000000012001a0000071a0000413d0000000001120019000000000001042d0000000003000019000002460230012a000000000012001a0000071a0000413d000007130000013d000002570100004100000000001004350000001101000039000000040010043f00000248010000410000086a00010430000000000001042f0000000043010434000000000132043600000259063001970000001f0530018f000000000014004b000007370000813d000000000006004b000007330000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000072d0000c13d000000000005004b000007510000613d0000000007010019000007470000013d000000000006004b000007430000613d000000200760008a00000259077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000073f0000c13d000000000005004b000007510000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000259023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d0000002403500039000000400200003900000000002304350000025a0200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025904a001970000001f03a0018f0000006401500039000000000012004b0000077b0000813d000000000004004b000007770000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007710000c13d000000000003004b000007950000613d00000000050100190000078b0000013d000000000004004b000007870000613d000000200540008a0000025905500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007830000c13d000000000003004b000007950000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000023f010000410000000000100439000000000100041200000004001004430000006001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000247011001c70000800502000039086808630000040f0000000100200190000007ff0000613d000000000201043b00000000010004140000021d02200197000000040020008c000000040a000029000007b30000c13d0000000003000031000000200030008c00000020040000390000000004034019000007e70000013d00000002030000290000001f0330003900000259033001970000021b00a0009c0000021b0400004100000000040a4019000000400440021000000064033000390000021b0030009c0000021b030080410000006003300210000000000343019f0000021b0010009c0000021b01008041000000c001100210000000000131019f086808630000040f000000040a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007d50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007d10000c13d000000000005004b000007e40000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000081f0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002490040009c000008000000213d0000000100100190000008000000c13d000000400040043f0000001f0030008c000007fd0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000007fd0000c13d000000000001004b000008060000613d000000000001042d00000000010000190000086a00010430000000000001042f000002570100004100000000001004350000004101000039000000040010043f00000248010000410000086a000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025b01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d086807210000040f000000040200002900000000012100490000021b0010009c0000021b010080410000021b0020009c0000021b0200804100000060011002100000004002200210000000000121019f0000086a00010430000000400200043d0000001f0430018f000000050530027200000005055002100000082b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008270000c13d000000000004004b000008390000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f0000086a00010430000000000001042f00000000050100190000000000200439000000050030008c0000084e0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008460000413d0000021b0030009c0000021b03008041000000600130021000000000020004140000021b0020009c0000021b02008041000000c002200210000000000112019f0000025c011001c70000000002050019086808630000040f00000001002001900000085d0000613d000000000101043b000000000001042d000000000001042f00000861002104210000000102000039000000000001042d0000000002000019000000000001042d00000866002104230000000102000039000000000001042d0000000002000019000000000001042d0000086800000432000008690001042e0000086a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000200000000000000000000000000000140000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000a9534f8a000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000006c58d43d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","NATIVE_TOKEN_ADDR()":"a9534f8a","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100025db829b6ea1dfc68d7f4fe66e9dc86985f1bdfca5fa267066d51ada355","factoryDependencies":{}}},"contracts/oracles/AsBNBOracle.sol":{"AsBNBOracle":{"abi":[{"inputs":[{"internalType":"address","name":"asBNB","type":"address"},{"internalType":"address","name":"slisBNB","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asBNB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slisBNB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"price The amount of slisBNB for asBNB\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"asBNBOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of slisBNB for 1 asBNB\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of asBNB asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/AsBNBOracle.sol\":\"AsBNBOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/IAsBNB.sol\":{\"keccak256\":\"0x34a434d78d48a1c33f79740bab9454fb5eaf05eb38e3abddd3fe55e6f4b4c937\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://5b57d04ca188691bdf445954adbdb2c8dd49d10bd76a20e122c44e9287026277\",\"dweb:/ipfs/QmNwrVGU39FGACYUxxyXT48ugCufzv4SqEJUiosbf4XL2s\"]},\"contracts/interfaces/IAsBNBMinter.sol\":{\"keccak256\":\"0x3cf93eddba855443b20f0dcfd7938448c9b44caa866403f53b6cd5bcf4ec1003\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e18d57275418d11e020c30f1e15c8f702ab3c9387b690e37c1ddd55236f91854\",\"dweb:/ipfs/QmdwsZM4rEACUhfD8z8KJAbi7WpxNp57HxrHnrMssXVgPi\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/AsBNBOracle.sol\":{\"keccak256\":\"0xe6f598e7ce16c12c121a5884e136a3f84618e74b0a9280f9ae9ad1c64d2755b5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://196ad06a30f9263ec5e5ca0ab746d5f14d591910b3e9c74c85e374289a9ff6eb\",\"dweb:/ipfs/QmcCJkVyoiKQ7iWnMpQqNZzdHJsi8R13L8iK7kLDdXwqrH\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"price The amount of slisBNB for asBNB"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"asBNBOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of slisBNB for 1 asBNB"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of asBNB asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/AsBNBOracle.sol:AsBNBOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/AsBNBOracle.sol:AsBNBOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/AsBNBOracle.sol:AsBNBOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/AsBNBOracle.sol:AsBNBOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/AsBNBOracle.sol:AsBNBOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020012000000000002000000000301001900000060033002700000026d0330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000004300000413d000000000201043b000000e002200270000002750020009c000000590000a13d000002760020009c0000006c0000a13d000002770020009c000000d20000a13d000002780020009c000001680000613d000002790020009c000001730000613d0000027a0020009c000004300000c13d0000000001000416000000000001004b000004300000c13d09ae08330000040f0000016c0000013d0000000002000416000000000002004b000004300000c13d0000001f023000390000026e022001970000010002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000001000500003900000005064002100000010006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000004300000413d000001000100043d0000026f0010009c000004300000213d000001200400043d0000026f0040009c000004300000213d000001400500043d0000026f0050009c000004300000213d000001e00600043d0000026f0060009c000004300000213d000001c00700043d000001a00800043d000001800a00043d000001600300043d000002700230012a000002000900043d000000000020041b000002710030009c000001bc0000213d00000000000a004b000001be0000613d000001d30000013d000002820020009c000000a90000213d000002880020009c000000e10000213d0000028b0020009c0000017a0000613d0000028c0020009c000004300000c13d0000000001000416000000000001004b000004300000c13d0000000001000412001000000001001d000f00200000003d000080050100003900000044030000390000000004000415000000100440008a000001ad0000013d0000027d0020009c0000011f0000213d000002800020009c0000017f0000613d000002810020009c000004300000c13d0000000001000416000000000001004b000004300000c13d0000000301000039000000000101041a000800000001001d0000029301000041000000000010043900000000010004140000026d0010009c0000026d01008041000000c00110021000000294011001c70000800b0200003909ae09a90000040f0000000100200190000006550000613d000000000301043b000000080130006c000005e60000413d0000000102000039000000000202041a000000010220008a000000000012004b000001460000813d000600000003001d000000400200043d0000029501000041000800000002001d0000000001120436000700000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000002740000c13d0000000003000031000000200030008c00000020040000390000000004034019000002a00000013d000002830020009c000001480000213d000002860020009c0000018e0000613d000002870020009c000004300000c13d000000240030008c000004300000413d0000000002000416000000000002004b000004300000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f000002a301000041000000a00010043f000000800100003909ae089d0000040f0000000401000039000000000501041a00000000010004140000026d0010009c0000026d01008041000000c00110021000000291011001c70000800d020000390000000303000039000002a404000041000000080600002909ae09a40000040f0000000100200190000004300000613d00000008010000290000000402000039000000000012041b0000000001000019000009af0001042e0000027b0020009c000001990000613d0000027c0020009c000004300000c13d0000000001000416000000000001004b000004300000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000001ad0000013d000002890020009c0000019e0000613d0000028a0020009c000004300000c13d000000240030008c000004300000413d0000000002000416000000000002004b000004300000c13d0000000401100370000000000101043b0000026f0010009c000004300000213d000800000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000101043b000000080110014f000000400200043d0000026f00100198000002500000c13d0000029501000041000800000002001d0000000001120436000700000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c0000031e0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a0000290000034b0000013d0000027e0020009c000001a30000613d0000027f0020009c000004300000c13d000000440030008c000004300000413d0000000002000416000000000002004b000004300000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000029001000041000000a00010043f000000800100003909ae089d0000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b00000000010004140000026d0010009c0000026d01008041000000c00110021000000291011001c70000800d02000039000002920400004109ae09a40000040f0000000100200190000004300000613d0000000001000019000009af0001042e000002840020009c000001b40000613d000002850020009c000004300000c13d000000440030008c000004300000413d0000000002000416000000000002004b000004300000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000029f01000041000000a00010043f000000800100003909ae089d0000040f0000000701000029000002700610012a000000000500041a000000000060041b000002710010009c000001d10000213d000000080000006b000001d30000c13d000002050000013d0000000001000416000000000001004b000004300000c13d09ae074d0000040f000000400200043d00000000001204350000026d0020009c0000026d0200804100000040012002100000028d011001c7000009af0001042e0000000001000416000000000001004b000004300000c13d000000000100041a000000800010043f0000028e01000041000009af0001042e0000000001000416000000000001004b000004300000c13d0000000101000039000001b80000013d0000000001000416000000000001004b000004300000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001db0000c13d000000010110018f00000000001404350000026d0040009c0000026d0400804100000040014002100000028d011001c7000009af0001042e0000000001000416000000000001004b000004300000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001ad0000013d0000000001000416000000000001004b000004300000c13d0000000301000039000001b80000013d0000000001000416000000000001004b000004300000c13d0000000401000039000001b80000013d0000000001000416000000000001004b000004300000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a00000005044002100000028f0200004109ae09860000040f0000026f01100197000000800010043f0000028e01000041000009af0001042e0000000001000416000000000001004b000004300000c13d0000000201000039000000000101041a000000800010043f0000028e01000041000009af0001042e00000000000a004b000001d30000613d0000000003000415000000120330008a0000000503300210000000000008004b000001c80000613d0000000003000415000000110330008a0000000503300210000000000007004b0000021e0000c13d00000000000a004b0000000002000019000000010200c0390000000503300270000000000302001f0000021e0000613d000000400100043d0000027302000041000001d50000013d000000080000006b000002050000c13d000000400100043d000002a00200004100000000002104350000026d0010009c0000026d01008041000000400110021000000274011001c7000009b0000104300000000301000039000000000101041a000800000001001d0000029301000041000000000010043900000000010004140000026d0010009c0000026d01008041000000c00110021000000294011001c70000800b0200003909ae09a90000040f0000000100200190000006550000613d000000000101043b000000080210006c000005e60000413d0000000201000039000000000101041a000000000001004b0000000003000019000001fd0000613d000000000300041a00000000041300a900000000051400d9000000000035004b000005e60000c13d000000000004004b0000000003000019000001fd0000613d00000000032400a900000000044300d9000000000024004b000005e60000c13d000002990230012a000000000012001a000005e60000413d000000000112001a000000400400043d000002570000c13d0000000001000019000001870000013d0000000101000039000000000701041a000000400100043d000000080200002900000000002104350000026d0010009c0000026d01008041000000400110021000000000020004140000026d0020009c0000026d02008041000000c002200210000000000112019f000002a1011001c70000800d020000390000000403000039000002a20400004109ae09a40000040f0000000100200190000004300000613d00000008010000290000000102000039000000000012041b0000000001000019000009af0001042e000100000001001d000600000004001d000700000005001d000800000006001d000400000007001d000300000008001d000500000009001d00020000000a001d09ae07420000040f000000060100002909ae07420000040f000000070100002909ae07420000040f000000080100002909ae07420000040f0000000102000029000000800020043f0000000603000029000000a00030043f0000000705000029000000c00050043f00000001010000390000000204000029000000000041041b00000002010000390000000304000029000000000041041b00000003010000390000000404000029000000000041041b00000004010000390000000504000029000000000041041b0000000804000029000000e00040043f0000014000000443000001600020044300000020020000390000018000200443000001a0003004430000004003000039000001c000300443000001e000500443000000600300003900000200003004430000022000400443000001000020044300000120001004430000027201000041000009af0001042e000002a50100004100000000001204350000026d0020009c0000026d02008041000000400120021000000274011001c7000009b000010430000600000001001d0000029501000041000800000004001d0000000001140436000700000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000003f20000c13d0000000003000031000000200030008c000000200400003900000000040340190000041e0000013d00000008030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000028e0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000028a0000c13d000000000005004b0000029d0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003d40000613d0000001f01400039000000600110018f0000000805100029000000000015004b00000000020000190000000102004039000002970050009c0000047c0000213d00000001002001900000047c0000c13d000000400050043f000000200030008c000004300000413d000000080200002900000000020204330000026f0020009c000004300000213d00000298040000410000000004450436000700000004001d000800000005001d0000000404500039000002990500004100000000005404350000000004000414000000040020008c000002e90000613d00000008010000290000026d0010009c0000026d0100804100000040011002100000026d0040009c0000026d04008041000000c003400210000000000113019f0000029a011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000002d50000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000002d10000c13d000000000005004b000002e40000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004820000613d0000001f01400039000000600110018f00000008020000290000000001210019000002970010009c0000047c0000213d000000400010043f000000200030008c000004300000413d0000000301000039000000000101041a000700000001001d0000000001020433000800000001001d0000029301000041000000000010043900000000010004140000026d0010009c0000026d01008041000000c00110021000000294011001c70000800b0200003909ae09a90000040f0000000100200190000006550000613d000000000101043b000000070210006c0000000606000029000005e60000413d0000000201000039000000000101041a000000000001004b0000000003000019000005200000c13d000002990230012a000000000012001a000005e60000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000005e60000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b0000052d0000c13d000000400100043d0000029e02000041000001d50000013d00000008030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000080a000029000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000003390000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000003350000c13d000000000005004b000003480000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003e30000613d0000001f01400039000000600110018f0000000005a10019000000000015004b00000000020000190000000102004039000002970050009c0000047c0000213d00000001002001900000047c0000c13d000000400050043f000000200030008c000004300000413d00000000020a04330000026f0020009c000004300000213d00000298040000410000000004450436000700000004001d000800000005001d0000000404500039000002990500004100000000005404350000000004000414000000040020008c000003930000613d00000008010000290000026d0010009c0000026d0100804100000040011002100000026d0040009c0000026d04008041000000c003400210000000000113019f0000029a011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000037f0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000037b0000c13d000000000005004b0000038e0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004910000613d0000001f01400039000000600110018f00000008020000290000000001210019000700000001001d000002970010009c0000047c0000213d0000000701000029000000400010043f000000200030008c000004300000413d0000000001020433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000004bb0000c13d000002a60100004100000007020000290000000001120436000500000001001d0000028f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d00000007020000290000000402200039000000000101043b0000026f0110019700000000001204350000028f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000005850000c13d0000000003000031000000200030008c00000020040000390000000004034019000005b10000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003e00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003dc0000c13d000000000004004b000004ac0000613d000004a00000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003ef0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003eb0000c13d000000000004004b000004a00000c13d000004ac0000013d00000008030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000040c0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004080000c13d000000000005004b0000041b0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004320000613d0000001f01400039000000600110018f00000008040000290000000005410019000000000015004b00000000020000190000000102004039000002970050009c0000047c0000213d00000001002001900000047c0000c13d000700000005001d000000400050043f000000200030008c000004300000413d00000000020404330000026f0020009c000004410000a13d0000000001000019000009b000010430000000400200043d0000001f0430018f000000050530027200000005055002100000043e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000043a0000c13d000000000004004b000004ac0000613d000004a00000013d000002980400004100000007050000290000000004450436000800000004001d0000000404500039000002990500004100000000005404350000000004000414000000040020008c000004790000613d00000007010000290000026d0010009c0000026d0100804100000040011002100000026d0040009c0000026d04008041000000c003400210000000000113019f0000029a011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000004650000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004610000c13d000000000005004b000004740000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005110000613d0000001f01400039000000600110018f0000000704100029000002970040009c000004b20000a13d000002a80100004100000000001004350000004101000039000000040010043f0000029a01000041000009b000010430000000400200043d0000001f0430018f00000005053002720000048e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000048a0000c13d000000000004004b000004ac0000613d0000049f0000013d000000400200043d0000001f0430018f00000005053002720000049d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004990000c13d000000000004004b000004ac0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000026d0020009c0000026d020080410000004002200210000000000112019f000009b000010430000000400040043f000000200030008c000004300000413d00000007010000290000000001010433000000060010006c00000000010000190000000101002039000001870000013d0000000301000039000000000101041a000700000001001d0000029301000041000000000010043900000000010004140000026d0010009c0000026d01008041000000c00110021000000294011001c70000800b0200003909ae09a90000040f0000000100200190000006550000613d000000000101043b000000070210006c000005e60000413d0000000201000039000000000101041a000000000001004b0000000003000019000005da0000c13d000002990230012a000000000012001a000005e60000413d000700000012001d000000400200043d000002a601000041000500000002001d0000000001120436000400000001001d0000028f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d0000000100200190000006550000613d00000005020000290000000402200039000000000101043b0000026f0110019700000000001204350000028f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000005fb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006270000013d000000400200043d0000001f0430018f000000050530027200000005055002100000051d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005190000c13d000000000004004b000004ac0000613d000004a00000013d000000000300041a00000000041300a900000000051400d9000000000035004b000005e60000c13d000000000004004b0000000003000019000003090000613d00000000032400a900000000044300d9000000000024004b000003090000613d000005e60000013d0000028f010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000101043b0000029b0200004100000000002004390000026f01100197000800000001001d000000040010044300000000010004140000026d0010009c0000026d01008041000000c0011002100000029c011001c7000080020200003909ae09a90000040f0000000100200190000006550000613d000000000101043b000000000001004b000004300000613d000000400200043d0000029d01000041000700000002001d00000000001204350000028f010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d00000007020000290000000402200039000000000101043b0000026f01100197000000000012043500000000010004140000000802000029000000040020008c0000057a0000613d00000007020000290000026d0020009c0000026d0200804100000040022002100000026d0010009c0000026d01008041000000c001100210000000000121019f0000029a011001c7000000080200002909ae09a40000040f000000000301001900000060033002700000026d0030019d0000000100200190000006b30000613d0000000701000029000002970010009c0000047c0000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a00000000010004140000013d0000013d00000007030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f0000029a011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a0000290000059f0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b0000059b0000c13d000000000005004b000005ae0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005ec0000613d0000001f01400039000000600110018f0000000701100029000500000001001d000002970010009c0000047c0000213d0000000501000029000000400010043f000000200030008c000004300000413d00000007010000290000000001010433000400000001001d000002a70100004100000005020000290000000001120436000700000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000006560000c13d0000000003000031000000200030008c00000020040000390000000004034019000006820000013d000000000300041a00000000041300a900000000051400d9000000000035004b000005e60000c13d000000000004004b0000000003000019000004d10000613d00000000032400a900000000044300d9000000000024004b000004d10000613d000002a80100004100000000001004350000001101000039000000040010043f0000029a01000041000009b000010430000000400200043d0000001f0430018f0000000505300272000005f80000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f40000c13d000000000004004b000004ac0000613d0000049f0000013d00000005030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f0000029a011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000006150000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000006110000c13d000000000005004b000006240000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006950000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002970020009c0000047c0000213d00000001001001900000047c0000c13d0000000801000029000000400010043f000000200030008c000004300000413d00000005010000290000000001010433000400000001001d000002a70100004100000008020000290000000001120436000500000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000006550000613d000000000201043b00000000010004140000026f02200197000000040020008c000006c30000c13d0000000003000031000000200030008c00000020040000390000000004034019000006ef0000013d000000000001042f00000005030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000006700000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b0000066c0000c13d000000000005004b0000067f0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006a40000613d0000001f01400039000000600110018f0000000501100029000002970010009c0000047c0000213d000000400010043f000000200030008c000004300000413d00000005020000290000000003020433000000ff0030008c000004300000213d000000040200002900000008022000b9000000080000006b000007020000c13d0000004d0030008c000005e60000213d000007070000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006a10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000069d0000c13d000000000004004b000004ac0000613d000004a00000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006b00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ac0000c13d000000000004004b000004ac0000613d000004a00000013d0000026d03300197000000400200043d0000001f0430018f0000000505300272000006c00000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006bc0000c13d000000000004004b000004ac0000613d0000049f0000013d00000008030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000006dd0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000006d90000c13d000000000005004b000006ec0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000071b0000613d0000001f01400039000000600110018f0000000801100029000002970010009c0000047c0000213d000000400010043f000000200030008c000004300000413d00000008020000290000000003020433000000ff0030008c000004300000213d000000040200002900000007022000b9000000070000006b0000072a0000c13d0000004d0030008c000005e60000213d0000072f0000013d0000004d0030008c000005e60000213d00000008042000fa000000040040006c000005e60000c13d000000000003004b000007310000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a9000000010330027200000000040500190000070b0000c13d000600000006001d000000000006004b000007310000c13d000002a80100004100000000001004350000001201000039000000040010043f0000029a01000041000009b000010430000000400200043d0000001f0430018f0000000505300272000007270000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007230000c13d000000000004004b000004ac0000613d0000049f0000013d0000004d0030008c000005e60000213d00000007042000fa000000040040006c000005e60000c13d000000000003004b000007380000c13d00000006022000fa00000000002104350000026d0010009c0000026d0100804100000040011002100000028d011001c7000009af0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a9000000010330027200000000040500190000073a0000c13d000007120000013d0000026f00100198000007450000613d000000000001042d000000400100043d000002a90200004100000000002104350000026d0010009c0000026d01008041000000400110021000000274011001c7000009b0000104300002000000000002000000400200043d0000029501000041000200000002001d0000000001120436000100000001001d0000028f01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000007f20000613d000000000201043b00000000010004140000026f02200197000000040020008c0000076c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000007990000013d00000002030000290000026d0030009c0000026d0300804100000040033002100000026d0010009c0000026d01008041000000c001100210000000000131019f00000274011001c709ae09a90000040f000000020a000029000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000007870000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007830000c13d000000000005004b000007960000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000007f30000613d0000001f01400039000000600110018f000000000ba1001900000000001b004b000000000200001900000001020040390000029700b0009c000007ec0000213d0000000100200190000007ec0000c13d0000004000b0043f0000001f0030008c000007ea0000a13d00000000020a04330000026f0020009c000007ea0000213d000002980400004100000000064b04360000000404b00039000002990500004100000000005404350000000004000414000000040020008c000007e20000613d0000026d00b0009c0000026d0100004100000000010b401900000040011002100000026d0040009c0000026d04008041000000c003400210000000000113019f0000029a011001c700020000000b001d000100000006001d09ae09a90000040f000000010a000029000000020b000029000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000007ce0000613d000000000701034f00000000080b0019000000007907043c00000000089804360000000000a8004b000007ca0000c13d000000000005004b000007dd0000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008130000613d0000001f01400039000000600110018f0000000001b10019000002970010009c000007ec0000213d000000400010043f000000200030008c000007ea0000413d00000000010b0433000000000001042d0000000001000019000009b000010430000002a80100004100000000001004350000004101000039000000040010043f0000029a01000041000009b000010430000000000001042f000000400200043d0000001f0430018f00000005053002720000000505500210000007ff0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007fb0000c13d000000000004004b0000080d0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000026d0020009c0000026d020080410000004002200210000000000112019f000009b000010430000000400200043d0000001f0430018f000000050530027200000005055002100000081f0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000081b0000c13d000000000004004b0000082d0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000026d0020009c0000026d020080410000004002200210000000000121019f000009b00001043000010000000000020000000301000039000000000101041a000100000001001d0000029301000041000000000010043900000000010004140000026d0010009c0000026d01008041000000c00110021000000294011001c70000800b0200003909ae09a90000040f0000000100200190000008660000613d000000000101043b000000010210006c000008600000413d0000000201000039000000000101041a000000000001004b000008550000613d000000000300041a00000000041300a900000000051400d9000000000035004b000008600000c13d000000000004004b0000085b0000613d00000000032400a900000000044300d9000000000024004b000008560000613d000008600000013d0000000003000019000002990230012a000000000012001a000008600000413d0000000001120019000000000001042d0000000003000019000002990230012a000000000012001a000008600000413d000008590000013d000002a80100004100000000001004350000001101000039000000040010043f0000029a01000041000009b000010430000000000001042f00000000430104340000000001320436000002aa063001970000001f0530018f000000000014004b0000087d0000813d000000000006004b000008790000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000008730000c13d000000000005004b000008970000613d00000000070100190000088d0000013d000000000006004b000008890000613d000000200760008a000002aa077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000008850000c13d000000000005004b000008970000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000002aa023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002ab0200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a30435000002aa04a001970000001f03a0018f0000006401500039000000000012004b000008c10000813d000000000004004b000008bd0000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000008b70000c13d000000000003004b000008db0000613d0000000005010019000008d10000013d000000000004004b000008cd0000613d000000200540008a000002aa05500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000008c90000c13d000000000003004b000008db0000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000028f010000410000000000100439000000000100041200000004001004430000006001000039000000240010044300000000010004140000026d0010009c0000026d01008041000000c00110021000000296011001c7000080050200003909ae09a90000040f0000000100200190000009450000613d000000000201043b00000000010004140000026f02200197000000040020008c000000040a000029000008f90000c13d0000000003000031000000200030008c000000200400003900000000040340190000092d0000013d00000002030000290000001f03300039000002aa033001970000026d00a0009c0000026d0400004100000000040a4019000000400440021000000064033000390000026d0030009c0000026d030080410000006003300210000000000343019f0000026d0010009c0000026d01008041000000c001100210000000000131019f09ae09a90000040f000000040a000029000000000301001900000060033002700000026d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b0000290000091b0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009170000c13d000000000005004b0000092a0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000009650000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002970040009c000009460000213d0000000100100190000009460000c13d000000400040043f0000001f0030008c000009430000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000009430000c13d000000000001004b0000094c0000613d000000000001042d0000000001000019000009b000010430000000000001042f000002a80100004100000000001004350000004101000039000000040010043f0000029a01000041000009b000010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000002ac01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d09ae08670000040f000000040200002900000000012100490000026d0010009c0000026d010080410000026d0020009c0000026d0200804100000060011002100000004002200210000000000121019f000009b000010430000000400200043d0000001f0430018f00000005053002720000000505500210000009710000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000096d0000c13d000000000004004b0000097f0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000026d0020009c0000026d020080410000004002200210000000000112019f000009b000010430000000000001042f00000000050100190000000000200439000000050030008c000009940000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b0000098c0000413d0000026d0030009c0000026d03008041000000600130021000000000020004140000026d0020009c0000026d02008041000000c002200210000000000112019f000002ad011001c7000000000205001909ae09a90000040f0000000100200190000009a30000613d000000000101043b000000000001042d000000000001042f000009a7002104210000000102000039000000000001042d0000000002000019000000000001042d000009ac002104230000000102000039000000000001042d0000000002000019000000000001042d000009ae00000432000009af0001042e000009b00001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000140000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d3000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000007546172000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff85906256000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000240000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010002afc83db0003f7fb83d57482aaa91e23f8dd5eaed4f4484e0280326ab71","factoryDependencies":{}}},"contracts/oracles/BNBxOracle.sol":{"BNBxOracle":{"abi":[{"inputs":[{"internalType":"address","name":"stakeManager","type":"address"},{"internalType":"address","name":"bnbx","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKE_MANAGER","outputs":[{"internalType":"contract IStaderStakeManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bnbx\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_MANAGER\",\"outputs\":[{\"internalType\":\"contract IStaderStakeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"price The amount of BNB for BNBx\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"BNBxOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"This is used as token address of BNB on BSC\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STAKE_MANAGER()\":{\"notice\":\"Address of StakeManager\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of BNB for 1 BNBx\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of BNBx asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/BNBxOracle.sol\":\"BNBxOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IStaderStakeManager.sol\":{\"keccak256\":\"0x8caeef2f75ea7996ac155fc0432569238ed148c92f8e719e8ec0bcb4db5b585b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a6218428b7749a7f862e85525877126d36e8328cfdc4343a627928b73f21ffdd\",\"dweb:/ipfs/QmTYBsj6fMx6exWeNkUzWakNAWXQ7gaYSJEwonNzMDtjkg\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/BNBxOracle.sol\":{\"keccak256\":\"0x00af44ece32b4d4b6c9fdd8b231915f9c22f4148c60f0dbd4c931d31b8440146\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f74b406e7e91ce8ddb527a1a2e9b77bf1e2b0d0a600b22c4816b899a2d782d8f\",\"dweb:/ipfs/QmNpzxPPNSzWZppPxYSyCc2PpdXy1PsNhKYM7GEhdeCf1L\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"price The amount of BNB for BNBx"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"BNBxOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"NATIVE_TOKEN_ADDR()":{"notice":"This is used as token address of BNB on BSC"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"STAKE_MANAGER()":{"notice":"Address of StakeManager"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of BNB for 1 BNBx"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of BNBx asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/BNBxOracle.sol:BNBxOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/BNBxOracle.sol:BNBxOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/BNBxOracle.sol:BNBxOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/BNBxOracle.sol:BNBxOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/BNBxOracle.sol:BNBxOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001400000000000200000000030100190000006003300270000002230330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003ea0000413d000000000201043b000000e0022002700000022c0020009c000000580000a13d0000022d0020009c000000710000213d000002340020009c0000008f0000a13d000002350020009c000001120000613d000002360020009c0000011d0000613d000002370020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000301000039000001d50000013d0000000002000416000000000002004b000003ea0000c13d0000001f0230003900000224022001970000012002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000300000613d00000120050000390000012006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003e0000613d000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003ea0000413d000001200300043d000002250030009c000003ea0000213d000001400100043d000002250010009c000003ea0000213d000001600600043d000002250060009c000003ea0000213d000002000400043d000002250040009c000003ea0000213d000001e00700043d000001c00800043d000001a00a00043d000001800500043d000002260250012a000002200900043d000000000020041b000002270050009c000001d90000213d00000000000a004b000001db0000613d000002070000013d0000023a0020009c0000007e0000a13d0000023b0020009c0000009e0000a13d0000023c0020009c000001420000613d0000023d0020009c000001470000613d0000023e0020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001ee0000c13d000000010110018f0000000000140435000002230040009c0000022304008041000000400140021000000246011001c7000008890001042e0000022e0020009c000000c50000a13d0000022f0020009c000001630000613d000002300020009c0000016e0000613d000002310020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0888070d0000040f000001670000013d000002410020009c000000d00000213d000002440020009c000001750000613d000002450020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000001000412001200000001001d001100200000003d000080050100003900000044030000390000000004000415000000120440008a000001ca0000013d000002380020009c0000017a0000613d000002390020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000001000412000e00000001001d000d00000000001d0000800501000039000000440300003900000000040004150000000e0440008a000001ca0000013d0000023f0020009c000001b50000613d000002400020009c000003ea0000c13d000000240030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025b01000041000000a00010043f0000008001000039088807770000040f0000000401000039000000000501041a0000000001000414000002230010009c0000022301008041000000c0011002100000024a011001c70000800d0200003900000003030000390000025c0400004100000008060000290888087e0000040f0000000100200190000003ea0000613d00000008010000290000000402000039000000000012041b0000000001000019000008890001042e000002320020009c000001c00000613d000002330020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000022801000041000000800010043f0000024701000041000008890001042e000002420020009c000001d10000613d000002430020009c000003ea0000c13d000000240030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000000401100370000000000101043b000002250010009c000003ea0000213d000800000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000101043b000000080110014f000000400200043d0000022500100198000002640000c13d0000024e010000410000000001120436000700000001001d000800000002001d00000004012000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000002a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a000029000002d30000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412000c00000001001d000b00800000003d0000800501000039000000440300003900000000040004150000000c0440008a000001ca0000013d000000440030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024901000041000000a00010043f0000008001000039088807770000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000002230010009c0000022301008041000000c0011002100000024a011001c70000800d020000390000024b040000410888087e0000040f0000000100200190000003ea0000613d0000000001000019000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000201000039000001d50000013d000000440030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025701000041000000a00010043f0000008001000039088807770000040f0000000701000029000002260610012a000000000500041a000000000060041b000002270010009c000002050000213d000000080000006b000002070000c13d0000020f0000013d0000000001000416000000000001004b000003ea0000c13d088806850000040f000000400200043d0000000000120435000002230020009c0000022302008041000000400120021000000246011001c7000008890001042e0000000001000416000000000001004b000003ea0000c13d000000000100041a000000800010043f0000024701000041000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000101000039000001d50000013d0000000001000416000000000001004b000003ea0000c13d0000000301000039000000000101041a000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000301043b000000080130006c000001ff0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008004000039000001400000813d000600000003001d000000400200043d0000024e010000410000000001120436000700000001001d000800000002001d00000004012000390000024f020000410000000000210435000002480100004100000000001004390000000001000412000000040010044300000024004004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000003190000c13d0000000003000031000000200030008c00000020040000390000000004034019000003450000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412001000000001001d000f00600000003d000080050100003900000044030000390000000004000415000000100440008a000001ca0000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a00000005044002100000024802000041088808600000040f0000022501100197000000800010043f0000024701000041000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000401000039000000000101041a000000800010043f0000024701000041000008890001042e00000000000a004b000002070000613d0000000005000415000000140550008a0000000505500210000000000008004b000001e50000613d0000000005000415000000130550008a0000000505500210000000000007004b000002280000c13d00000000000a004b0000000002000019000000010200c0390000000505500270000000000502001f000002280000613d000000400100043d0000022a02000041000002090000013d0000000301000039000000000101041a000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000080210006c0000026b0000813d000002600100004100000000001004350000001101000039000000040010043f00000251010000410000088a00010430000000080000006b0000020f0000c13d000000400100043d00000258020000410000000000210435000002230010009c000002230100804100000040011002100000022b011001c70000088a000104300000000101000039000000000701041a000000400100043d00000008020000290000000000210435000002230010009c000002230100804100000040011002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000259011001c70000800d0200003900000004030000390000025a040000410888087e0000040f0000000100200190000003ea0000613d00000008010000290000000102000039000000000012041b0000000001000019000008890001042e000800000003001d000700000004001d000100000001001d000600000006001d000400000007001d000300000008001d000500000009001d00020000000a001d0888067a0000040f00000006010000290888067a0000040f00000007010000290888067a0000040f0000000101000029000000800010043f0000022801000041000000a00010043f0000000601000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000701000029000000e00010043f00000008010000290888067a0000040f0000000804000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000022901000041000008890001042e0000025d010000410000000000120435000002230020009c000002230200804100000040012002100000022b011001c70000088a000104300000000201000039000000000101041a000000000001004b0000000003000019000002780000c13d0000024f0230012a000000000012001a000001ff0000413d000000000112001a000000400400043d000002850000c13d00000000010000190000006a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000002700000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000002700000013d000600000001001d0000024e010000410000000001140436000700000001001d000800000004001d00000004014000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000003b10000c13d0000000003000031000000200030008c00000020040000390000000004034019000003dd0000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000080a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000002c10000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002bd0000c13d000000000005004b000002d00000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003810000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002520020009c000004ef0000213d0000000100100190000004ef0000c13d000000400020043f000000200030008c000003ea0000413d000700000002001d00000000010a0433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000003ec0000c13d0000025e0100004100000007020000290000000001120436000500000001001d0000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d00000007020000290000000402200039000000000101043b000002250110019700000000001204350000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000004bc0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004e80000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003330000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000032f0000c13d000000000005004b000003420000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003900000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000002520010009c000004ef0000213d0000000100200190000004ef0000c13d000000400010043f000000200030008c000003ea0000413d0000000301000039000000000101041a000700000001001d00000008010000290000000001010433000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000070210006c0000000606000029000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004570000c13d0000024f0230012a000000000012001a000001ff0000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000001ff0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004640000c13d000000400100043d0000025602000041000002090000013d000000400200043d0000001f0430018f00000005053002720000038d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003890000c13d000000000004004b0000039e0000c13d000003ab0000013d000000400200043d0000001f0430018f00000005053002720000039c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003980000c13d000000000004004b000003ab0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a000104300000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003cb0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000003c70000c13d000000000005004b000003da0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004420000613d0000001f01400039000000600110018f0000000804100029000000000014004b00000000010000190000000101004039000002520040009c000004ef0000213d0000000100100190000004ef0000c13d000000400040043f000000200030008c000004510000813d00000000010000190000088a000104300000000301000039000000000101041a000700000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000070210006c000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004f50000c13d0000024f0230012a000000000012001a000001ff0000413d000700000012001d000000400200043d0000025e01000041000500000002001d0000000001120436000400000001001d0000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d00000001002001900000058d0000613d00000005020000290000000402200039000000000101043b000002250110019700000000001204350000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000005330000c13d0000000003000031000000200030008c000000200400003900000000040340190000055f0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000044e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000044a0000c13d000000000004004b000003ab0000613d0000039f0000013d00000008010000290000000001010433000000060010006c000000000100001900000001010020390000006a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b00000000030000190000036c0000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d0000036c0000013d0000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000101043b000002530200004100000000002004390000022501100197000800000001001d00000004001004430000000001000414000002230010009c0000022301008041000000c00110021000000254011001c70000800202000039088808830000040f00000001002001900000058d0000613d000000000101043b000000000001004b000003ea0000613d000000400200043d0000025501000041000700000002001d00000000001204350000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d00000007020000290000000402200039000000000101043b0000022501100197000000000012043500000000010004140000000802000029000000040020008c000004b10000613d0000000702000029000002230020009c00000223020080410000004002200210000002230010009c0000022301008041000000c001100210000000000121019f00000251011001c700000008020000290888087e0000040f00000000030100190000006003300270000002230030019d0000000100200190000005eb0000613d0000000701000029000002520010009c000004ef0000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001370000013d0000000703000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004d60000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004d20000c13d000000000005004b000004e50000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005240000613d0000001f01400039000000600110018f00000007020000290000000001210019000500000001001d000002520010009c000005020000a13d000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000004020000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000004020000013d0000000501000029000000400010043f000000200030008c000003ea0000413d0000000001020433000400000001001d0000025f0100004100000005020000290000000001120436000700000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c0000058e0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005ba0000013d000000400200043d0000001f0430018f0000000505300272000005300000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000052c0000c13d000000000004004b000003ab0000613d0000039e0000013d0000000503000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000054d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005490000c13d000000000005004b0000055c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005cd0000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002520020009c000004ef0000213d0000000100100190000004ef0000c13d0000000801000029000000400010043f000000200030008c000003ea0000413d00000005010000290000000001010433000400000001001d0000025f0100004100000008020000290000000001120436000500000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000005fb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006270000013d000000000001042f0000000503000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022b011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005a80000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005a40000c13d000000000005004b000005b70000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005dc0000613d0000001f01400039000000600110018f0000000501100029000002520010009c000004ef0000213d000000400010043f000000200030008c000003ea0000413d00000005020000290000000003020433000000ff0030008c000003ea0000213d000000040200002900000008022000b9000000080000006b0000063a0000c13d0000004d0030008c000001ff0000213d0000063f0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005d90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d50000c13d000000000004004b000003ab0000613d0000039f0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005e80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e40000c13d000000000004004b000003ab0000613d0000039f0000013d0000022303300197000000400200043d0000001f0430018f0000000505300272000005f80000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f40000c13d000000000004004b000003ab0000613d0000039e0000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022b011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000006150000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000006110000c13d000000000005004b000006240000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006530000613d0000001f01400039000000600110018f0000000801100029000002520010009c000004ef0000213d000000400010043f000000200030008c000003ea0000413d00000008020000290000000003020433000000ff0030008c000003ea0000213d000000040200002900000007022000b9000000070000006b000006620000c13d0000004d0030008c000001ff0000213d000006670000013d0000004d0030008c000001ff0000213d00000008042000fa000000040040006c000001ff0000c13d000000000003004b000006690000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006430000c13d000600000006001d000000000006004b000006690000c13d000002600100004100000000001004350000001201000039000000040010043f00000251010000410000088a00010430000000400200043d0000001f0430018f00000005053002720000065f0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000065b0000c13d000000000004004b000003ab0000613d0000039e0000013d0000004d0030008c000001ff0000213d00000007042000fa000000040040006c000001ff0000c13d000000000003004b000006700000c13d00000006022000fa0000000000210435000002230010009c0000022301008041000000400110021000000246011001c7000008890001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006720000c13d0000064a0000013d00000225001001980000067d0000613d000000000001042d000000400100043d00000261020000410000000000210435000002230010009c000002230100804100000040011002100000022b011001c70000088a000104300002000000000002000000400200043d0000024e010000410000000001120436000100000001001d000200000002001d00000004012000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f0000000100200190000006e40000613d000000000201043b00000000010004140000022502200197000000040020008c000006a80000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006d50000013d0000000203000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000020a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006c30000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006bf0000c13d000000000005004b000006d20000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006ed0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002520010009c000006e50000213d0000000100200190000006e50000c13d000000400010043f0000001f0030008c000006eb0000a13d00000000010a0433000000000001042d000000000001042f000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a0001043000000000010000190000088a00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006f90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006f50000c13d000000000004004b000007070000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a0001043000010000000000020000000301000039000000000101041a000100000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f0000000100200190000007400000613d000000000101043b000000010210006c0000073a0000413d0000000201000039000000000101041a000000000001004b0000072f0000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000073a0000c13d000000000004004b000007350000613d00000000032400a900000000044300d9000000000024004b000007300000613d0000073a0000013d00000000030000190000024f0230012a000000000012001a0000073a0000413d0000000001120019000000000001042d00000000030000190000024f0230012a000000000012001a0000073a0000413d000007330000013d000002600100004100000000001004350000001101000039000000040010043f00000251010000410000088a00010430000000000001042f0000000043010434000000000132043600000262063001970000001f0530018f000000000014004b000007570000813d000000000006004b000007530000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000074d0000c13d000000000005004b000007710000613d0000000007010019000007670000013d000000000006004b000007630000613d000000200760008a00000262077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000075f0000c13d000000000005004b000007710000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000262023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002630200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000026204a001970000001f03a0018f0000006401500039000000000012004b0000079b0000813d000000000004004b000007970000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007910000c13d000000000003004b000007b50000613d0000000005010019000007ab0000013d000000000004004b000007a70000613d000000200540008a0000026205500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007a30000c13d000000000003004b000007b50000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024801000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000081f0000613d000000000201043b00000000010004140000022502200197000000040020008c000000040a000029000007d30000c13d0000000003000031000000200030008c00000020040000390000000004034019000008070000013d00000002030000290000001f0330003900000262033001970000022300a0009c000002230400004100000000040a401900000040044002100000006403300039000002230030009c00000223030080410000006003300210000000000343019f000002230010009c0000022301008041000000c001100210000000000131019f088808830000040f000000040a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007f50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007f10000c13d000000000005004b000008040000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000083f0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002520040009c000008200000213d0000000100100190000008200000c13d000000400040043f0000001f0030008c0000081d0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000081d0000c13d000000000001004b000008260000613d000000000001042d00000000010000190000088a00010430000000000001042f000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000026401000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d088807410000040f00000004020000290000000001210049000002230010009c0000022301008041000002230020009c000002230200804100000060011002100000004002200210000000000121019f0000088a00010430000000400200043d0000001f0430018f000000050530027200000005055002100000084b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008470000c13d000000000004004b000008590000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a00010430000000000001042f00000000050100190000000000200439000000050030008c0000086e0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008660000413d000002230030009c000002230300804100000060013002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000265011001c70000000002050019088808830000040f00000001002001900000087d0000613d000000000101043b000000000001042d000000000001042f00000881002104210000000102000039000000000001042d0000000002000019000000000001042d00000886002104230000000102000039000000000001042d0000000002000019000000000001042d0000088800000432000008890001042e0000088a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000200000000000000000000000000000180000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000a9534f8a0000000000000000000000000000000000000000000000000000000073538479000000000000000000000000000000000000000000000000000000007353847a000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000ca0506e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","NATIVE_TOKEN_ADDR()":"a9534f8a","RESILIENT_ORACLE()":"a4edcd4c","STAKE_MANAGER()":"7353847a","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100026795b1aa8ee50618b86be164660d53e1d853bc468c34ec8b1525b252cf","factoryDependencies":{}}},"contracts/oracles/BinanceOracle.sol":{"BinanceOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldFeedRegistry","type":"address"},{"indexed":true,"internalType":"address","name":"newFeedRegistry","type":"address"}],"name":"FeedRegistryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"asset","type":"string"},{"indexed":false,"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"name":"MaxStalePeriodAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"string","name":"overriddenSymbol","type":"string"}],"name":"SymbolOverridden","type":"event"},{"inputs":[],"name":"BNB_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feedRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeedRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sidRegistryAddress","type":"address"},{"internalType":"address","name":"_acm","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"maxStalePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newfeedRegistryAddress","type":"address"}],"name":"setFeedRegistryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_maxStalePeriod","type":"uint256"}],"name":"setMaxStalePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"overrideSymbol","type":"string"}],"name":"setSymbolOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sidRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"symbols","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldFeedRegistry\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFeedRegistry\",\"type\":\"address\"}],\"name\":\"FeedRegistryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"asset\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"MaxStalePeriodAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"overriddenSymbol\",\"type\":\"string\"}],\"name\":\"SymbolOverridden\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BNB_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feedRegistryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeedRegistryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sidRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_acm\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"maxStalePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newfeedRegistryAddress\",\"type\":\"address\"}],\"name\":\"setFeedRegistryAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"setMaxStalePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"overrideSymbol\",\"type\":\"string\"}],\"name\":\"setSymbolOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sidRegistryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"symbols\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getFeedRegistryAddress()\":{\"returns\":{\"_0\":\"feedRegistryAddress Address of binance oracle feed registry.\"}},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of the asset\"},\"returns\":{\"_0\":\"Price in USD\"}},\"initialize(address,address)\":{\"params\":{\"_acm\":\"Address of the access control manager contract\",\"_sidRegistryAddress\":\"Address of SID registry\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setFeedRegistryAddress(address)\":{\"params\":{\"newfeedRegistryAddress\":\"Address of new feed registry.\"}},\"setMaxStalePeriod(string,uint256)\":{\"params\":{\"_maxStalePeriod\":\"The max stake period\",\"symbol\":\"The symbol of the asset\"}},\"setSymbolOverride(string,string)\":{\"params\":{\"overrideSymbol\":\"The symbol after override\",\"symbol\":\"The symbol to override\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"title\":\"BinanceOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"FeedRegistryUpdated(address,address)\":{\"notice\":\"Emits when address of feed registry is updated.\"},\"MaxStalePeriodAdded(string,uint256)\":{\"notice\":\"Emits when asset stale period is updated.\"},\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"SymbolOverridden(string,string)\":{\"notice\":\"Emits when symbol of the asset is updated.\"}},\"kind\":\"user\",\"methods\":{\"BNB_ADDR()\":{\"notice\":\"Set this as asset address for BNB. This is the underlying address for vBNB\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"feedRegistryAddress()\":{\"notice\":\"Used to fetch price of assets used directly when space ID is not supported by current chain.\"},\"getFeedRegistryAddress()\":{\"notice\":\"Uses Space ID to fetch the feed registry address\"},\"getPrice(address)\":{\"notice\":\"Gets the price of a asset from the binance oracle\"},\"initialize(address,address)\":{\"notice\":\"Sets the contracts required to fetch prices\"},\"maxStalePeriod(string)\":{\"notice\":\"Max stale period configuration for assets\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setFeedRegistryAddress(address)\":{\"notice\":\"Used to set feed registry address when current chain does not support space ID.\"},\"setMaxStalePeriod(string,uint256)\":{\"notice\":\"Used to set the max stale period of an asset\"},\"setSymbolOverride(string,string)\":{\"notice\":\"Used to override a symbol when fetching price\"},\"sidRegistryAddress()\":{\"notice\":\"Used to fetch feed registry address.\"},\"symbols(string)\":{\"notice\":\"Override symbols to be compatible with Binance feed registry\"}},\"notice\":\"This oracle fetches price of assets from Binance.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/BinanceOracle.sol\":\"BinanceOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"contracts/interfaces/FeedRegistryInterface.sol\":{\"keccak256\":\"0xf57101e676f7d93b0714f5774a3111a80ce9df0bbaed6d5e78668293c11b04e8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ba65cef548fc89fc731345cc38656ca1a6ccb970657233588d8fb2eeec8aa8c7\",\"dweb:/ipfs/QmYYeoRENPKFPgztvrTU3V3SRpHjf5e1ctAQ6PtB2hp9wi\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/interfaces/PublicResolverInterface.sol\":{\"keccak256\":\"0xe8ea3c3ec3b30f2b2022fe221530b15d18887eb6aa39c10d06d1fd5a0a7d1ece\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9f23aa98ced0191bc30cf7ac29c18bf6bb91ac0921c8b30af38fb76694e63b74\",\"dweb:/ipfs/QmZjSLY7K12tvDy6TNjshN97UPRNYzzPTn6qMh24eJtZcz\"]},\"contracts/interfaces/SIDRegistryInterface.sol\":{\"keccak256\":\"0x306f0a50d27c016a6e13346901f6c692426af0a755eb913adc4e8494f311c2d2\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ea0fc7e311e8d7104106f8be5226f84fd1f25eed4c6a5ba2b29e317c11e5db6e\",\"dweb:/ipfs/QmNTwyv64DxvbBpZKazurcUAbzxZC83MUWh6Fs8j7UbYrg\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]},\"contracts/oracles/BinanceOracle.sol\":{\"keccak256\":\"0xc90461124de237f1bde8432b678b0719f47b4c8c8777fb9d9cbbec9d64ce0ef0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://017e2bb0dfccfc0278a03fb079eaa62f70d67cabd26743a4de74380d6055f2d7\",\"dweb:/ipfs/QmYY8n49nYv8sRCUJEopDKx1S9W2GZsh8vpEwYtTkqGBYT\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getFeedRegistryAddress()":{"returns":{"_0":"feedRegistryAddress Address of binance oracle feed registry."}},"getPrice(address)":{"params":{"asset":"Address of the asset"},"returns":{"_0":"Price in USD"}},"initialize(address,address)":{"params":{"_acm":"Address of the access control manager contract","_sidRegistryAddress":"Address of SID registry"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setFeedRegistryAddress(address)":{"params":{"newfeedRegistryAddress":"Address of new feed registry."}},"setMaxStalePeriod(string,uint256)":{"params":{"_maxStalePeriod":"The max stake period","symbol":"The symbol of the asset"}},"setSymbolOverride(string,string)":{"params":{"overrideSymbol":"The symbol after override","symbol":"The symbol to override"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"title":"BinanceOracle","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"FeedRegistryUpdated(address,address)":{"notice":"Emits when address of feed registry is updated."},"MaxStalePeriodAdded(string,uint256)":{"notice":"Emits when asset stale period is updated."},"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"},"SymbolOverridden(string,string)":{"notice":"Emits when symbol of the asset is updated."}},"kind":"user","methods":{"BNB_ADDR()":{"notice":"Set this as asset address for BNB. This is the underlying address for vBNB"},"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"constructor":{"notice":"Constructor for the implementation contract."},"feedRegistryAddress()":{"notice":"Used to fetch price of assets used directly when space ID is not supported by current chain."},"getFeedRegistryAddress()":{"notice":"Uses Space ID to fetch the feed registry address"},"getPrice(address)":{"notice":"Gets the price of a asset from the binance oracle"},"initialize(address,address)":{"notice":"Sets the contracts required to fetch prices"},"maxStalePeriod(string)":{"notice":"Max stale period configuration for assets"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setFeedRegistryAddress(address)":{"notice":"Used to set feed registry address when current chain does not support space ID."},"setMaxStalePeriod(string,uint256)":{"notice":"Used to set the max stale period of an asset"},"setSymbolOverride(string,string)":{"notice":"Used to override a symbol when fetching price"},"sidRegistryAddress()":{"notice":"Used to fetch feed registry address."},"symbols(string)":{"notice":"Override symbols to be compatible with Binance feed registry"}},"notice":"This oracle fetches price of assets from Binance.","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":5483,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"sidRegistryAddress","offset":0,"slot":"201","type":"t_address"},{"astId":5492,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"maxStalePeriod","offset":0,"slot":"202","type":"t_mapping(t_string_memory_ptr,t_uint256)"},{"astId":5497,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"symbols","offset":0,"slot":"203","type":"t_mapping(t_string_memory_ptr,t_string_storage)"},{"astId":5500,"contract":"contracts/oracles/BinanceOracle.sol:BinanceOracle","label":"feedRegistryAddress","offset":0,"slot":"204","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_mapping(t_string_memory_ptr,t_string_storage)":{"encoding":"mapping","key":"t_string_memory_ptr","label":"mapping(string => string)","numberOfBytes":"32","value":"t_string_storage"},"t_mapping(t_string_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_string_memory_ptr","label":"mapping(string => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_memory_ptr":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0002000000000002000a00000000000200010000000103550000008008000039000000400080043f0000000100200190000000790000c13d00000000020100190000006002200270000002e902200197000000040020008c000008840000413d000000000301043b000000e003300270000002f10030009c000000960000213d000002fe0030009c000000cd0000a13d000002ff0030009c000001060000a13d000003000030009c000001610000613d000003010030009c000001660000613d000003020030009c000008840000c13d000000440020008c000008840000413d0000000003000416000000000003004b000008840000c13d0000000403100370000000000403043b0000030a0040009c000008840000213d0000002303400039000000000023004b000008840000813d0000000405400039000000000351034f000000000303043b0000030a0030009c000003ff0000213d0000001f0630003900000348066001970000003f0660003900000348066001970000031c0060009c000003ff0000213d0000008006600039000000400060043f000000800030043f00000000043400190000002404400039000000000024004b000008840000213d0000002002500039000000000221034f0000001f0430018f00000005053002720000000505500210000000450000613d000000a006000039000000a007500039000000000802034f000000008908043c0000000006960436000000000076004b000000410000c13d000000000004004b000000530000613d000000000252034f0000000304400210000000a005500039000000000605043300000000064601cf000000000646022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000262019f0000000000250435000000a00230003900000000000204350000002401100370000000000201043b000000400100043d0000031d0010009c000003ff0000213d000800000002001d0000006002100039000000400020043f00000040021000390000031e03000041000000000032043500000020021000390000031f030000410000000000320435000000210200003900000000002104350b9d0a8c0000040f000000080000006b000004c50000c13d000000400100043d00000044021000390000032103000041000000000032043500000024021000390000001a030000390000000000320435000002ea020000410000000000210435000000040210003900000020030000390000000000320435000002e90010009c000002e901008041000000400110021000000322011001c700000b9f000104300000000001000416000000000001004b000008840000c13d000000000100041a0000ff0000100190000000c10000c13d000000ff0210018f000000ff0020008c000000910000613d000000ff011001bf000000000010041b000000ff01000039000000800010043f0000000001000414000002e90010009c000002e901008041000000c001100210000002ee011001c70000800d020000390000000103000039000002ef040000410b9d0b930000040f0000000100200190000008840000613d000000200100003900000100001004430000012000000443000002f00100004100000b9e0001042e000002f20030009c000000f40000a13d000002f30030009c000001350000a13d000002f40030009c000001b30000613d000002f50030009c000001b80000613d000002f60030009c000008840000c13d000000240020008c000008840000413d0000000003000416000000000003004b000008840000c13d0000000401100370000000000101043b0000030a0010009c000008840000213d00000004011000390b9d08ba0000040f000000003201043400000348052001970000001f0420018f000000400100043d000000000013004b000002d70000813d000000000005004b000000bd0000613d00000000074300190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000000b70000c13d000000000004004b000002f10000613d0000000006010019000002e70000013d000002ea01000041000000800010043f0000002001000039000000840010043f0000002701000039000000a40010043f000002eb01000041000000c40010043f000002ec01000041000000e40010043f000002ed0100004100000b9f00010430000003050030009c0000013e0000213d000003080030009c000001d50000613d000003090030009c000008840000c13d000000240020008c000008840000413d0000000003000416000000000003004b000008840000c13d0000000401100370000000000101043b0000030a0010009c000008840000213d00000004011000390b9d08ba0000040f000000003201043400000348052001970000001f0420018f000000400100043d000000000013004b000002fe0000813d000000000005004b000000f00000613d00000000074300190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000000ea0000c13d000000000004004b000003180000613d00000000060100190000030e0000013d000002f90030009c000001580000213d000002fc0030009c000001da0000613d000002fd0030009c000008840000c13d0000000001000416000000000001004b000008840000c13d0000006501000039000000000101041a0000030c021001970000000001000411000000000012004b000002cb0000c13d0b9d0b640000040f000000000100001900000b9e0001042e000003030030009c000001f30000613d000003040030009c000008840000c13d000000240020008c000008840000413d0000000003000416000000000003004b000008840000c13d0000000403100370000000000303043b000800000003001d0000030c0030009c000008840000213d00000008040000290000032f0040009c0000032d0000c13d000000c001000039000000400010043f0000000302000039000000800020043f0000033603000041000000a00030043f000800120000003d000000800300003900000348052001970000001f0420018f000700000003001d0000002003300039000000000013004b000003810000813d000000000005004b000001310000613d00000000074300190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000012b0000c13d000000000004004b0000039b0000613d0000000006010019000003910000013d000002f70030009c000001fa0000613d000002f80030009c000008840000c13d0000000001000416000000000001004b000008840000c13d0000009701000039000002c60000013d000003060030009c000002a50000613d000003070030009c000008840000c13d000000240020008c000008840000413d0000000002000416000000000002004b000008840000c13d0000000401100370000000000101043b000800000001001d0000030c0010009c000008840000213d000000080000006b000003350000c13d000002ea01000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000034501000041000000c40010043f000003430100004100000b9f00010430000002fa0030009c000002c20000613d000002fb0030009c000008840000c13d0000000001000416000000000001004b000008840000c13d0b9d09930000040f000002f70000013d0000000001000416000000000001004b000008840000c13d000000c901000039000002c60000013d000000440020008c000008840000413d0000000002000416000000000002004b000008840000c13d0000000402100370000000000202043b000800000002001d0000030c0020009c000008840000213d0000002401100370000000000101043b000700000001001d0000030c0010009c000008840000213d00000000020004150000000a0220008a0000000502200210000000000300041a0000ff00013001900000035f0000c13d0000000002000415000000090220008a0000000502200210000000ff003001900000035f0000c13d000003490130019700000001011001bf000000000010041b000003280130019700000101011001bf0000000004000019000000000010041b000000c902000039000000000302041a0000030d0330019700000008033001af000000000032041b0000ff0000100190000001a90000613d000800000004001d0000006501000039000000000201041a0000030d02200197000000000021041b00000000010004110000030c061001970000003301000039000000000201041a0000030d03200197000000000363019f000000000031041b00000000010004140000030c05200197000002e90010009c000002e901008041000000c0011002100000030e011001c70000800d0200003900000003030000390000031b040000410b9d0b930000040f0000000100200190000008840000613d000000000100041a0000ff00001001900000059d0000c13d000000400100043d00000064021000390000032d03000041000000000032043500000044021000390000032e03000041000000000032043500000024021000390000002b030000390000049d0000013d0000000001000416000000000001004b000008840000c13d0000006501000039000002c60000013d000000240020008c000008840000413d0000000002000416000000000002004b000008840000c13d0000000401100370000000000601043b0000030c0060009c000008840000213d0000003301000039000000000101041a0000030c051001970000000001000411000000000015004b000003560000c13d0000006501000039000000000201041a0000030d02200197000000000262019f000000000021041b0000000001000414000002e90010009c000002e901008041000000c0011002100000030e011001c70000800d0200003900000003030000390000030f04000041000003d00000013d0000000001000416000000000001004b000008840000c13d000000cc01000039000002c60000013d0000000001000416000000000001004b000008840000c13d0000003301000039000000000201041a0000030c052001970000000003000411000000000035004b000003560000c13d0000006503000039000000000403041a0000030d04400197000000000043041b0000030d02200197000000000021041b0000000001000414000002e90010009c000002e901008041000000c0011002100000030e011001c70000800d0200003900000003030000390000031b040000410000000006000019000003d00000013d0000000001000416000000000001004b000008840000c13d0000032f01000041000000800010043f000003100100004100000b9e0001042e000000440020008c000008840000413d0000000003000416000000000003004b000008840000c13d0000000403100370000000000303043b0000030a0030009c000008840000213d0000002304300039000000000024004b000008840000813d000700040030003d0000000704100360000000000404043b000800000004001d0000030a0040009c000008840000213d00000008033000290000002403300039000000000023004b000008840000213d0000002403100370000000000303043b0000030a0030009c000008840000213d0000002304300039000000000024004b000008840000813d0000000404300039000000000141034f000000000101043b000600000001001d0000030a0010009c000008840000213d0000002403300039000500000003001d0000000601300029000000000021004b000008840000213d000000c001000039000000400010043f0000002001000039000000800010043f0000031101000041000000a00010043f00000080010000390b9d0a8c0000040f0000000803000029000000000003004b000004c80000613d000000400100043d0004001f0030019300000007020000290000002002200039000300000002001d0000000102200367000700050030027a0000023e0000613d000000070300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b0000023a0000c13d000000040000006b0000024f0000613d00000007030000290000000503300210000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000008040000290000000002410019000000cb030000390000000000320435000002e90010009c000002e9010080410000004001100210000003120040009c000003120200004100000000020440190000006002200210000000000112019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000121019f000003130110009a00008010020000390b9d0b980000040f0000000100200190000008840000613d000000000101043b000200000001001d000000000101041a000000010010019000000001021002700000007f0220618f000100000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000003ba0000c13d0000000101000029000000200010008c000002910000413d000000020100002900000000001004350000000001000414000002e90010009c000002e901008041000000c00110021000000314011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000002910000813d000000000002041b0000000102200039000000000012004b0000028d0000413d00000006010000290000001f0010008c000006ea0000a13d000000020100002900000000001004350000000001000414000002e90010009c000002e901008041000000c00110021000000314011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000200200008a0000000602200180000000000101043b0000070e0000c13d0000000003000019000007190000013d000000240020008c000008840000413d0000000002000416000000000002004b000008840000c13d0000000401100370000000000101043b0000030c0010009c000008840000213d0000003302000039000000000202041a0000030c022001970000000003000411000000000032004b000003560000c13d000000000001004b000003c00000c13d000002ea01000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000032c01000041000000c40010043f0000032b01000041000000e40010043f000002ed0100004100000b9f000104300000000001000416000000000001004b000008840000c13d0000003301000039000000000101041a0000030c01100197000000800010043f000003100100004100000b9e0001042e000002ea01000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000031901000041000000c40010043f0000031a01000041000000e40010043f000002ed0100004100000b9f00010430000000000005004b000002e30000613d000000200750008a0000034806700197000000000616001900000020066000390000000007030019000000000801001900000000790704340000000008980436000000000068004b000002df0000c13d000000000004004b000002f10000613d000000000651001900000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000003120019000000ca04000039000000000043043500000020022000390b9d0b7e0000040f000000000101041a000000400200043d0000000000120435000002e90020009c000002e90200804100000040012002100000030b011001c700000b9e0001042e000000000005004b0000030a0000613d000000200750008a0000034806700197000000000616001900000020066000390000000007030019000000000801001900000000790704340000000008980436000000000068004b000003060000c13d000000000004004b000003180000613d000000000651001900000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000003120019000000cb04000039000000000043043500000020022000390b9d0b7e0000040f0b9d09060000040f0000002002000039000000400300043d000800000003001d00000000022304360b9d09530000040f00000008020000290000000001210049000002e90010009c000002e9010080410000006001100210000002e90020009c000002e9020080410000004002200210000000000121019f00000b9e0001042e0000033003000041000000800030043f0000000003000414000000040040008c000003d50000c13d000000000121034f0000000003000031000003e20000013d0000003301000039000000000101041a0000030c011001970000000002000411000000000021004b000003560000c13d000000c901000039000000000101041a0000030c00100198000004670000c13d000000cc01000039000000000201041a0000000001000414000002e90010009c000002e901008041000000c0011002100000030e011001c7000700000002001d0000030c052001970000800d020000390000000303000039000003440400004100000008060000290b9d0b930000040f0000000100200190000008840000613d00000007010000290000030d0110019700000008011001af000000cc02000039000000000012041b000000000100001900000b9e0001042e000002ea01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000034601000041000000c40010043f000003430100004100000b9f00010430000600000002001d000400000001001d000500000003001d00000323010000410000000000100439000000000100041000000004001004430000000001000414000002e90010009c000002e901008041000000c00110021000000324011001c700008002020000390b9d0b980000040f00000001002001900000059c0000613d000000000101043b000000000001004b000004910000c13d0000000503000029000000ff0130018f000000010010008c0000000001000019000000010100603900000006020000290000000502200270000000000201001f000004940000c13d000000040000006b000001830000613d0000034901300197000000010400003900000001011001bf000001860000013d000000000005004b0000038d0000613d000000200650008a0000034806600197000000000616001900000020066000390000000007030019000000000801001900000000790704340000000008980436000000000068004b000003890000c13d000000000004004b0000039b0000613d000000000651001900000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000003210019000000cb040000390000000000430435000002e90010009c000002e90100804100000040011002100000002002200039000002e90020009c000002e9020080410000006002200210000000000121019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000000101043b000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000043004b000004450000613d0000033d0100004100000000001004350000002201000039000000040010043f0000033e0100004100000b9f000104300000009702000039000000000302041a0000030d04300197000000000414019f000000000042041b0000030c02300197000000800020043f000000a00010043f0000000001000414000002e90010009c000002e901008041000000c00110021000000347011001c70000800d0200003900000001030000390000032a040000410b9d0b930000040f0000000100200190000008840000613d000000000100001900000b9e0001042e000002e90030009c000002e903008041000000c00130021000000331011001c700000000020400190b9d0b980000040f00000000030100190000006003300270000002e90030019d000002e9033001970000000100200190000004710000613d00000080080000390000001f0230018f0000000504300272000003ec0000613d00000005054002100000008005500039000000000601034f000000006706043c0000000008780436000000000058004b000003e80000c13d000000000002004b000003fb0000613d0000000504400210000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f00000000001404350000001f0130003900000348041001970000031c0040009c000004050000a13d0000033d0100004100000000001004350000004101000039000000040010043f0000033e0100004100000b9f000104300000008001400039000700000001001d000000400010043f000003320030009c000008840000213d000000200030008c000008840000413d000000800200043d0000030a0020009c000008840000213d00000080063000390000009f01200039000000000061004b0000000007000019000003330700804100000333086001970000033301100197000000000981013f000000000081004b00000000010000190000033301004041000003330090009c000000000107c019000000000001004b000008840000c13d000000800120003900000000010104330000030a0010009c000003ff0000213d0000001f0710003900000348077001970000003f07700039000003480770019700000007077000290000030a0070009c000003ff0000213d000000400070043f00000007070000290000000000170435000000a0022000390000000007210019000000000067004b000008840000213d00000348071001970000001f0610018f000000a004400039000000000042004b000006810000813d000000000007004b000004410000613d00000000086200190000000005640019000000200550008a000000200880008a0000000009750019000000000a780019000000000a0a04330000000000a90435000000200770008c0000043b0000c13d000000000006004b0000069b0000613d0000000005040019000006910000013d000000400500043d0000000004650436000000000003004b000004a80000613d000400000004001d000500000006001d000600000005001d00000000001004350000000001000414000002e90010009c000002e901008041000000c00110021000000314011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d0000000506000029000000000006004b0000000002000019000000200a00008a00000006050000290000000407000029000004ae0000613d000000000101043b00000000020000190000000003270019000000000401041a000000000043043500000001011000390000002002200039000000000062004b0000045f0000413d000004ae0000013d000002ea01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000034201000041000000c40010043f000003430100004100000b9f00010430000000400200043d0000001f0430018f000000050530027200000005055002100000047d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004790000c13d000000000004004b0000048b0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002e90020009c000002e9020080410000004002200210000000000112019f00000b9f0001043000000006010000290000000501100270000000000100001f000000400100043d00000064021000390000032503000041000000000032043500000044021000390000032603000041000000000032043500000024021000390000002e030000390000000000320435000002ea020000410000000000210435000000040210003900000020030000390000000000320435000002e90010009c000002e901008041000000400110021000000327011001c700000b9f0001043000000349012001970000000000140435000000000006004b00000020020000390000000002006019000000200a00008a0000003f012000390000000001a1016f000000000d51001900000000001d004b000000000100001900000001010040390000030a00d0009c000003ff0000213d0000000100100190000003ff0000c13d0000004000d0043f0000000001050433000000000001004b00000000030500190000000703006029000000c901000039000000000101041a0000030c00100198000700000003001d000004d80000c13d000000cc01000039000000000101041a000004dc0000013d000000800100043d000000000001004b000005ab0000c13d000000400200043d000800000002001d000002ea01000041000000000012043500000004012000390b9d09890000040f00000008020000290000000001210049000002e90010009c000002e9010080410000006001100210000002e90020009c000002e9020080410000004002200210000000000121019f00000b9f000104300b9d09930000040f000000200a00008a0000000703000029000000400d00043d000003370200004100000000022d0436000500000002001d000000040bd00039000000400200003900000000002b04350000004404d0003900000000c303043400000000003404350000030c021001970000000005a3016f0000001f0430018f0000006401d0003900000000001c004b000004fc0000813d000000000005004b000004f70000613d00000000074c00190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000004f10000c13d000000000004004b000005160000613d00000000050c001900000000060100190000050c0000013d000000000005004b000005080000613d000000200650008a0000000006a6016f0000000006160019000000200660003900000000070c0019000000000801001900000000790704340000000008980436000000000068004b000005040000c13d000000000004004b000005160000613d000000000651001900000000055c00190000000304400210000000000706043300000000074701cf000000000747022f00000000050504330000010004400089000000000545022f00000000044501cf000000000474019f000000000046043500040000000c001d000000000413001900000000000404350000001f033000390000000003a3016f00000000011300190000000005b100490000002404d000390000000000540435000000200510003900000338040000410000000000450435000000030400003900000000004104350000000001000414000000040020008c000300000002001d0000052d0000c13d0000000003000031000000a00030008c000000a00400003900000000040340190000055f0000013d000002e900d0009c00060000000d001d000002e90400004100000000040d40190000004004400210000000a403300039000002e90030009c000002e9030080410000006003300210000000000343019f000002e90010009c000002e901008041000000c001100210000000000131019f0b9d0b980000040f00000000030100190000006003300270000002e903300197000000a00030008c000000a00400003900000000040340190000001f0540018f000000050640027200000005066002100000054d0000613d00000006090000290000000007690019000000000801034f000000008a08043c0000000009a90436000000000079004b000005490000c13d000000000005004b0000055b0000613d000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005c00000613d000000060d0000290000001f01400039000001e00210018f0000000001d20019000000000021004b000000000200001900000001020040390000030a0010009c000003ff0000213d0000000100200190000003ff0000c13d000000400010043f000000a00030008c000008840000413d00000000020d0433000003390020009c000008840000213d0000008002d000390000000002020433000003390020009c000008840000213d00000005020000290000000002020433000600000002001d000003320020009c000007080000213d000000060000006b000007080000613d0000006001d000390000000001010433000500000001001d0000033a0100004100000000001004390000000001000414000002e90010009c000002e901008041000000c0011002100000033b011001c70000800b020000390b9d0b980000040f00000001002001900000059c0000613d000000400200043d000000000101043b0005000500100074000007960000813d00000044012000390000034003000041000000000031043500000024012000390000001c030000390000000000310435000002ea010000410000000000120435000000040120003900000020030000390000000000310435000002e90020009c000002e902008041000000400120021000000322011001c700000b9f00010430000000000001042f000600000001001d00000007010000290000030c02100198000000400100043d000005cf0000c13d00000064021000390000032b03000041000000000032043500000044021000390000032c030000410000000000320435000000240210003900000025030000390000049d0000013d00000348041001970000001f0310018f000000400200043d000000a10020008c000005fb0000413d000000000004004b000005bb0000613d000000000632001900000080053001bf000000200660008a0000000007460019000000000845001900000000080804330000000000870435000000200440008c000005b50000c13d000000000003004b000006150000613d000000a00400003900000000050200190000060b0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005cc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005c80000c13d000000000004004b0000048b0000613d0000047f0000013d0000009703000039000000000403041a0000030d05400197000000000525019f000000000053041b000000200310003900000000002304350000030c024001970000000000210435000002e90010009c000002e90100804100000040011002100000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f00000329011001c70000800d0200003900000001030000390000032a040000410b9d0b930000040f0000000100200190000008840000613d000000080000006b000003d30000c13d0000ff010100008a000000060110017f000000000010041b000000400100043d00000001030000390000000000310435000002e90010009c000002e90100804100000040011002100000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f00000314011001c70000800d02000039000002ef04000041000003d00000013d000000000004004b000006070000613d000000200540008a0000034806500197000000a00500003900000000062600190000002006600039000000000702001900000000580504340000000007870436000000000067004b000006030000c13d000000000003004b000006150000613d0000000005420019000000a0044000390000000303300210000000000605043300000000063601cf000000000636022f00000000040404330000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000003120019000000ca040000390000000000430435000002e90020009c000002e90200804100000040022002100000002001100039000002e90010009c000002e9010080410000006001100210000000000112019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000000101043b0000000802000029000000000021041b000000800100043d00000348041001970000001f0310018f000000400200043d000000a10020008c000006430000413d000000000004004b0000063e0000613d000000000632001900000080053001bf000000200660008a0000000007460019000000000845001900000000080804330000000000870435000000200440008c000006380000c13d000000000003004b0000065d0000613d000000a0040000390000000005020019000006530000013d000000000004004b0000064f0000613d000000200540008a0000034806500197000000a00500003900000000062600190000002006600039000000000702001900000000580504340000000007870436000000000067004b0000064b0000c13d000000000003004b0000065d0000613d0000000005420019000000a0044000390000000303300210000000000605043300000000063601cf000000000636022f00000000040404330000010003300089000000000434022f00000000033401cf000000000363019f000000000035043500000000032100190000000000030435000002e90020009c000002e9020080410000004002200210000002e90010009c000002e9010080410000006001100210000000000121019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000000501043b000000400100043d00000008020000290000000000210435000002e90010009c000002e90100804100000040011002100000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f00000314011001c70000800d0200003900000002030000390000032004000041000003d00000013d000000000007004b0000068d0000613d000000200870008a00000348058001970000000005450019000000200550003900000000080200190000000009040019000000008a0804340000000009a90436000000000059004b000006890000c13d000000000006004b0000069b0000613d000000000574001900000000027200190000000306600210000000000705043300000000076701cf000000000767022f00000000020204330000010006600089000000000262022f00000000026201cf000000000272019f0000000000250435000000000141001900000000000104350000033401000041000000400200043d000600000002001d0000000001120436000500000001001d00000000010004140000000802000029000000040020008c000006a80000c13d0000002004000039000006d50000013d0000000602000029000002e90020009c000002e9020080410000004002200210000002e90010009c000002e901008041000000c001100210000000000121019f00000335011001c700000008020000290b9d0b980000040f00000000030100190000006003300270000002e903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000006c30000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000006bf0000c13d000000000005004b000006d20000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006f80000613d0000001f01400039000000600210018f0000000601200029000000000021004b000000000200001900000001020040390000030a0010009c000003ff0000213d0000000100200190000003ff0000c13d000000400010043f000000200030008c000008840000413d00000006020000290000000002020433000800000002001d000000ff0020008c000008840000213d000000070300002900000000020304330000011f0000013d000000060000006b0000000001000019000006f00000613d00000005010000290000000101100367000000000101043b000000060400002900000003024002100000034a0220027f0000034a02200167000000000121016f0000000102400210000000000121019f000007280000013d000000400200043d0000001f0430018f0000000505300272000007040000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007000000c13d000000000004004b0000048b0000613d00000005055002100000047f0000013d00000044021000390000034103000041000000000032043500000024021000390000001c030000390000006e0000013d0000000104000367000000000300001900000005060000290000000005630019000000000554034f000000000505043b000000000051041b00000001011000390000002003300039000000000023004b000007110000413d000000060020006c000007250000813d00000006020000290000000302200210000000f80220018f0000034a0220027f0000034a0220016700000005033000290000000103300367000000000303043b000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000202000029000000000012041b00000003010000290000000102100367000000400100043d0000000703000029000000000003004b0000000503300210000007380000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000007340000c13d000000040000006b000007470000613d000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000230435000000080300002900000000023100190000000000020435000002e90030009c000002e9030080410000006002300210000002e90010009c000002e9010080410000004001100210000000000121019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000000501043b000000400100043d000000200210003900000006060000290000000000620435000000200200003900000000002104350000001f0360018f0000004002100039000000050400002900000001044003670000000506600272000007700000613d00000005076002100000000007720019000000000804034f0000000009020019000000008a08043c0000000009a90436000000000079004b0000076c0000c13d000000000003004b0000077f0000613d0000000506600210000000000464034f00000000066200190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000006060000290000001f0360003900000348033001970000000002620019000000000002043500000040023000390000006003200210000003150330009a000003160020009c0000031703008041000002e90010009c000002e9010080410000004001100210000000000131019f0000000002000414000002e90020009c000002e902008041000000c00220021000000000012100190000800d0200003900000002030000390000031804000041000003d00000013d0000000701000029000000000101043300000348041001970000001f0310018f000000040020006b000007ad0000813d000000000004004b000007a80000613d00000004063000290000000005320019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007a20000c13d000000000003004b000007c70000613d00000004040000290000000005020019000007bd0000013d000000000004004b000007b90000613d000000200540008a0000034805500197000000000525001900000020055000390000000406000029000000000702001900000000680604340000000007870436000000000057004b000007b50000c13d000000000003004b000007c70000613d000000000542001900000004044000290000000303300210000000000605043300000000063601cf000000000636022f00000000040404330000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000003210019000000ca040000390000000000430435000002e90020009c000002e90200804100000040022002100000002001100039000002e90010009c000002e9010080410000006001100210000000000121019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f0000000100200190000008840000613d000000400200043d0000004403200039000200000002001d0000000402200039000000000101043b000000000101041a000000050010006b000007f30000a13d000002ea01000041000000020400002900000000001404350000002001000039000000000012043500000024014000390000001c0200003900000000002104350000033f010000410000000000130435000002e90040009c000002e904008041000000400140021000000322011001c700000b9f000104300000033c0100004100000002060000290000000001160436000500000001001d0000004001000039000000000012043500000007010000290000000001010433000000000013043500000348051001970000001f0410018f0000006403600039000000040030006b000008110000813d000000000005004b0000080d0000613d00000004074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000008070000c13d000000000004004b0000082c0000613d0000000006030019000008210000013d000000000005004b0000081d0000613d000000200650008a0000034806600197000000000636001900000020066000390000000407000029000000000803001900000000790704340000000008980436000000000068004b000008190000c13d000000000004004b0000082c0000613d0000000006530019000400040050002d0000000304400210000000000506043300000000054501cf000000000545022f000000040700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f0000000000460435000000000431001900000000000404350000001f011000390000034801100197000000000331001900000000022300490000000204000029000000240440003900000000002404350000002002300039000003380400004100000000004204350000000302000039000000000023043500000000020004140000000303000029000000040030008c000008420000c13d0000000004000031000000200040008c0000002004008039000008730000013d0000000203000029000002e90030009c000002e9030080410000004003300210000000a401100039000002e90010009c000002e9010080410000006001100210000000000131019f000002e90020009c000002e902008041000000c002200210000000000112019f00000003020000290b9d0b980000040f00000000030100190000006003300270000002e903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000008610000613d000000000701034f0000000208000029000000007907043c00000000089804360000000000a8004b0000085d0000c13d000000000005004b000008700000613d0000000506600210000000000761034f00000002066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008860000613d0000001f01400039000000600210018f0000000201200029000000000021004b000000000200001900000001020040390000030a0010009c000003ff0000213d0000000100200190000003ff0000c13d000000400010043f000000200040008c000008840000413d00000002010000290000000002010433000000ff0020008c000008950000a13d000000000100001900000b9f00010430000000400200043d0000001f0430018f0000000505300272000008920000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000088e0000c13d000000000004004b0000048b0000613d000007060000013d000000130020008c000008b40000813d000000120020008c0000089b0000c13d0000000101000039000008a50000013d0000000a0300003900000001010000390000001202200089000000010020019000000000043300a9000000010300603900000000011300a9000000010220027200000000030400190000089e0000c13d0000000802000029000000120020008c000008b40000213d00000006031000b9000700000003001d00000006023000fa000000000012004b000008b40000c13d000000080100002900000012011000890b9d0a6f0000040f000000000201001900000007010000290b9d0a7e0000040f000002f70000013d0000033d0100004100000000001004350000001101000039000000040010043f0000033e0100004100000b9f0001043000000000030100190000001f01300039000000000021004b0000000004000019000003330400404100000333052001970000033301100197000000000651013f000000000051004b00000000010000190000033301002041000003330060009c000000000104c019000000000001004b000009040000613d0000000106000367000000000136034f000000000401043b0000034b0040009c000008fe0000813d0000001f0140003900000348011001970000003f011000390000034805100197000000400100043d0000000005510019000000000015004b000000000700001900000001070040390000030a0050009c000008fe0000213d0000000100700190000008fe0000c13d000000400050043f000000000541043600000020033000390000000007430019000000000027004b000009040000213d000000000336034f0000001f0240018f00000005064002720000000506600210000008ed0000613d0000000007650019000000000803034f0000000009050019000000008a08043c0000000009a90436000000000079004b000008e90000c13d000000000002004b000008fb0000613d000000000363034f00000000066500190000000302200210000000000706043300000000072701cf000000000727022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000272019f000000000026043500000000024500190000000000020435000000000001042d0000033d0100004100000000001004350000004101000039000000040010043f0000033e0100004100000b9f00010430000000000100001900000b9f000104300003000000000002000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000043004b000009450000c13d000000400500043d0000000004650436000000000003004b000009300000613d000100000004001d000300000006001d000200000005001d00000000001004350000000001000414000002e90010009c000002e901008041000000c00110021000000314011001c700008010020000390b9d0b980000040f0000000100200190000009510000613d0000000306000029000000000006004b000009360000613d000000000201043b0000000001000019000000020500002900000001070000290000000003170019000000000402041a000000000043043500000001022000390000002001100039000000000061004b000009280000413d000009380000013d00000349012001970000000000140435000000000006004b00000020010000390000000001006019000009380000013d000000000100001900000002050000290000003f0110003900000348021001970000000001520019000000000021004b000000000200001900000001020040390000030a0010009c0000094b0000213d00000001002001900000094b0000c13d000000400010043f0000000001050019000000000001042d0000033d0100004100000000001004350000002201000039000000040010043f0000033e0100004100000b9f000104300000033d0100004100000000001004350000004101000039000000040010043f0000033e0100004100000b9f00010430000000000100001900000b9f000104300000000043010434000000000132043600000348063001970000001f0530018f000000000014004b000009690000813d000000000006004b000009650000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000095f0000c13d000000000005004b000009830000613d0000000007010019000009790000013d000000000006004b000009750000613d000000200760008a00000348077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000009710000c13d000000000005004b000009830000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000348023001970000000001210019000000000001042d00000040021000390000034c030000410000000000320435000000200210003900000016030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0002000000000002000000c901000039000000000201041a000000400b00043d0000034d0100004100000000041b04360000000401b000390000034e03000041000000000031043500000000010004140000030c02200197000000040020008c000009a50000c13d0000000003000031000000200030008c00000020040000390000000004034019000009d40000013d000002e900b0009c000002e90300004100000000030b40190000004003300210000002e90010009c000002e901008041000000c001100210000000000131019f0000033e011001c700020000000b001d000100000004001d0b9d0b980000040f000000010a000029000000020b00002900000000030100190000006003300270000002e903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000009c20000613d000000000701034f00000000080b0019000000007907043c00000000089804360000000000a8004b000009be0000c13d000000000005004b000009d10000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000a2f0000613d0000001f01400039000000600110018f000000000ab1001900000000001a004b000000000200001900000001020040390000030a00a0009c00000a290000213d000000010020019000000a290000c13d0000004000a0043f0000001f0030008c00000a270000a13d00000000020b04330000030c0020009c00000a270000213d0000034f0400004100000000064a04360000000404a000390000034e0500004100000000005404350000000004000414000000040020008c00000a1d0000613d000002e900a0009c000002e90100004100000000010a40190000004001100210000002e90040009c000002e904008041000000c003400210000000000113019f0000033e011001c700020000000a001d000100000006001d0b9d0b980000040f000000010b000029000000020a00002900000000030100190000006003300270000002e903300197000000200030008c000000200400003900000000040340190000001f0540018f000000050640027200000a090000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000a050000c13d000000000005004b00000a180000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000a4f0000613d0000001f01400039000000600110018f0000000001a100190000030a0010009c00000a290000213d000000400010043f000000200030008c00000a270000413d00000000010a04330000030c0010009c00000a270000213d000000000001042d000000000100001900000b9f000104300000033d0100004100000000001004350000004101000039000000040010043f0000033e0100004100000b9f00010430000000400200043d0000001f0430018f0000000505300272000000050550021000000a3b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000a370000c13d000000000004004b00000a490000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002e90020009c000002e9020080410000004002200210000000000112019f00000b9f00010430000000400200043d0000001f0430018f0000000505300272000000050550021000000a5b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000a570000c13d000000000004004b00000a690000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002e90020009c000002e9020080410000004002200210000000000121019f00000b9f00010430000000000001004b00000a7c0000613d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a90000000101100272000000000304001900000a730000c13d0000000001020019000000000001042d0000000101000039000000000001042d000000000301001900000000013200a9000000000003004b00000a850000613d00000000033100d9000000000023004b00000a860000c13d000000000001042d0000033d0100004100000000001004350000001101000039000000040010043f0000033e0100004100000b9f000104300003000000000002000000000c0100190000009701000039000000000201041a000000400e00043d0000002401e00039000000400300003900000000003104350000035001000041000000000f1e04360000000401e00039000000000d0004110000000000d104350000004403e0003900000000510c043400000000001304350000030c0220019700000348071001970000001f0610018f0000006404e00039000000000045004b00000ab20000813d000000000007004b00000aae0000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c00000aa80000c13d000000000006004b00000acc0000613d000000000804001900000ac20000013d000000000007004b00000abe0000613d000000200870008a0000034808800197000000000848001900000020088000390000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b00000aba0000c13d000000000006004b00000acc0000613d000000000874001900000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f0000000000580435000000000441001900000000000404350000000004000414000000040020008c00000ad60000c13d0000000003000031000000200030008c0000002004000039000000000403401900000b0e0000013d00030000000c001d0000001f0110003900000348011001970000006401100039000002e90010009c000002e9010080410000006001100210000002e900e0009c000002e90300004100000000030e40190000004003300210000000000131019f000002e90040009c000002e904008041000000c003400210000000000131019f00020000000e001d00010000000f001d0b9d0b980000040f000000010a000029000000020e00002900000000030100190000006003300270000002e903300197000000200030008c000000200400003900000000040340190000001f0540018f000000050640027200000afa0000613d000000000701034f00000000080e0019000000007907043c00000000089804360000000000a8004b00000af60000c13d000000000005004b00000b090000613d0000000506600210000000000761034f00000000066e00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000000030c000029000000000d00041100000b440000613d0000001f01400039000000600110018f0000000004e10019000000000014004b000000000100001900000001010040390000030a0040009c00000b260000213d000000010010019000000b260000c13d000000400040043f0000001f0030008c00000b240000a13d00000000010e0433000000000001004b0000000002000019000000010200c039000000000021004b00000b240000c13d000000000001004b00000b2c0000613d000000000001042d000000000100001900000b9f000104300000033d0100004100000000001004350000004101000039000000040010043f0000033e0100004100000b9f000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000035101000041000000000014043500000004014000390000000000d10435000000640240003900000000010c0019000300000004001d0b9d09530000040f00000003020000290000000001210049000002e90010009c000002e901008041000002e90020009c000002e90200804100000060011002100000004002200210000000000121019f00000b9f00010430000000400200043d0000001f0430018f0000000505300272000000050550021000000b500000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000b4c0000c13d000000000004004b00000b5e0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002e90020009c000002e9020080410000004002200210000000000112019f00000b9f000104300000006502000039000000000302041a0000030d03300197000000000032041b0000030c061001970000003301000039000000000201041a0000030d03200197000000000363019f000000000031041b00000000010004140000030c05200197000002e90010009c000002e901008041000000c0011002100000030e011001c70000800d0200003900000003030000390000031b040000410b9d0b930000040f000000010020019000000b7b0000613d000000000001042d000000000100001900000b9f00010430000000000001042f000002e90010009c000002e9010080410000004001100210000002e90020009c000002e9020080410000006002200210000000000112019f0000000002000414000002e90020009c000002e902008041000000c002200210000000000112019f0000030e011001c700008010020000390b9d0b980000040f000000010020019000000b910000613d000000000101043b000000000001042d000000000100001900000b9f0001043000000b96002104210000000102000039000000000001042d0000000002000019000000000001042d00000b9b002104230000000102000039000000000001042d0000000002000019000000000001042d00000b9d0000043200000b9e0001042e00000b9f00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff08c379a000000000000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000002000000000000000000000000000000000000200000008000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a5000000000000000000000000000000000000000000000000000000009eab1ad500000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fdfbc277000000000000000000000000000000000000000000000000000000009eab1ad600000000000000000000000000000000000000000000000000000000b4a0bdf3000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000099fe040e00000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000003e83b6b700000000000000000000000000000000000000000000000000000000475e7de400000000000000000000000000000000000000000000000000000000475e7de500000000000000000000000000000000000000000000000000000000485cc95500000000000000000000000000000000000000000000000000000000636b999a000000000000000000000000000000000000000000000000000000003e83b6b80000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000000e32cb85000000000000000000000000000000000000000000000000000000000e32cb8600000000000000000000000000000000000000000000000000000000255ce37a00000000000000000000000000000000000000000000000000000000011d396200000000000000000000000000000000000000000000000000000000047a74b2000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700000000000000000000000000000000000000002000000080000000000000000073657453796d626f6c4f7665727269646528737472696e672c737472696e672900000000000000000000000000000000000000000000000000000000ffffffdffdffffffffffffffffffffffffffffffffffffe00000000000000000000000000200000000000000000000000000000000000020000000000000000000000000fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000002000000000000000000000000000000ffffffff000000000000000000000000ceb1f47aa91b96f02ea70e1deed25fe154ad1885aea509bd7222f9eec0a0bda54f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657200000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff9f29000000000000000000000000000000000000000000000000000000000000007365744d61785374616c65506572696f6428737472696e672c75696e7432353637839d4a80c5e3f2578f59515c911ee8cce42383d7ebaa1c92afcde9871c4b587374616c6520706572696f642063616e2774206265207a65726f00000000000000000000000000000000000000000000000000640000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000020000000000000000000000000000000000004000000000000000000000000066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa06472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb95d89b410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000424e420000000000000000000000000000000000000000000000000000000000bfda5e7100000000000000000000000000000000000000000000000000000000555344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000006e91995a000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000062696e616e6365206f7261636c65207072696365206578706972656400000000757064617465644174206578636565647320626c6f636b2074696d6500000000696e76616c69642062696e616e6365206f7261636c6520707269636500000000736964526567697374727941646472657373206d757374206265207a65726f0000000000000000000000000000000000000000640000008000000000000000006d1006252b3dd171af76c28c184327bfddc39f439a50e0ac7f418c660b8894b563616e2774206265207a65726f206164647265737300000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720200000000000000000000000000000000000040000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000001000000000000000073796d626f6c2063616e6e6f7420626520656d707479000000000000000000000178b8bf0000000000000000000000000000000000000000000000000000000094fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff3b3b57de0000000000000000000000000000000000000000000000000000000018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"BNB_ADDR()":"3e83b6b8","acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","feedRegistryAddress()":"011d3962","getFeedRegistryAddress()":"99fe040e","getPrice(address)":"41976e09","initialize(address,address)":"485cc955","maxStalePeriod(string)":"fdfbc277","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","setFeedRegistryAddress(address)":"255ce37a","setMaxStalePeriod(string,uint256)":"636b999a","setSymbolOverride(string,string)":"9eab1ad6","sidRegistryAddress()":"475e7de5","symbols(string)":"047a74b2","transferOwnership(address)":"f2fde38b"}},"hash":"0100035335123932826814f7b678f665d5dc4d7146642b2857a93974171b6921","factoryDependencies":{}}},"contracts/oracles/BoundValidator.sol":{"BoundValidator":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"uint256","name":"upperBound","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"lowerBound","type":"uint256"}],"name":"ValidateConfigAdded","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"upperBoundRatio","type":"uint256"},{"internalType":"uint256","name":"lowerBoundRatio","type":"uint256"}],"internalType":"struct BoundValidator.ValidateConfig","name":"config","type":"tuple"}],"name":"setValidateConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"upperBoundRatio","type":"uint256"},{"internalType":"uint256","name":"lowerBoundRatio","type":"uint256"}],"internalType":"struct BoundValidator.ValidateConfig[]","name":"configs","type":"tuple[]"}],"name":"setValidateConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validateConfigs","outputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"upperBoundRatio","type":"uint256"},{"internalType":"uint256","name":"lowerBoundRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"reportedPrice","type":"uint256"},{"internalType":"uint256","name":"anchorPrice","type":"uint256"}],"name":"validatePriceWithAnchorPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"upperBound\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lowerBound\",\"type\":\"uint256\"}],\"name\":\"ValidateConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"internalType\":\"struct BoundValidator.ValidateConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"setValidateConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"internalType\":\"struct BoundValidator.ValidateConfig[]\",\"name\":\"configs\",\"type\":\"tuple[]\"}],\"name\":\"setValidateConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"validateConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"upperBoundRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lowerBoundRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reportedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validatePriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setValidateConfig((address,uint256,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Null address error is thrown if asset address is nullRange error thrown if bound ratio is not positiveRange error thrown if lower bound is greater than or equal to upper bound\",\"custom:event\":\"Emits ValidateConfigAdded when a validation config is successfully set\",\"params\":{\"config\":\"Validation config struct\"}},\"setValidateConfigs((address,uint256,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error is thrown if length of the config array is 0\",\"custom:event\":\"Emits ValidateConfigAdded for each validation config that is successfully set\",\"params\":{\"configs\":\"Array of validation configs\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"validatePriceWithAnchorPrice(address,uint256,uint256)\":{\"custom:error\":\"Missing error thrown if asset config is not setPrice error thrown if anchor price is not valid\",\"params\":{\"asset\":\"asset address\",\"reportedPrice\":\"The price to be tested\"}}},\"title\":\"BoundValidator\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"ValidateConfigAdded(address,uint256,uint256)\":{\"notice\":\"Emit this event when new validation configs are added\"}},\"kind\":\"user\",\"methods\":{\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract. Sets immutable variables.\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setValidateConfig((address,uint256,uint256))\":{\"notice\":\"Add a single validation config\"},\"setValidateConfigs((address,uint256,uint256)[])\":{\"notice\":\"Add multiple validation configs at the same time\"},\"validateConfigs(address)\":{\"notice\":\"validation configs by asset\"},\"validatePriceWithAnchorPrice(address,uint256,uint256)\":{\"notice\":\"Test reported asset price against anchor price\"}},\"notice\":\"The BoundValidator contract is used to validate prices fetched from two different sources. Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid it must fall within this range of the validator price.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/BoundValidator.sol\":\"BoundValidator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]},\"contracts/oracles/BoundValidator.sol\":{\"keccak256\":\"0xa3e304eca85c87de21b59df54527bc6e05dbf4e00c0318e2836c61d15e879c43\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://89630a6efd777edae93341a2b4097ed04f97e81336a784e49c5bd6f84d44f6f0\",\"dweb:/ipfs/QmWJZZd3U2oatoAzwpQgBzeRYMucZdS72W1kYKYzQhyJeD\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"initialize(address)":{"params":{"accessControlManager_":"Address of the access control manager contract"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setValidateConfig((address,uint256,uint256))":{"custom:access":"Only Governance","custom:error":"Null address error is thrown if asset address is nullRange error thrown if bound ratio is not positiveRange error thrown if lower bound is greater than or equal to upper bound","custom:event":"Emits ValidateConfigAdded when a validation config is successfully set","params":{"config":"Validation config struct"}},"setValidateConfigs((address,uint256,uint256)[])":{"custom:access":"Only Governance","custom:error":"Zero length error is thrown if length of the config array is 0","custom:event":"Emits ValidateConfigAdded for each validation config that is successfully set","params":{"configs":"Array of validation configs"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"validatePriceWithAnchorPrice(address,uint256,uint256)":{"custom:error":"Missing error thrown if asset config is not setPrice error thrown if anchor price is not valid","params":{"asset":"asset address","reportedPrice":"The price to be tested"}}},"title":"BoundValidator","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"},"ValidateConfigAdded(address,uint256,uint256)":{"notice":"Emit this event when new validation configs are added"}},"kind":"user","methods":{"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"constructor":{"notice":"Constructor for the implementation contract. Sets immutable variables."},"initialize(address)":{"notice":"Initializes the owner of the contract"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setValidateConfig((address,uint256,uint256))":{"notice":"Add a single validation config"},"setValidateConfigs((address,uint256,uint256)[])":{"notice":"Add multiple validation configs at the same time"},"validateConfigs(address)":{"notice":"validation configs by asset"},"validatePriceWithAnchorPrice(address,uint256,uint256)":{"notice":"Test reported asset price against anchor price"}},"notice":"The BoundValidator contract is used to validate prices fetched from two different sources. Each asset has an upper and lower bound ratio set in the config. In order for a price to be valid it must fall within this range of the validator price.","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":5928,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"validateConfigs","offset":0,"slot":"201","type":"t_mapping(t_address,t_struct(ValidateConfig)5922_storage)"},{"astId":6155,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_mapping(t_address,t_struct(ValidateConfig)5922_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct BoundValidator.ValidateConfig)","numberOfBytes":"32","value":"t_struct(ValidateConfig)5922_storage"},"t_struct(ValidateConfig)5922_storage":{"encoding":"inplace","label":"struct BoundValidator.ValidateConfig","members":[{"astId":5915,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"asset","offset":0,"slot":"0","type":"t_address"},{"astId":5918,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"upperBoundRatio","offset":0,"slot":"1","type":"t_uint256"},{"astId":5921,"contract":"contracts/oracles/BoundValidator.sol:BoundValidator","label":"lowerBoundRatio","offset":0,"slot":"2","type":"t_uint256"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0002000000000002000800000000000200010000000103550000008003000039000000400030043f0000000100200190000000240000c13d000000000201001900000060022002700000016702200197000000040020008c000003810000413d000000000301043b000000e0033002700000016f0030009c000000410000213d000001770030009c0000006d0000213d0000017b0030009c000000b20000613d0000017c0030009c000000cf0000613d0000017d0030009c000003810000c13d0000000001000416000000000001004b000003810000c13d0000006501000039000000000101041a0000017e021001970000000001000411000000000012004b000001840000c13d059705300000040f0000000001000019000005980001042e0000000001000416000000000001004b000003810000c13d000000000100041a0000ff0000100190000000610000c13d000000ff0210018f000000ff0020008c0000003c0000613d000000ff011001bf000000000010041b000000ff01000039000000800010043f0000000001000414000001670010009c0000016701008041000000c0011002100000016c011001c70000800d0200003900000001030000390000016d040000410597058d0000040f0000000100200190000003810000613d0000002001000039000001000010044300000120000004430000016e01000041000005980001042e000001700030009c0000008f0000213d000001740030009c000000e80000613d000001750030009c000000fe0000613d000001760030009c000003810000c13d000000240020008c000003810000413d0000000002000416000000000002004b000003810000c13d0000000401100370000000000101043b0000017e0010009c000003810000213d0000000000100435000000c901000039000000200010043f059705800000040f0000000202100039000000000202041a0000000103100039000000000303041a000000000101041a0000017e01100197000000800010043f000000a00030043f000000c00020043f0000019101000041000005980001042e0000016801000041000000800010043f0000002001000039000000840010043f0000002701000039000000a40010043f0000016901000041000000c40010043f0000016a01000041000000e40010043f0000016b010000410000059900010430000001780030009c000001030000613d000001790030009c000001080000613d0000017a0030009c000003810000c13d000000240020008c000003810000413d0000000003000416000000000003004b000003810000c13d0000000403100370000000000303043b000001920030009c000003810000213d0000002304300039000000000024004b000003810000813d0000000404300039000000000441034f000000000604043b000001930060009c000000890000813d00000005046002100000003f044000390000019404400197000001950040009c000001bf0000a13d000001980100004100000000001004350000004101000039000000040010043f00000199010000410000059900010430000001710030009c0000012e0000613d000001720030009c000001720000613d000001730030009c000003810000c13d000000240020008c000003810000413d0000000002000416000000000002004b000003810000c13d0000000401100370000000000601043b0000017e0060009c000003810000213d0000003301000039000000000101041a0000017e051001970000000001000411000000000015004b0000017b0000c13d0000006501000039000000000201041a0000017f02200197000000000262019f000000000021041b0000000001000414000001670010009c0000016701008041000000c00110021000000180011001c70000800d0200003900000003030000390000018104000041000001e90000013d000000240020008c000003810000413d0000000002000416000000000002004b000003810000c13d0000000401100370000000000101043b0000017e0010009c000003810000213d0000003302000039000000000202041a0000017e022001970000000003000411000000000032004b0000017b0000c13d000000000001004b000001d90000c13d0000016801000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000018e01000041000000c40010043f0000018d01000041000000e40010043f0000016b0100004100000599000104300000000001000416000000000001004b000003810000c13d0000003301000039000000000201041a0000017e052001970000000003000411000000000035004b0000017b0000c13d0000006503000039000000000403041a0000017f04400197000000000043041b0000017f02200197000000000021041b0000000001000414000001670010009c0000016701008041000000c00110021000000180011001c70000800d02000039000000030300003900000189040000410000000006000019000001e90000013d000000640020008c000003810000413d0000000002000416000000000002004b000003810000c13d000000e002000039000000400020043f0000000402100370000000000202043b0000017e0020009c000003810000213d000000800020043f0000002402100370000000000202043b000000a00020043f0000004401100370000000000101043b000000c00010043f0000008001000039059703eb0000040f0000000001000019000005980001042e0000000001000416000000000001004b000003810000c13d0000009701000039000001760000013d0000000001000416000000000001004b000003810000c13d0000003301000039000001760000013d000000640020008c000003810000413d0000000002000416000000000002004b000003810000c13d0000000402100370000000000202043b0000017e0020009c000003810000213d0000004401100370000000000101043b000500000001001d0000000000200435000000c901000039000000200010043f0000000001000414000001670010009c0000016701008041000000c0011002100000018a011001c7000600000002001d0000801002000039059705920000040f00000001002001900000000602000029000003810000613d000000000101043b0000000101100039000000000101041a000000000001004b000001ee0000c13d000000400100043d0000004402100039000001a803000041000000000032043500000024021000390000001b03000039000001f70000013d000000240020008c000003810000413d0000000002000416000000000002004b000003810000c13d0000000401100370000000000401043b0000017e0040009c000003810000213d0000000002000415000000080220008a0000000502200210000000000300041a0000ff0001300190000600000004001d000001900000c13d0000000002000415000000070220008a0000000502200210000000ff00300190000001900000c13d000001880130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001b40000613d000500000002001d0000006501000039000000000201041a0000017f02200197000000000021041b00000000010004110000017e061001970000003301000039000000000201041a0000017f03200197000000000363019f000000000031041b00000000010004140000017e05200197000001670010009c0000016701008041000000c00110021000000180011001c70000800d02000039000000030300003900000189040000410597058d0000040f00000006050000290000000100200190000003810000613d000000000100041a0000ff0000100190000001b40000613d000400000001001d000000400100043d000000000005004b000002700000c13d00000064021000390000018d03000041000000000032043500000044021000390000018e030000410000000000320435000000240210003900000025030000390000020e0000013d0000000001000416000000000001004b000003810000c13d0000006501000039000000000101041a0000017e01100197000000800010043f0000018201000041000005980001042e0000016801000041000000800010043f0000002001000039000000840010043f000000a40010043f000001ab01000041000000c40010043f000001ac0100004100000599000104300000016801000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000001a901000041000000c40010043f000001aa01000041000000e40010043f0000016b010000410000059900010430000500000002001d000300000001001d000400000003001d00000183010000410000000000100439000000000100041000000004001004430000000001000414000001670010009c0000016701008041000000c00110021000000184011001c70000800202000039059705920000040f0000000100200190000001be0000613d000000000101043b000000000001004b000002020000c13d0000000403000029000000ff0130018f000000010010008c0000000001000019000000010100603900000005020000290000000502200270000000000201001f000002050000c13d000000030000006b000001430000613d000001ae01300197000000010200003900000001011001bf000000000010041b0000ff0000100190000001490000c13d000000400100043d00000064021000390000018f03000041000000000032043500000044021000390000019003000041000000000032043500000024021000390000002b030000390000020e0000013d000000000001042f0000008005400039000000400050043f000000800060043f000000240330003900000060046000c90000000004340019000000000024004b000003810000213d000000000006004b000002270000c13d0000004401500039000001a402000041000000000021043500000024015000390000001e02000039000000000021043500000168010000410000000000150435000000040150003900000020020000390000000000210435000001670050009c00000167050080410000004001500210000001a1011001c700000599000104300000009702000039000000000302041a0000017f04300197000000000414019f000000000042041b0000017e02300197000000800020043f000000a00010043f0000000001000414000001670010009c0000016701008041000000c001100210000001ad011001c70000800d0200003900000001030000390000018b040000410597058d0000040f0000000100200190000003810000613d0000000001000019000005980001042e0000000503000029000000000003004b000002190000c13d000000400100043d0000004402100039000001a703000041000000000032043500000024021000390000001903000039000000000032043500000168020000410000000000210435000000040210003900000020030000390000000000320435000001670010009c00000167010080410000004001100210000001a1011001c7000005990001043000000005010000290000000501100270000000000100001f000000400100043d00000064021000390000018503000041000000000032043500000044021000390000018603000041000000000032043500000024021000390000002e03000039000000000032043500000168020000410000000000210435000000040210003900000020030000390000000000320435000001670010009c0000016701008041000000400110021000000187011001c7000005990001043000000024010000390000000101100367000000000401043b000000000004004b00000000010000190000024a0000c13d000000010110018f000000400200043d0000000000120435000001670020009c00000167020080410000004001200210000001a6011001c7000005980001042e000000a0050000390000000006320049000001960060009c000003810000213d000000600060008c000003810000413d000000400600043d000001970060009c000000890000213d0000006007600039000000400070043f000000000731034f000000000707043b0000017e0070009c000003810000213d00000000077604360000002008300039000000000881034f000000000808043b00000000008704350000004007300039000000000771034f000000000707043b0000004008600039000000000078043500000000056504360000006003300039000000000043004b000002280000413d000000800100043d000200000001001d000000000001004b0000029c0000c13d000000400500043d000001c90000013d000001a5053000d100000000013500d9000001a50010009c0000026a0000c13d000400000005001d000500000004001d0000000000200435000000c901000039000000200010043f0000000001000414000001670010009c0000016701008041000000c0011002100000018a011001c70000801002000039059705920000040f0000000100200190000003810000613d000000040300002900000005023000fa000000000301043b0000000101300039000000000101041a000000000012004b00000000010000190000021f0000213d0000000201300039000000000101041a000000000012004b000000000100001900000001010080390000021f0000013d000001980100004100000000001004350000001101000039000000040010043f000001990100004100000599000104300000009702000039000000000302041a0000017f04300197000000000454019f000000000042041b000000200210003900000000005204350000017e023001970000000000210435000001670010009c000001670100804100000040011002100000000002000414000001670020009c0000016702008041000000c002200210000000000112019f0000018a011001c70000800d0200003900000001030000390000018b040000410597058d0000040f0000000100200190000003810000613d000000050000006b000001ec0000c13d0000ff010100008a000000040110017f000000000010041b000000400100043d00000001030000390000000000310435000001670010009c000001670100804100000040011002100000000002000414000001670020009c0000016702008041000000c002200210000000000112019f0000018c011001c70000800d020000390000016d04000041000001e90000013d000600000000001d000000800100043d000000060010006b000003890000813d000000400c00043d0000019700c0009c000000890000213d00000006010000290000000501100210000000a001100039000000000b0104330000006001c00039000000400010043f0000004001c000390000019a0200004100000000002104350000002003c000390000019b010000410000000000130435000000210100003900000000001c04350000009701000039000000000201041a000000400d00043d0000002401d00039000000400400003900000000004104350000019c01000041000000000e1d04360000000401d000390000000004000411000000000041043500000000010c04330000004404d000390000000000140435000001af061001970000001f0510018f0000006404d00039000000000043004b000002d40000813d000000000006004b000002d00000613d00000000085300190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000002ca0000c13d000000000005004b000002ee0000613d0000000007040019000002e40000013d000000000006004b000002e00000613d000000200760008a000001af077001970000000007740019000000200770003900000000080300190000000009040019000000008a0804340000000009a90436000000000079004b000002dc0000c13d000000000005004b000002ee0000613d000000000764001900000000036300190000000305500210000000000607043300000000065601cf000000000656022f00000000030304330000010005500089000000000353022f00000000035301cf000000000363019f00000000003704350000017e02200197000000000341001900000000000304350000000003000414000000040020008c00050000000b001d000002fa0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003310000013d00040000000c001d0000001f01100039000001af011001970000006401100039000001670010009c000001670100804100000060011002100000016700d0009c000001670400004100000000040d40190000004004400210000000000141019f000001670030009c0000016703008041000000c003300210000000000131019f00030000000d001d00010000000e001d059705920000040f0000000109000029000000030d000029000000000301001900000060033002700000016703300197000000200030008c0000002004000039000000000403401900000005054002720000031d0000613d000000000601034f00000000070d0019000000006806043c0000000007870436000000000097004b000003190000c13d0000001f064001900000032c0000613d0000000505500210000000000751034f00000000055d00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000050b000029000000040c000029000003cb0000613d0000001f01400039000000600110018f0000000004d10019000000000014004b00000000010000190000000101004039000001920040009c000000890000213d0000000100100190000000890000c13d000000400040043f000000200030008c000003810000413d00000000010d0433000000000001004b0000000002000019000000010200c039000000000021004b000003810000c13d000000000001004b0000038f0000613d00000000510b04340000017e01100198000003a80000613d0000000002050433000000000002004b000003830000613d0000004006b000390000000003060433000000000003004b000003830000613d000300000006001d000400000005001d000000000032004b000003b80000a13d0000000000100435000000c901000039000000200010043f0000000001000414000001670010009c0000016701008041000000c0011002100000018a011001c70000801002000039059705920000040f00000001002001900000000502000029000003810000613d00000000020204330000017e05200197000000000101043b000000000201041a0000017f02200197000000000252019f000000000021041b000000040200002900000000060204330000000102100039000000000062041b000000020110003900000003020000290000000007020433000000000071041b0000000001000414000001670010009c0000016701008041000000c00110021000000180011001c70000800d0200003900000004030000390000019f040000410597058d0000040f0000000100200190000003810000613d00000006020000290000000102200039000600000002001d000000020020006c0000029d0000413d000001ec0000013d000000000100001900000599000104300000004401400039000001a002000041000000000021043500000024014000390000001602000039000003ad0000013d000001980100004100000000001004350000003201000039000000040010043f00000199010000410000059900010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000001a3010000410000000000140435000000040140003900000000020004110000000000210435000000640240003900000000010c0019000600000004001d059705490000040f00000006020000290000000001210049000001670010009c0000016701008041000001670020009c000001670200804100000060011002100000004002200210000000000121019f00000599000104300000004401400039000001a202000041000000000021043500000024014000390000001b02000039000000000021043500000168010000410000000000140435000000040140003900000020020000390000000000210435000001670040009c00000167040080410000004001400210000001a1011001c7000005990001043000000064014000390000019d02000041000000000021043500000044014000390000019e02000041000000000021043500000024014000390000002c02000039000000000021043500000168010000410000000000140435000000040140003900000020020000390000000000210435000001670040009c0000016704008041000000400140021000000187011001c70000059900010430000000400200043d0000001f0430018f00000005053002720000000505500210000003d70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003d30000c13d000000000004004b000003e50000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001670020009c00000167020080410000004002200210000000000112019f00000599000104300004000000000002000000000c010019000000400d00043d000001b000d0009c000004c90000813d0000006001d00039000000400010043f0000004001d000390000019a0200004100000000002104350000002001d000390000019b020000410000000000210435000000210200003900000000002d04350000009702000039000000000202041a000000400f00043d0000002403f00039000000400400003900000000004304350000019c0300004100000000033f0436000300000003001d0000000403f00039000000000e0004110000000000e3043500000000030d04330000004404f0003900000000003404350000017e02200197000001af073001970000001f0630018f0000006405f00039000000000051004b0000041f0000813d000000000007004b0000041b0000613d00000000096100190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000004150000c13d000000000006004b000004390000613d00000000080500190000042f0000013d000000000007004b0000042b0000613d000000200870008a000001af08800197000000000858001900000020088000390000000009010019000000000a050019000000009b090434000000000aba043600000000008a004b000004270000c13d000000000006004b000004390000613d000000000875001900000000017100190000000306600210000000000708043300000000076701cf000000000767022f00000000010104330000010006600089000000000161022f00000000016101cf000000000171019f0000000000180435000000000153001900000000000104350000000001000414000000040020008c00040000000c001d000004440000c13d0000000003000031000000200030008c000000200400003900000000040340190000047c0000013d00020000000d001d0000001f03300039000001af033001970000006403300039000001670030009c000001670300804100000060033002100000016700f0009c000001670400004100000000040f40190000004004400210000000000343019f000001670010009c0000016701008041000000c001100210000000000113019f00010000000f001d059705920000040f000000010f000029000000000301001900000060033002700000016703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000004670000613d000000000701034f00000000080f0019000000007907043c00000000089804360000000000a8004b000004630000c13d000000000005004b000004760000613d0000000506600210000000000761034f00000000066f00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000000040c000029000000020d000029000000000e000411000005100000613d0000001f01400039000000600110018f0000000004f10019000000000014004b00000000010000190000000101004039000001920040009c000004c90000213d0000000100100190000004c90000c13d000000400040043f0000001f0030008c000004c70000a13d00000000010f0433000000000001004b0000000002000019000000010200c039000000000021004b000004c70000c13d000000000001004b000004d50000613d00000000510c04340000017e01100198000004ed0000613d0000000002050433000000000002004b000004cf0000613d0000004006c000390000000003060433000000000003004b000004cf0000613d000200000006001d000300000005001d000000000032004b000004fd0000a13d0000000000100435000000c901000039000000200010043f0000000001000414000001670010009c0000016701008041000000c0011002100000018a011001c70000801002000039059705920000040f00000001002001900000000402000029000004c70000613d00000000020204330000017e05200197000000000101043b000000000201041a0000017f02200197000000000252019f000000000021041b000000030200002900000000060204330000000102100039000000000062041b000000020110003900000002020000290000000007020433000000000071041b0000000001000414000001670010009c0000016701008041000000c00110021000000180011001c70000800d0200003900000004030000390000019f040000410597058d0000040f0000000100200190000004c70000613d000000000001042d00000000010000190000059900010430000001980100004100000000001004350000004101000039000000040010043f000001990100004100000599000104300000004401400039000001a002000041000000000021043500000024014000390000001602000039000004f20000013d000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000001a301000041000000000014043500000004014000390000000000e10435000000640240003900000000010d0019000400000004001d059705490000040f00000004020000290000000001210049000001670010009c0000016701008041000001670020009c000001670200804100000060011002100000004002200210000000000121019f00000599000104300000004401400039000001a202000041000000000021043500000024014000390000001b02000039000000000021043500000168010000410000000000140435000000040140003900000020020000390000000000210435000001670040009c00000167040080410000004001400210000001a1011001c7000005990001043000000064014000390000019d02000041000000000021043500000044014000390000019e02000041000000000021043500000024014000390000002c02000039000000000021043500000168010000410000000000140435000000040140003900000020020000390000000000210435000001670040009c0000016704008041000000400140021000000187011001c70000059900010430000000400200043d0000001f0430018f000000050530027200000005055002100000051c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005180000c13d000000000004004b0000052a0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001670020009c00000167020080410000004002200210000000000112019f00000599000104300000006502000039000000000302041a0000017f03300197000000000032041b0000017e061001970000003301000039000000000201041a0000017f03200197000000000363019f000000000031041b00000000010004140000017e05200197000001670010009c0000016701008041000000c00110021000000180011001c70000800d02000039000000030300003900000189040000410597058d0000040f0000000100200190000005470000613d000000000001042d0000000001000019000005990001043000000000430104340000000001320436000001af063001970000001f0530018f000000000014004b0000055f0000813d000000000006004b0000055b0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000005550000c13d000000000005004b000005790000613d00000000070100190000056f0000013d000000000006004b0000056b0000613d000000200760008a000001af077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000005670000c13d000000000005004b000005790000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000001af023001970000000001210019000000000001042d000000000001042f0000000001000414000001670010009c0000016701008041000000c0011002100000018a011001c70000801002000039059705920000040f00000001002001900000058b0000613d000000000101043b000000000001042d0000000001000019000005990001043000000590002104210000000102000039000000000001042d0000000002000019000000000001042d00000595002104230000000102000039000000000001042d0000000002000019000000000001042d0000059700000432000005980001042e00000599000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff08c379a000000000000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000002000000000000000000000000000000000000200000008000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000af9e6c5a00000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000af9e6c5b00000000000000000000000000000000000000000000000000000000b4a0bdf300000000000000000000000000000000000000000000000000000000bca9e116000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000097c7033e000000000000000000000000000000000000000000000000000000009c357615000000000000000000000000000000000000000000000000000000000e32cb8600000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270000000000000000000000000000000000000000200000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0020000000000000000000000000000000000004000000000000000000000000066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa002000000000000000000000000000000000000200000000000000000000000006472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420690000000000000000000000000000000000000060000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000000000000100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff9f4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000290000000000000000000000000000000000000000000000000000000000000073657456616c6964617465436f6e6669672856616c6964617465436f6e66696718c5e8ab000000000000000000000000000000000000000000000000000000006c6f776e657220626f756e640000000000000000000000000000000000000000757070657220626f756e64206d75737420626520686967686572207468616e2028e2d96bdcf74fe6203e40d159d27ec2e15230239c0aee4a0a914196c550e6d1626f756e64206d75737420626520706f73697469766500000000000000000000000000000000000000000000000000000000006400000000000000000000000061737365742063616e2774206265207a65726f206164647265737300000000004a3fa29300000000000000000000000000000000000000000000000000000000696e76616c69642076616c696461746520636f6e666967206c656e67746800000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000020000000000000000000000000616e63686f72207072696365206973206e6f742076616c69640000000000000076616c69646174696f6e20636f6e666967206e6f7420657869737400000000004f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657200000000000000000000000000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000040000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffa0"},"methodIdentifiers":{"acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","initialize(address)":"c4d66de8","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","setValidateConfig((address,uint256,uint256))":"af9e6c5b","setValidateConfigs((address,uint256,uint256)[])":"9c357615","transferOwnership(address)":"f2fde38b","validateConfigs(address)":"bca9e116","validatePriceWithAnchorPrice(address,uint256,uint256)":"97c7033e"}},"hash":"010001b1754cd26b020766720b8f5b0007aebeba06b9866c97b8e80a9fcd3d02","factoryDependencies":{}}},"contracts/oracles/ChainlinkOracle.sol":{"ChainlinkOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPriceMantissa","type":"uint256"}],"name":"PricePosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"address","name":"feed","type":"address"},{"indexed":false,"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"name":"TokenConfigAdded","type":"event"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setDirectPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"internalType":"struct ChainlinkOracle.TokenConfig","name":"tokenConfig","type":"tuple"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"internalType":"struct ChainlinkOracle.TokenConfig[]","name":"tokenConfigs_","type":"tuple[]"}],"name":"setTokenConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenConfigs","outputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"PricePosted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setDirectPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of the asset\"},\"returns\":{\"_0\":\"Price in USD from Chainlink or a manually set price for the asset\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setDirectPrice(address,uint256)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits PricePosted event on successfully setup of asset price\",\"params\":{\"asset\":\"Asset address\",\"price\":\"Asset price in 18 decimals\"}},\"setTokenConfig((address,address,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero\",\"custom:event\":\"Emits TokenConfigAdded event on successfully setting of the token config\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error thrown, if length of the array in parameter is 0\",\"params\":{\"tokenConfigs_\":\"config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"title\":\"ChainlinkOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"PricePosted(address,uint256,uint256)\":{\"notice\":\"Emit when a price is manually set\"},\"TokenConfigAdded(address,address,uint256)\":{\"notice\":\"Emit when a token config is added\"}},\"kind\":\"user\",\"methods\":{\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the price of a asset from the chainlink oracle\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"prices(address)\":{\"notice\":\"Manually set an override price, useful under extenuating conditions such as price feed failure\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setDirectPrice(address,uint256)\":{\"notice\":\"Manually set the price of a given asset\"},\"setTokenConfig((address,address,uint256))\":{\"notice\":\"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\"},\"setTokenConfigs((address,address,uint256)[])\":{\"notice\":\"Add multiple token configs at the same time\"},\"tokenConfigs(address)\":{\"notice\":\"Token config by assets\"}},\"notice\":\"This oracle fetches prices of assets from the Chainlink oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/ChainlinkOracle.sol\":\"ChainlinkOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]},\"contracts/oracles/ChainlinkOracle.sol\":{\"keccak256\":\"0x057852418e032dbb6210719170444bf73a4d12be50970570e28623719ea961a4\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f39e2abd97f5269a714da8e6dff2d1074e5d36f545e57785a91f763a3c3c3f01\",\"dweb:/ipfs/QmUAAbJwyxjvh1b45zLBySPVgCd2986UHRtPa6jdyJYSM8\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getPrice(address)":{"params":{"asset":"Address of the asset"},"returns":{"_0":"Price in USD from Chainlink or a manually set price for the asset"}},"initialize(address)":{"params":{"accessControlManager_":"Address of the access control manager contract"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setDirectPrice(address,uint256)":{"custom:access":"Only Governance","custom:event":"Emits PricePosted event on successfully setup of asset price","params":{"asset":"Asset address","price":"Asset price in 18 decimals"}},"setTokenConfig((address,address,uint256))":{"custom:access":"Only Governance","custom:error":"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero","custom:event":"Emits TokenConfigAdded event on successfully setting of the token config","params":{"tokenConfig":"Token config struct"}},"setTokenConfigs((address,address,uint256)[])":{"custom:access":"Only Governance","custom:error":"Zero length error thrown, if length of the array in parameter is 0","params":{"tokenConfigs_":"config array"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"title":"ChainlinkOracle","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"},"PricePosted(address,uint256,uint256)":{"notice":"Emit when a price is manually set"},"TokenConfigAdded(address,address,uint256)":{"notice":"Emit when a token config is added"}},"kind":"user","methods":{"NATIVE_TOKEN_ADDR()":{"notice":"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain."},"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"constructor":{"notice":"Constructor for the implementation contract."},"getPrice(address)":{"notice":"Gets the price of a asset from the chainlink oracle"},"initialize(address)":{"notice":"Initializes the owner of the contract"},"prices(address)":{"notice":"Manually set an override price, useful under extenuating conditions such as price feed failure"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setDirectPrice(address,uint256)":{"notice":"Manually set the price of a given asset"},"setTokenConfig((address,address,uint256))":{"notice":"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive"},"setTokenConfigs((address,address,uint256)[])":{"notice":"Add multiple token configs at the same time"},"tokenConfigs(address)":{"notice":"Token config by assets"}},"notice":"This oracle fetches prices of assets from the Chainlink oracle.","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":6186,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"prices","offset":0,"slot":"201","type":"t_mapping(t_address,t_uint256)"},{"astId":6192,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"tokenConfigs","offset":0,"slot":"202","type":"t_mapping(t_address,t_struct(TokenConfig)6177_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_mapping(t_address,t_struct(TokenConfig)6177_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct ChainlinkOracle.TokenConfig)","numberOfBytes":"32","value":"t_struct(TokenConfig)6177_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(TokenConfig)6177_storage":{"encoding":"inplace","label":"struct ChainlinkOracle.TokenConfig","members":[{"astId":6170,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"asset","offset":0,"slot":"0","type":"t_address"},{"astId":6173,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"feed","offset":0,"slot":"1","type":"t_address"},{"astId":6176,"contract":"contracts/oracles/ChainlinkOracle.sol:ChainlinkOracle","label":"maxStalePeriod","offset":0,"slot":"2","type":"t_uint256"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"000100000000000200090000000000020000008003000039000000400030043f00000001002001900000001c0000c13d00000000020100190000006002200270000001d902200197000000040020008c000004e50000413d000000000301043b000000e003300270000001e10030009c000000450000a13d000001e20030009c000000810000213d000001e80030009c000000bb0000213d000001eb0030009c000001020000613d000001ec0030009c000004e50000c13d0000000001000416000000000001004b000004e50000c13d0000003301000039000001e80000013d0000000001000416000000000001004b000004e50000c13d000000000100041a0000ff0000100190000000390000c13d000000ff0210018f000000ff0020008c000000340000613d000000ff011001bf000000000010041b000000ff01000039000000800010043f0000000001000414000001d90010009c000001d901008041000000c001100210000001de011001c70000800d020000390000000103000039000001df04000041075e07540000040f0000000100200190000004e50000613d000000200100003900000100001004430000012000000443000001e0010000410000075f0001042e000001da01000041000000800010043f0000002001000039000000840010043f0000002701000039000000a40010043f000001db01000041000000c40010043f000001dc01000041000000e40010043f000001dd010000410000076000010430000001ed0030009c000000980000a13d000001ee0030009c000000c40000213d000001f10030009c0000010e0000613d000001f20030009c000004e50000c13d000000640020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d000000e002000039000000400020043f0000000402100370000000000302043b000001f60030009c000004e50000213d000000800030043f0000002402100370000000000202043b000001f60020009c000004e50000213d000001f600300198000000a00020043f0000004401100370000000000101043b000000c00010043f000002660000613d000000000002004b000002660000613d0000012001000039000000400010043f0000001b01000039000000e00010043f0000021d01000041000001000010043f000000e001000039075e06300000040f000000c00100043d000000000001004b000002e70000c13d000000400100043d00000044021000390000021f03000041000000000032043500000024021000390000001a030000390000000000320435000001da020000410000000000210435000000040210003900000020030000390000000000320435000001d90010009c000001d901008041000000400110021000000218011001c70000076000010430000001e30030009c000000e10000213d000001e60030009c000001270000613d000001e70030009c000004e50000c13d000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000101043b000001f60010009c000004e50000213d0000000000100435000000c901000039000000200010043f075e07470000040f000000000101041a000000800010043f000001fa010000410000075f0001042e000001f30030009c0000016b0000613d000001f40030009c000001870000613d000001f50030009c000004e50000c13d000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000101043b000001f60010009c000004e50000213d0000003302000039000000000202041a000001f6022001970000000003000411000000000032004b000001ed0000c13d000000000001004b000002700000c13d000001da01000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000020601000041000000c40010043f0000020501000041000000e40010043f000001dd010000410000076000010430000001e90030009c0000019f0000613d000001ea0030009c000004e50000c13d0000000001000416000000000001004b000004e50000c13d0000009701000039000001e80000013d000001ef0030009c000001a60000613d000001f00030009c000004e50000c13d0000000001000416000000000001004b000004e50000c13d0000003301000039000000000201041a000001f6052001970000000003000411000000000035004b000001ed0000c13d0000006503000039000000000403041a000001f704400197000000000043041b000001f702200197000000000021041b0000000001000414000001d90010009c000001d901008041000000c001100210000001f8011001c70000800d02000039000000030300003900000201040000410000000006000019000002800000013d000001e40030009c000001e40000613d000001e50030009c000004e50000c13d000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000601043b000001f60060009c000004e50000213d0000003301000039000000000101041a000001f6051001970000000001000411000000000015004b000001ed0000c13d0000006501000039000000000201041a000001f702200197000000000262019f000000000021041b0000000001000414000001d90010009c000001d901008041000000c001100210000001f8011001c70000800d020000390000000303000039000001f904000041000002800000013d0000000001000416000000000001004b000004e50000c13d0000006501000039000000000101041a000001f6021001970000000001000411000000000012004b000001f60000c13d075e072d0000040f00000000010000190000075f0001042e000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000101043b000001f60010009c000004e50000213d0000000000100435000000ca01000039000000200010043f075e07470000040f0000000202100039000000000202041a0000000103100039000000000303041a000000000101041a000001f601100197000000800010043f000001f601300197000000a00010043f000000c00020043f00000222010000410000075f0001042e000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000101043b000700000001001d000001f60010009c000004e50000213d0000000002000415000000090220008a0000000502200210000000000300041a0000ff0001300190000002020000c13d0000000002000415000000080220008a0000000502200210000000ff00300190000002020000c13d000002000130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000002260000613d000600000002001d0000006501000039000000000201041a000001f702200197000000000021041b0000000001000411000001f6061001970000003301000039000000000201041a000001f703200197000000000363019f000000000031041b0000000001000414000001f605200197000001d90010009c000001d901008041000000c001100210000001f8011001c70000800d0200003900000003030000390000020104000041075e07540000040f0000000100200190000004e50000613d000000000100041a0000ff0000100190000002260000613d000500000001001d000000400100043d0000000705000029000000000005004b0000038a0000c13d00000064021000390000020503000041000000000032043500000044021000390000020603000041000000000032043500000024021000390000002503000039000002dc0000013d000000240020008c000004e50000413d0000000003000416000000000003004b000004e50000c13d0000000403100370000000000303043b000002100030009c000004e50000213d0000002304300039000000000024004b000004e50000813d0000000404300039000000000441034f000000000604043b000002280060009c000001810000813d00000005046002100000003f0440003900000229044001970000022a0040009c000002850000a13d0000021b0100004100000000001004350000004101000039000000040010043f0000021c010000410000076000010430000000440020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000402100370000000000202043b000700000002001d000001f60020009c000004e50000213d0000002401100370000000000201043b000000070000006b000002300000c13d000001da01000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000022001000041000000c40010043f000002240100004100000760000104300000000001000416000000000001004b000004e50000c13d0000020901000041000000800010043f000001fa010000410000075f0001042e000000240020008c000004e50000413d0000000002000416000000000002004b000004e50000c13d0000000401100370000000000101043b000700000001001d000001f60010009c000004e50000213d0000000702000029000002090020009c0000025c0000c13d000600120000003d00000007010000290000000000100435000000c901000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000004e50000613d000000000101043b000000000301041a000000000003004b000005d90000c13d000000ca01000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000004e50000613d000000000101043b000000000101041a000001f6001001980000035d0000c13d000000400200043d000700000002001d000001da0100004100000000001204350000000401200039075e05f00000040f00000007020000290000000001210049000001d90010009c000001d9010080410000006001100210000001d90020009c000001d9020080410000004002200210000000000121019f00000760000104300000000001000416000000000001004b000004e50000c13d0000006501000039000000000101041a000001f601100197000000800010043f000001fa010000410000075f0001042e000001da01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000022301000041000000c40010043f00000224010000410000076000010430000001da01000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000020a01000041000000c40010043f0000020b01000041000000e40010043f000001dd010000410000076000010430000600000002001d000400000001001d000500000003001d000001fb010000410000000000100439000000000100041000000004001004430000000001000414000001d90010009c000001d901008041000000c001100210000001fc011001c70000800202000039075e07590000040f0000000100200190000005a30000613d000000000101043b000000000001004b000002d00000c13d0000000503000029000000ff0130018f000000010010008c0000000001000019000000010100603900000006020000290000000502200270000000000201001f000002d30000c13d000000040000006b0000013c0000613d0000022f01300197000000010200003900000001011001bf000000000010041b0000ff0000100190000001420000c13d000000400100043d00000064021000390000020703000041000000000032043500000044021000390000020803000041000000000032043500000024021000390000002b03000039000002dc0000013d000600000002001d000000c001000039000000400010043f0000001f01000039000000800010043f0000022601000041000000a00010043f0000008001000039075e06300000040f00000007010000290000000000100435000000c901000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000004e50000613d000000000101043b000000000201041a0000000604000029000000000041041b000000400100043d000000200310003900000000004304350000000000210435000001d90010009c000001d90100804100000040011002100000000002000414000001d90020009c000001d902008041000000c002200210000000000112019f00000202011001c70000800d02000039000000020300003900000227040000410000000705000029000002800000013d0000020c01000041000000800010043f0000000001000414000000040020008c0000029f0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002c50000013d000001da01000041000000e00010043f0000002001000039000000e40010043f0000001501000039000001040010043f0000022001000041000001240010043f000002210100004100000760000104300000009702000039000000000302041a000001f704300197000000000414019f000000000042041b000001f602300197000000800020043f000000a00010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000225011001c70000800d0200003900000001030000390000020304000041075e07540000040f0000000100200190000004e50000613d00000000010000190000075f0001042e0000008005400039000000400050043f000000800060043f000000240330003900000060046000c90000000004340019000000000024004b000004e50000213d000000000006004b000003380000c13d00000044015000390000022e020000410000000000210435000000240150003900000011020000390000000000210435000001da010000410000000000150435000000040150003900000020020000390000000000210435000001d90050009c000001d905008041000000400150021000000218011001c70000076000010430000001d90010009c000001d901008041000000c0011002100000020d011001c7075e07590000040f000000800900003900000000030100190000006003300270000001d903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002b30000613d000000000701034f000000007807043c0000000009890436000000a00090008c000002af0000c13d000000000005004b000002c20000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003170000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000004e50000413d000000800100043d000600000001001d000000ff0010008c000001b40000a13d000004e50000013d00000006010000290000000501100270000000000100001f000000400100043d0000006402100039000001fd0300004100000000003204350000004402100039000001fe03000041000000000032043500000024021000390000002e030000390000000000320435000001da020000410000000000210435000000040210003900000020030000390000000000320435000001d90010009c000001d9010080410000004001100210000001ff011001c70000076000010430000000800100043d000001f6011001970000000000100435000000ca01000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000004e50000613d000000800200043d000001f605200197000000000101043b000000000201041a000001f702200197000000000252019f000000000021041b000000a00200043d000001f6022001970000000103100039000000000403041a000001f704400197000000000424019f000000000043041b0000000201100039000000c00300043d000000000031041b000000400100043d000000200410003900000000003404350000000000210435000001d90010009c000001d90100804100000040011002100000000002000414000001d90020009c000001d902008041000000c002200210000000000112019f00000202011001c70000800d0200003900000002030000390000021e04000041000002800000013d000000400200043d0000001f0430018f0000000505300272000003230000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000031f0000c13d000000000004004b000003320000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001d90020009c000001d9020080410000004002200210000000000112019f0000076000010430000000a0050000390000000006320049000002130060009c000004e50000213d000000600060008c000004e50000413d000000400600043d0000020e0060009c000001810000213d0000006007600039000000400070043f000000000731034f000000000707043b000001f60070009c000004e50000213d00000000087604360000002007300039000000000971034f000000000909043b000001f60090009c000004e50000213d00000000009804350000002007700039000000000771034f000000000707043b0000004008600039000000000078043500000000056504360000006003300039000000000043004b000003390000413d000000800100043d000300000001001d000000000001004b000003b60000c13d000000400500043d0000028f0000013d00000007010000290000000000100435000000ca01000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000004e50000613d000000400200043d0000020e0020009c000001810000213d000000000101043b0000006003200039000000400030043f000000000301041a000001f60330019700000000033204360000000104100039000000000404041a000001f604400197000000000043043500000040022000390000000201100039000000000101041a000300000001001d00000000001204350000020c01000041000000400200043d000700000002001d0000000001120436000400000001001d0000000001000414000500000004001d000000040040008c000004a40000c13d0000000003000031000000200030008c00000020040000390000000004034019000004d10000013d0000009702000039000000000302041a000001f704300197000000000454019f000000000042041b00000020021000390000000000520435000001f6023001970000000000210435000001d90010009c000001d90100804100000040011002100000000002000414000001d90020009c000001d902008041000000c002200210000000000112019f00000202011001c70000800d0200003900000001030000390000020304000041075e07540000040f0000000100200190000004e50000613d000000060000006b000002830000c13d0000ff010100008a000000050110017f000000000010041b000000400100043d00000001030000390000000000310435000001d90010009c000001d90100804100000040011002100000000002000414000001d90020009c000001d902008041000000c002200210000000000112019f00000204011001c70000800d02000039000001df04000041000002800000013d000700000000001d000000800100043d0000000702000029000000000012004b000005070000813d0000000501200210000000a001100039000000000b01043300000000210b0434000001f600100198000001d40000613d0000000001020433000001f600100198000001d40000613d000500000002001d000000400c00043d0000022b00c0009c000001810000213d0000004001c00039000000400010043f0000002003c000390000021d0100004100000000001304350000001b0100003900000000001c04350000009701000039000000000201041a000000400d00043d0000002401d00039000000400400003900000000004104350000022c01000041000000000e1d04360000000401d000390000000004000411000000000041043500000000010c04330000004404d00039000000000014043500000230061001970000001f0510018f0000006404d00039000000000043004b000003f20000813d000000000006004b000003ee0000613d00000000085300190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003e80000c13d000000000005004b0000040c0000613d0000000007040019000004020000013d000000000006004b000003fe0000613d000000200760008a00000230077001970000000007740019000000200770003900000000080300190000000009040019000000008a0804340000000009a90436000000000079004b000003fa0000c13d000000000005004b0000040c0000613d000000000764001900000000036300190000000305500210000000000607043300000000065601cf000000000656022f00000000030304330000010005500089000000000353022f00000000035301cf000000000363019f0000000000370435000001f602200197000000000341001900000000000304350000000003000414000000040020008c00060000000b001d000004180000c13d0000000003000031000000200030008c000000200400003900000000040340190000044f0000013d00040000000c001d0000001f0110003900000230011001970000006401100039000001d90010009c000001d9010080410000006001100210000001d900d0009c000001d90400004100000000040d40190000004004400210000000000141019f000001d90030009c000001d903008041000000c003300210000000000131019f00020000000d001d00010000000e001d075e07590000040f0000000109000029000000020d00002900000000030100190000006003300270000001d903300197000000200030008c0000002004000039000000000403401900000005054002720000043b0000613d000000000601034f00000000070d0019000000006806043c0000000007870436000000000097004b000004370000c13d0000001f064001900000044a0000613d0000000505500210000000000751034f00000000055d00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000060b000029000000040c000029000005360000613d0000001f01400039000000600110018f0000000004d10019000000000014004b00000000010000190000000101004039000002100040009c000001810000213d0000000100100190000001810000c13d000000400040043f000000200030008c000004e50000413d00000000010d0433000000000001004b0000000002000019000000010200c039000000000021004b000004e50000c13d000000000001004b0000050d0000613d0000004001b00039000400000001001d0000000001010433000000000001004b000005260000613d00000000010b0433000001f6011001970000000000100435000000ca01000039000000200010043f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f00000006030000290000000100200190000004e50000613d0000000002030433000001f605200197000000000101043b000000000201041a000001f702200197000000000252019f000000000021041b00000005020000290000000002020433000001f6022001970000000103100039000000000403041a000001f704400197000000000424019f000000000043041b000000020110003900000004030000290000000003030433000000000031041b000000400100043d000000200410003900000000003404350000000000210435000001d90010009c000001d90100804100000040011002100000000002000414000001d90020009c000001d902008041000000c002200210000000000112019f00000202011001c70000800d0200003900000002030000390000021e04000041075e07540000040f0000000100200190000004e50000613d00000007020000290000000102200039000700000002001d000000030020006c000003b70000413d000002830000013d0000000702000029000001d90020009c000001d9020080410000004002200210000001d90010009c000001d901008041000000c001100210000000000121019f0000020f011001c70000000502000029075e07590000040f00000000030100190000006003300270000001d903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000004bf0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004bb0000c13d000000000005004b000004ce0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004e70000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000190000000101004039000400000002001d000002100020009c000001810000213d0000000100100190000001810000c13d0000000401000029000000400010043f000000200030008c000004e50000413d00000007010000290000000001010433000700000001001d000000ff0010008c000004f60000a13d00000000010000190000076000010430000000400200043d0000001f0430018f0000000505300272000004f30000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004ef0000c13d000000000004004b000003320000613d000003250000013d00000007010000290000001201100089000200000001001d000001000010008c000005dc0000813d000002110100004100000004020000290000000001120436000100000001001d00000000010004140000000502000029000000040020008c000005450000c13d000000a00030008c000000a0040000390000000004034019000005720000013d0000021b0100004100000000001004350000003201000039000000040010043f0000021c0100004100000760000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000022d010000410000000000140435000000040140003900000000020004110000000000210435000000640240003900000000010c0019000700000004001d075e05fa0000040f00000007020000290000000001210049000001d90010009c000001d901008041000001d90020009c000001d90200804100000060011002100000004002200210000000000121019f000007600001043000000044014000390000021f02000041000000000021043500000024014000390000001a020000390000000000210435000001da010000410000000000140435000000040140003900000020020000390000000000210435000001d90040009c000001d904008041000000400140021000000218011001c70000076000010430000000400200043d0000001f0430018f0000000505300272000005420000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000053e0000c13d000000000004004b000003250000c13d000003320000013d0000000402000029000001d90020009c000001d9020080410000004002200210000001d90010009c000001d901008041000000c001100210000000000121019f0000020f011001c70000000502000029075e07590000040f00000000030100190000006003300270000001d903300197000000a00030008c000000a00400003900000000040340190000001f0540018f00000005064002720000000506600210000005610000613d00000004090000290000000007690019000000000801034f000000008a08043c0000000009a90436000000000079004b0000055d0000c13d000000000005004b0000056f0000613d000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005a40000613d0000001f01400039000001e00110018f0000000401100029000002100010009c000001810000213d000000400010043f000000a00030008c000004e50000413d00000004020000290000000002020433000002120020009c000004e50000213d000000040200002900000080022000390000000002020433000002120020009c000004e50000213d00000001020000290000000002020433000500000002001d000002130020009c000005b30000213d000000050000006b000005b30000613d000000040100002900000060011000390000000001010433000400000001001d000002140100004100000000001004390000000001000414000001d90010009c000001d901008041000000c00110021000000215011001c70000800b02000039075e07590000040f0000000100200190000005a30000613d000000000101043b000000040110006c000005bd0000813d000000400100043d00000044021000390000021903000041000000000032043500000024021000390000001c03000039000000760000013d000000000001042f000000400200043d0000001f0430018f0000000505300272000005b00000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ac0000c13d000000000004004b000003320000613d000003250000013d00000044021000390000021a030000410000000000320435000001da02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000007b0000013d000000030010006c000005c60000a13d000000400100043d00000044021000390000021703000041000000000032043500000024021000390000001703000039000000760000013d0000000701000029000000120010008c000005cb0000c13d0000000101000039000005d50000013d0000000a0200003900000001010000390000000204000029000000010040019000000000032200a9000000010200603900000000011200a900000001044002720000000002030019000005ce0000c13d00000005031000b900000005023000fa000000000012004b000005dc0000c13d0000000601000029000000120010008c000005e20000a13d0000021b0100004100000000001004350000001101000039000000040010043f0000021c01000041000007600001043000000006010000290000001201100089000700000003001d075e07080000040f00000000020100190000000701000029075e071f0000040f000000400200043d0000000000120435000001d90020009c000001d902008041000000400120021000000216011001c70000075f0001042e000000400210003900000220030000410000000000320435000000200210003900000015030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0000000043010434000000000132043600000230063001970000001f0530018f000000000014004b000006100000813d000000000006004b0000060c0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000006060000c13d000000000005004b0000062a0000613d0000000007010019000006200000013d000000000006004b0000061c0000613d000000200760008a00000230077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000006180000c13d000000000005004b0000062a0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000230023001970000000001210019000000000001042d0003000000000002000000000c0100190000009701000039000000000201041a000000400e00043d0000002401e00039000000400300003900000000003104350000022c01000041000000000f1e04360000000401e00039000000000d0004110000000000d104350000004403e0003900000000510c04340000000000130435000001f60220019700000230071001970000001f0610018f0000006404e00039000000000045004b000006560000813d000000000007004b000006520000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c0000064c0000c13d000000000006004b000006700000613d0000000008040019000006660000013d000000000007004b000006620000613d000000200870008a0000023008800197000000000848001900000020088000390000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b0000065e0000c13d000000000006004b000006700000613d000000000874001900000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f0000000000580435000000000441001900000000000404350000000004000414000000040020008c0000067a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006b20000013d00030000000c001d0000001f0110003900000230011001970000006401100039000001d90010009c000001d9010080410000006001100210000001d900e0009c000001d90300004100000000030e40190000004003300210000000000131019f000001d90040009c000001d904008041000000c003400210000000000131019f00020000000e001d00010000000f001d075e07590000040f000000010a000029000000020e00002900000000030100190000006003300270000001d903300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000069e0000613d000000000701034f00000000080e0019000000007907043c00000000089804360000000000a8004b0000069a0000c13d000000000005004b000006ad0000613d0000000506600210000000000761034f00000000066e00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000000030c000029000000000d000411000006e80000613d0000001f01400039000000600110018f0000000004e10019000000000014004b00000000010000190000000101004039000002100040009c000006ca0000213d0000000100100190000006ca0000c13d000000400040043f0000001f0030008c000006c80000a13d00000000010e0433000000000001004b0000000002000019000000010200c039000000000021004b000006c80000c13d000000000001004b000006d00000613d000000000001042d000000000100001900000760000104300000021b0100004100000000001004350000004101000039000000040010043f0000021c0100004100000760000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000022d01000041000000000014043500000004014000390000000000d10435000000640240003900000000010c0019000300000004001d075e05fa0000040f00000003020000290000000001210049000001d90010009c000001d901008041000001d90020009c000001d90200804100000060011002100000004002200210000000000121019f0000076000010430000000400200043d0000001f0430018f00000005053002720000000505500210000006f40000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006f00000c13d000000000004004b000007020000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001d90020009c000001d9020080410000004002200210000000000112019f00000760000104300000004e0010008c000007190000813d000000000001004b000007170000613d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a9000000010110027200000000030400190000070e0000c13d0000000001020019000000000001042d0000000101000039000000000001042d0000021b0100004100000000001004350000001101000039000000040010043f0000021c010000410000076000010430000000000301001900000000013200a9000000000003004b000007260000613d00000000033100d9000000000023004b000007270000c13d000000000001042d0000021b0100004100000000001004350000001101000039000000040010043f0000021c0100004100000760000104300000006502000039000000000302041a000001f703300197000000000032041b000001f6061001970000003301000039000000000201041a000001f703200197000000000363019f000000000031041b0000000001000414000001f605200197000001d90010009c000001d901008041000000c001100210000001f8011001c70000800d0200003900000003030000390000020104000041075e07540000040f0000000100200190000007440000613d000000000001042d00000000010000190000076000010430000000000001042f0000000001000414000001d90010009c000001d901008041000000c00110021000000202011001c70000801002000039075e07590000040f0000000100200190000007520000613d000000000101043b000000000001042d0000000001000019000007600001043000000757002104210000000102000039000000000001042d0000000002000019000000000001042d0000075c002104230000000102000039000000000001042d0000000002000019000000000001042d0000075e000004320000075f0001042e000007600001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff08c379a000000000000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000002000000000000000000000000000000000000200000008000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249800000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000079ba509600000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000cfed246b00000000000000000000000000000000000000000000000000000000a9534f8900000000000000000000000000000000000000000000000000000000a9534f8a00000000000000000000000000000000000000000000000000000000b4a0bdf30000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000001b69dc5e0000000000000000000000000000000000000000000000000000000041976e080000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000001b69dc5f00000000000000000000000000000000000000000000000000000000392787d2000000000000000000000000000000000000000000000000000000000431710e0000000000000000000000000000000000000000000000000000000009a8acb0000000000000000000000000000000000000000000000000000000000e32cb86000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270000000000000000000000000000000000000000200000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0020000000000000000000000000000000000004000000000000000000000000066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa002000000000000000000000000000000000000200000000000000000000000006472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e65720000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f0000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffeaf968c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000636861696e6c696e6b20707269636520657870697265640000000000000000000000000000000000000000000000000000000064000000000000000000000000757064617465644174206578636565647320626c6f636b2074696d6500000000636861696e6c696e6b207072696365206d75737420626520706f7369746976654e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000736574546f6b656e436f6e66696728546f6b656e436f6e6669672900000000003cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f7374616c6520706572696f642063616e2774206265207a65726f00000000000063616e2774206265207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000064000000e0000000000000000000000000000000000000000000000000000000600000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000040000000800000000000000000736574446972656374507269636528616464726573732c75696e743235362900a0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee00000000000000000000000000000000000000000000000100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffffbf18c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000006c656e6774682063616e27742062652030000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"methodIdentifiers":{"NATIVE_TOKEN_ADDR()":"a9534f8a","acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","getPrice(address)":"41976e09","initialize(address)":"c4d66de8","owner()":"8da5cb5b","pendingOwner()":"e30c3978","prices(address)":"cfed246b","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","setDirectPrice(address,uint256)":"09a8acb0","setTokenConfig((address,address,uint256))":"392787d2","setTokenConfigs((address,address,uint256)[])":"0431710e","tokenConfigs(address)":"1b69dc5f","transferOwnership(address)":"f2fde38b"}},"hash":"010002319fdc7af2df2ebc4f49614c480e2458778bab999edabc86fdbaffc400","factoryDependencies":{}}},"contracts/oracles/ERC4626Oracle.sol":{"ERC4626Oracle":{"abi":[{"inputs":[{"internalType":"address","name":"correlatedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_CORRELATED_TOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correlatedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ONE_CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token for correlated token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"ERC4626Oracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 correlated token\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of ERC4626 tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/ERC4626Oracle.sol\":\"ERC4626Oracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x7f2096f62d52d5f4db07dce231fc37d7ce25f7aecf4245cc03da87002d3038ff\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c39fe117493680bbaf45d008c51eb9fc507f42b527032e47ee2aeb4229511146\",\"dweb:/ipfs/QmNn77V2DyvX1tQyShSCM7MSyNBYV1kyeU8MgyV55DCiFb\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/ERC4626Oracle.sol\":{\"keccak256\":\"0xecc831e1b4550077d57832eca98e1fd796153a9b1690141887079deff9bdd676\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://65995b9b2b57e945473d51010379c581233efdcafafd8a5471d78032fb959d02\",\"dweb:/ipfs/QmeNJ7yoXpgT7CJ7eicePfdtUQURvNddb8Rb5LNnQ4KPG9\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of underlying token for correlated token"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"ERC4626Oracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of underlying token for 1 correlated token"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of ERC4626 tokens","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/ERC4626Oracle.sol:ERC4626Oracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/ERC4626Oracle.sol:ERC4626Oracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/ERC4626Oracle.sol:ERC4626Oracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/ERC4626Oracle.sol:ERC4626Oracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/ERC4626Oracle.sol:ERC4626Oracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200110000000000020000000003010019000000600330027000000248033001970000000100200190000000280000c13d0000008004000039000000400040043f000000040030008c0000046a0000413d000000000201043b000000e002200270000002530020009c000000640000213d000002600020009c000000730000a13d000002610020009c000000950000a13d000002620020009c0000012f0000613d000002630020009c000001340000613d000002640020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000002090000c13d000000010110018f0000000000140435000002480040009c000002480400804100000040014002100000026c011001c70000091c0001042e0000012002000039000000400020043f0000000004000416000000000004004b0000046a0000c13d0000001f0430003900000249044001970000012004400039000000400040043f0000001f0430018f00000005053002720000003b0000613d00000005065002100000012006600039000000000701034f000000007807043c0000000002820436000000000062004b000000370000c13d000000000004004b0000004a0000613d0000000502500210000000000121034f00000003044002100000012002200039000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000001200030008c0000046a0000413d000001200200043d0000024a0020009c0000046a0000213d000001400100043d0000024a0010009c0000046a0000213d000001600400043d0000024a0040009c0000046a0000213d000002000300043d0000024a0030009c0000046a0000213d000001e00500043d000001c00600043d000001a00800043d000001800900043d0000024b0a90012a000002200700043d0000000000a0041b0000024c0090009c000001f40000213d000000000008004b000001f60000613d0000022a0000013d000002540020009c000000840000a13d000002550020009c000000bc0000a13d000002560020009c000001500000613d000002570020009c0000015b0000613d000002580020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d091b07910000040f000001540000013d000002670020009c000000cb0000213d0000026a0020009c000001620000613d0000026b0020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d0000000001000412000f00000001001d000e00200000003d0000800501000039000000440300003900000000040004150000000f0440008a000001bb0000013d0000025b0020009c0000011b0000213d0000025e0020009c000001670000613d0000025f0020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d0000000001000412000b00000001001d000a00000000001d0000800501000039000000440300003900000000040004150000000b0440008a000001bb0000013d000002650020009c000001b10000613d000002660020009c0000046a0000c13d000000240030008c0000046a0000413d0000000002000416000000000002004b0000046a0000c13d0000000401100370000000000101043b000500000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000028001000041000000a00010043f0000008001000039091b07fb0000040f0000000401000039000000000501041a0000000001000414000002480010009c0000024801008041000000c00110021000000270011001c70000800d02000039000000030300003900000281040000410000000506000029091b09110000040f00000001002001900000046a0000613d00000005010000290000000402000039000000000012041b00000000010000190000091c0001042e000002590020009c000001c20000613d0000025a0020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d0000000001000412000700000001001d000600400000003d000080050100003900000044030000390000000004000415000000070440008a000001bb0000013d000002680020009c000001c70000613d000002690020009c0000046a0000c13d000000240030008c0000046a0000413d0000000002000416000000000002004b0000046a0000c13d0000000401100370000000000101043b0000024a0010009c0000046a0000213d000500000001001d0000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000101043b000000050110014f000000400300043d0000024a00100198000002710000c13d00000274010000410000000001130436000400000001001d0000026e01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039000500000003001d091b09160000040f00000001002001900000060d0000613d000000000101043b0000000502000029000000040220003900000000001204350000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c000003230000c13d0000000003000031000000200030008c000000200400003900000000040340190000034f0000013d0000025c0020009c000001cf0000613d0000025d0020009c0000046a0000c13d0000000001000416000000000001004b0000046a0000c13d0000000001000412000900000001001d000800800000003d000080050100003900000044030000390000000004000415000000090440008a00000005044002100000026e02000041091b08f30000040f000000800010043f0000026d010000410000091c0001042e0000000001000416000000000001004b0000046a0000c13d0000000201000039000001cb0000013d000000440030008c0000046a0000413d0000000002000416000000000002004b0000046a0000c13d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000400000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000027c01000041000000a00010043f0000008001000039091b07fb0000040f00000004010000290000024b0610012a000000000500041a000000000060041b0000024c0010009c000002280000213d000000050000006b0000022a0000c13d000002320000013d0000000001000416000000000001004b0000046a0000c13d091b06fa0000040f000000400200043d0000000000120435000002480020009c000002480200804100000040012002100000026c011001c70000091c0001042e0000000001000416000000000001004b0000046a0000c13d000000000100041a000000800010043f0000026d010000410000091c0001042e0000000001000416000000000001004b0000046a0000c13d0000000101000039000001cb0000013d0000000001000416000000000001004b0000046a0000c13d0000000301000039000000000101041a000500000001001d000002720100004100000000001004390000000001000414000002480010009c0000024801008041000000c00110021000000273011001c70000800b02000039091b09160000040f00000001002001900000060d0000613d000000000301043b000000050130006c000002de0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008002000039000001f20000813d000300000003001d000000400300043d0000027401000041000500000003001d0000000001130436000400000001001d0000026e0100004100000000001004390000000001000412000000040010044300000024002004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000101043b0000000502000029000000040220003900000000001204350000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c000003970000c13d0000000003000031000000200030008c00000020040000390000000004034019000003c30000013d0000000001000416000000000001004b0000046a0000c13d0000000001000412000d00000001001d000c00600000003d0000800501000039000000440300003900000000040004150000000d0440008a00000005044002100000026e02000041091b08f30000040f0000024a01100197000000800010043f0000026d010000410000091c0001042e0000000001000416000000000001004b0000046a0000c13d0000000301000039000001cb0000013d0000000001000416000000000001004b0000046a0000c13d0000000401000039000000000101041a000000800010043f0000026d010000410000091c0001042e000000440030008c0000046a0000413d0000000002000416000000000002004b0000046a0000c13d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000400000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000026f01000041000000a00010043f0000008001000039091b07fb0000040f00000002010000390000000405000029000000000051041b00000003030000390000000506000029000000000063041b0000000001000414000002480010009c0000024801008041000000c00110021000000270011001c70000800d020000390000027104000041091b09110000040f00000001002001900000046a0000613d00000000010000190000091c0001042e000000000008004b0000022a0000613d0000000009000415000000110990008a0000000509900210000000000006004b000002000000613d0000000009000415000000100990008a0000000509900210000000000005004b0000024b0000c13d000000000008004b000000000a000019000000010a00c039000000050990027000000000090a001f0000024b0000613d000000400100043d00000252020000410000022c0000013d0000000301000039000000000101041a000500000001001d000002720100004100000000001004390000000001000414000002480010009c0000024801008041000000c00110021000000273011001c70000800b02000039091b09160000040f00000001002001900000060d0000613d000000000101043b000000050210006c000002de0000413d0000000201000039000000000101041a000000000001004b0000000003000019000002d20000c13d000002770230012a000000000012001a000002de0000413d000000000112001a000000400300043d000002f30000c13d00000000040300190000000001000019000000210000013d000000050000006b000002320000c13d000000400100043d0000027d020000410000000000210435000002480010009c000002480100804100000040011002100000024e011001c70000091d000104300000000101000039000000000701041a000000400100043d00000005020000290000000000210435000002480010009c000002480100804100000040011002100000000002000414000002480020009c0000024802008041000000c002200210000000000112019f0000027e011001c70000800d0200003900000004030000390000027f04000041091b09110000040f00000001002001900000046a0000613d00000005010000290000000102000039000000000012041b00000000010000190000091c0001042e000000400a00043d000000000002004b0000026a0000613d000000000001004b0000026a0000613d000000000004004b0000026a0000613d000000000003004b0000026a0000613d000000800020043f000000a00010043f000000c00040043f0000000101000039000000000081041b0000000201000039000000000061041b0000000301000039000000000051041b0000000401000039000000000071041b000000e00030043f0000024d0100004100000000041a04360000000001000414000000040020008c000002780000c13d0000000003000031000000200030008c00000020040000390000000004034019000002a70000013d000002510100004100000000001a04350000024800a0009c000002480a0080410000004001a002100000024e011001c70000091d0001043000000282010000410000000000130435000002480030009c000002480300804100000040013002100000024e011001c70000091d000104300000024800a0009c000002480300004100000000030a40190000004003300210000002480010009c0000024801008041000000c001100210000000000131019f0000024e011001c700050000000a001d000400000004001d091b09160000040f000000040b000029000000050a000029000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002950000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002910000c13d000000000005004b000002a40000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000002e40000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000024f0010009c0000056e0000213d00000001002001900000056e0000c13d000000400010043f000000200030008c0000046a0000413d00000000010a0433000000ff0010008c0000046a0000213d0000004d0010008c000002de0000213d091b08e30000040f000001000010043f000000800200043d000001400000044300000160002004430000002002000039000000a00300043d0000018000200443000001a0003004430000004003000039000000c00400043d000001c000300443000001e0004004430000006003000039000000e00400043d0000020000300443000002200040044300000080030000390000024000300443000002600010044300000100002004430000000501000039000001200010044300000250010000410000091c0001042e000000000300041a00000000041300a900000000051400d9000000000035004b000002de0000c13d000000000004004b00000000030000190000021f0000613d00000000032400a900000000044300d9000000000024004b0000021f0000613d000002840100004100000000001004350000001101000039000000040010043f00000276010000410000091d00010430000000400200043d0000001f0430018f00000005053002720000000505500210000002f00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002ec0000c13d000000000004004b0000041e0000c13d0000042a0000013d000300000001001d00000274010000410000000001130436000400000001001d0000026e01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039000500000003001d091b09160000040f00000001002001900000060d0000613d000000000101043b0000000502000029000000040220003900000000001204350000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c000004300000c13d0000000003000031000000200030008c000000200400003900000000040340190000045c0000013d0000000503000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000033d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000003390000c13d000000000005004b0000034c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004000000613d00000005020000290000001f01400039000000600110018f0000000002210019000000000012004b000000000100001900000001010040390000024f0020009c0000056e0000213d00000001001001900000056e0000c13d000400000002001d000000400020043f000000200030008c0000046a0000413d00000005010000290000000001010433000500000001001d0000000101000039000300000001001d000000000101041a000000000001004b0000046c0000c13d000002830100004100000004020000290000000001120436000200000001001d0000026e01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d00000004020000290000000402200039000000000101043b0000024a0110019700000000001204350000026e01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c0000053c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005680000013d0000000503000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000003b10000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000003ad0000c13d000000000005004b000003c00000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000040f0000613d00000005050000290000001f01400039000000600210018f0000000001520019000000000021004b000000000200001900000001020040390000024f0010009c0000056e0000213d00000001002001900000056e0000c13d000000400010043f000000200030008c0000046a0000413d0000000301000039000000000101041a000400000001001d00000005010000290000000001010433000500000001001d000002720100004100000000001004390000000001000414000002480010009c0000024801008041000000c00110021000000273011001c70000800b02000039091b09160000040f00000001002001900000060d0000613d000000000101043b000000040210006c0000000306000029000002de0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004d70000c13d000002770230012a000000000012001a000002de0000413d0000000001120019000000050010006b000000000301001900000005030040290000000401000039000000000101041a0000000002030019000000000031001a000002de0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004e40000c13d000000400100043d0000027b020000410000022c0000013d000000400200043d0000001f0430018f00000005053002720000040c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004080000c13d000000000004004b0000041d0000c13d0000042a0000013d000000400200043d0000001f0430018f00000005053002720000041b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004170000c13d000000000004004b0000042a0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002480020009c00000248020080410000004002200210000000000112019f0000091d000104300000000503000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000044a0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000004460000c13d000000000005004b000004590000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004c20000613d0000001f01400039000000600110018f0000000502100029000000000012004b0000000001000019000000010100403900000000040200190000024f0020009c0000056e0000213d00000001001001900000056e0000c13d000000400040043f000000200030008c000004d10000813d00000000010000190000091d000104300000000301000039000000000101041a000400000001001d000002720100004100000000001004390000000001000414000002480010009c0000024801008041000000c00110021000000273011001c70000800b02000039091b09160000040f00000001002001900000060d0000613d000000000101043b000000040210006c000002de0000413d0000000201000039000000000101041a000000000001004b0000000003000019000005740000c13d000002770230012a000000000012001a000002de0000413d000400000012001d000000400200043d0000028301000041000200000002001d0000000001120436000100000001001d0000026e01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f0000000406000029000000050060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000506006029000400000006001d00000001002001900000060d0000613d00000002020000290000000402200039000000000101043b0000024a0110019700000000001204350000026e01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c000005b30000c13d0000000003000031000000200030008c00000020040000390000000004034019000005df0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004ce0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004ca0000c13d000000000004004b0000042a0000613d0000041e0000013d00000005010000290000000001010433000000030010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000002de0000c13d000000000004004b0000000003000019000003eb0000613d00000000032400a900000000044300d9000000000024004b000002de0000c13d000003eb0000013d0000026e01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000101043b000002780200004100000000002004390000024a01100197000500000001001d00000004001004430000000001000414000002480010009c0000024801008041000000c00110021000000279011001c70000800202000039091b09160000040f00000001002001900000060d0000613d000000000101043b000000000001004b0000046a0000613d000000400200043d0000027a01000041000400000002001d00000000001204350000026e01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d00000004020000290000000402200039000000000101043b0000024a01100197000000000012043500000000010004140000000502000029000000040020008c000005310000613d0000000402000029000002480020009c00000248020080410000004002200210000002480010009c0000024801008041000000c001100210000000000121019f00000276011001c70000000502000029091b09110000040f00000000030100190000006003300270000002480030019d00000001002001900000066b0000613d00000004010000290000024f0010009c0000056e0000213d0000000401000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001e90000013d0000000403000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000005560000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000005520000c13d000000000005004b000005650000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005a40000613d0000001f01400039000000600110018f0000000401100029000200000001001d0000024f0010009c000005810000a13d000002840100004100000000001004350000004101000039000000040010043f00000276010000410000091d00010430000000000300041a00000000041300a900000000051400d9000000000035004b000002de0000c13d000000000004004b0000000003000019000004820000613d00000000032400a900000000044300d9000000000024004b000002de0000c13d000004820000013d0000000201000029000000400010043f000000200030008c0000046a0000413d00000004010000290000000001010433000100000001001d0000024d0100004100000002020000290000000001120436000400000001001d0000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c0000060e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000063a0000013d000000400200043d0000001f0430018f0000000505300272000005b00000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ac0000c13d000000000004004b0000042a0000613d0000041d0000013d0000000203000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000005cd0000613d000000000701034f0000000208000029000000007907043c00000000089804360000000000a8004b000005c90000c13d000000000005004b000005dc0000613d0000000506600210000000000761034f00000002066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000064d0000613d0000001f01400039000000600110018f0000000202100029000000000012004b00000000010000190000000101004039000500000002001d0000024f0020009c0000056e0000213d00000001001001900000056e0000c13d0000000501000029000000400010043f000000200030008c0000046a0000413d00000002010000290000000001010433000100000001001d0000024d0100004100000005020000290000000001120436000200000001001d0000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f00000001002001900000060d0000613d000000000201043b00000000010004140000024a02200197000000040020008c0000067b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006a70000013d000000000001042f0000000203000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f0000024e011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000006280000613d000000000701034f0000000208000029000000007907043c00000000089804360000000000a8004b000006240000c13d000000000005004b000006370000613d0000000506600210000000000761034f00000002066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000065c0000613d0000001f01400039000000600110018f00000002011000290000024f0010009c0000056e0000213d000000400010043f000000200030008c0000046a0000413d00000002020000290000000003020433000000ff0030008c0000046a0000213d000000010200002900000005022000b9000000050000006b000006ba0000c13d0000004d0030008c000002de0000213d000006bf0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006590000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006550000c13d000000000004004b0000042a0000613d0000041e0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006680000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006640000c13d000000000004004b0000042a0000613d0000041e0000013d0000024803300197000000400200043d0000001f0430018f0000000505300272000006780000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006740000c13d000000000004004b0000042a0000613d0000041d0000013d0000000503000029000002480030009c00000248030080410000004003300210000002480010009c0000024801008041000000c001100210000000000131019f0000024e011001c7091b09160000040f000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000006950000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000006910000c13d000000000005004b000006a40000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006d30000613d0000001f01400039000000600110018f00000005011000290000024f0010009c0000056e0000213d000000400010043f000000200030008c0000046a0000413d00000005020000290000000003020433000000ff0030008c0000046a0000213d000000010200002900000004022000b9000000040000006b000006e20000c13d0000004d0030008c000002de0000213d000006e70000013d0000004d0030008c000002de0000213d00000005042000fa000000010040006c000002de0000c13d000000000003004b000006e90000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006c30000c13d000300000006001d000000000006004b000006e90000c13d000002840100004100000000001004350000001201000039000000040010043f00000276010000410000091d00010430000000400200043d0000001f0430018f0000000505300272000006df0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006db0000c13d000000000004004b0000042a0000613d0000041d0000013d0000004d0030008c000002de0000213d00000004042000fa000000010040006c000002de0000c13d000000000003004b000006f00000c13d00000003022000fa0000000000210435000002480010009c000002480100804100000040011002100000026c011001c70000091c0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006f20000c13d000006ca0000013d0002000000000002000000400200043d0000027401000041000200000002001d0000000001120436000100000001001d0000026e01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f0000000100200190000007680000613d000000000101043b0000000202000029000000040220003900000000001204350000026e0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f0000000100200190000007680000613d000000020a000029000000000201043b00000000010004140000024a02200197000000040020008c0000072c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000007590000013d0000024800a0009c000002480300004100000000030a40190000004003300210000002480010009c0000024801008041000000c001100210000000000131019f00000276011001c7091b09160000040f000000020a000029000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000007470000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007430000c13d000000000005004b000007560000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000007710000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000024f0010009c000007690000213d0000000100200190000007690000c13d000000400010043f0000001f0030008c0000076f0000a13d00000000010a0433000000000001042d000000000001042f000002840100004100000000001004350000004101000039000000040010043f00000276010000410000091d0001043000000000010000190000091d00010430000000400200043d0000001f0430018f000000050530027200000005055002100000077d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007790000c13d000000000004004b0000078b0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002480020009c00000248020080410000004002200210000000000112019f0000091d0001043000010000000000020000000301000039000000000101041a000100000001001d000002720100004100000000001004390000000001000414000002480010009c0000024801008041000000c00110021000000273011001c70000800b02000039091b09160000040f0000000100200190000007c40000613d000000000101043b000000010210006c000007be0000413d0000000201000039000000000101041a000000000001004b000007b30000613d000000000300041a00000000041300a900000000051400d9000000000035004b000007be0000c13d000000000004004b000007b90000613d00000000032400a900000000044300d9000000000024004b000007b40000613d000007be0000013d0000000003000019000002770230012a000000000012001a000007be0000413d0000000001120019000000000001042d0000000003000019000002770230012a000000000012001a000007be0000413d000007b70000013d000002840100004100000000001004350000001101000039000000040010043f00000276010000410000091d00010430000000000001042f0000000043010434000000000132043600000285063001970000001f0530018f000000000014004b000007db0000813d000000000006004b000007d70000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000007d10000c13d000000000005004b000007f50000613d0000000007010019000007eb0000013d000000000006004b000007e70000613d000000200760008a00000285077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007e30000c13d000000000005004b000007f50000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000285023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002860200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000028504a001970000001f03a0018f0000006401500039000000000012004b0000081f0000813d000000000004004b0000081b0000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000008150000c13d000000000003004b000008390000613d00000000050100190000082f0000013d000000000004004b0000082b0000613d000000200540008a0000028505500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000008270000c13d000000000003004b000008390000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000026e01000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002480010009c0000024801008041000000c00110021000000275011001c70000800502000039091b09160000040f0000000100200190000008a30000613d000000000201043b00000000010004140000024a02200197000000040020008c000000040a000029000008570000c13d0000000003000031000000200030008c000000200400003900000000040340190000088b0000013d00000002030000290000001f0330003900000285033001970000024800a0009c000002480400004100000000040a401900000040044002100000006403300039000002480030009c00000248030080410000006003300210000000000343019f000002480010009c0000024801008041000000c001100210000000000131019f091b09160000040f000000040a000029000000000301001900000060033002700000024803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000008790000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000008750000c13d000000000005004b000008880000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008c30000613d0000001f01400039000000600110018f0000000004a10019000000000014004b000000000100001900000001010040390000024f0040009c000008a40000213d0000000100100190000008a40000c13d000000400040043f0000001f0030008c000008a10000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000008a10000c13d000000000001004b000008aa0000613d000000000001042d00000000010000190000091d00010430000000000001042f000002840100004100000000001004350000004101000039000000040010043f00000276010000410000091d000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000028701000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d091b07c50000040f00000004020000290000000001210049000002480010009c0000024801008041000002480020009c000002480200804100000060011002100000004002200210000000000121019f0000091d00010430000000400200043d0000001f0430018f00000005053002720000000505500210000008cf0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008cb0000c13d000000000004004b000008dd0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002480020009c00000248020080410000004002200210000000000112019f0000091d000104300000000002010019000000000002004b000008f00000613d0000000a030000390000000101000039000000010020019000000000043300a9000000010300603900000000011300a900000001022002720000000003040019000008e80000c13d000000000001042d0000000101000039000000000001042d000000000001042f00000000050100190000000000200439000000050030008c000009010000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008f90000413d000002480030009c000002480300804100000060013002100000000002000414000002480020009c0000024802008041000000c002200210000000000112019f00000288011001c70000000002050019091b09160000040f0000000100200190000009100000613d000000000101043b000000000001042d000000000001042f00000914002104210000000102000039000000000001042d0000000002000019000000000001042d00000919002104230000000102000039000000000001042d0000000002000019000000000001042d0000091b000004320000091c0001042e0000091d000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f313ce567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000002000000000000000000000000000001800000010000000000000000008579befe00000000000000000000000000000000000000000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069240425000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a00000000000000000000000000000000000000000000000000000000086f23a7500000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000007a2d13a00000000000000000000000000000000000000000000000000000000020000020000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","ONE_CORRELATED_TOKEN()":"86f23a75","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010002897adfc0a376ff17dfb818b54a550fc5e4157840a9b478fd9f196b70d9","factoryDependencies":{}}},"contracts/oracles/EtherfiAccountantOracle.sol":{"EtherfiAccountantOracle":{"abi":[{"inputs":[{"internalType":"address","name":"accountant","type":"address"},{"internalType":"address","name":"correlatedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ACCOUNTANT","outputs":[{"internalType":"contract IAccountant","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"correlatedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ACCOUNTANT\",\"outputs\":[{\"internalType\":\"contract IAccountant\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of WBTC\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"EtherfiAccountantOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"ACCOUNTANT()\":{\"notice\":\"Address of Accountant\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the conversion rate from the ACCOUNTANT contract\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of any Ether.fi asset that uses Accountant contracts to derive the underlying price\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/EtherfiAccountantOracle.sol\":\"EtherfiAccountantOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/IAccountant.sol\":{\"keccak256\":\"0x04672ffcad2a2f951d7afc7288a5875dc6e67d12445666c959ac64966102b06b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f034d1afbbe39db076d65058d9ab9d4b914f1c87908e72c2ab73aae86fe0d222\",\"dweb:/ipfs/QmXV1D3Ahzs6cCE8KWvqzGNnBsUt4q3bcTo8DyWzi4LWDS\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/EtherfiAccountantOracle.sol\":{\"keccak256\":\"0xf28853cd689d11667714f25d17956b1d00bd23b5bccab40ec90a96697906241d\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6d55ee8051441fff54d6883591e7018b2002e30d3964dcedd56af77356a1f3c5\",\"dweb:/ipfs/QmfFcsZc6SfszEF8oQaMG5dRtRe7DJaxeiCVXhnEzXJGNV\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount Amount of WBTC"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"EtherfiAccountantOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"ACCOUNTANT()":{"notice":"Address of Accountant"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the conversion rate from the ACCOUNTANT contract"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of any Ether.fi asset that uses Accountant contracts to derive the underlying price","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/EtherfiAccountantOracle.sol:EtherfiAccountantOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/EtherfiAccountantOracle.sol:EtherfiAccountantOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/EtherfiAccountantOracle.sol:EtherfiAccountantOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/EtherfiAccountantOracle.sol:EtherfiAccountantOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/EtherfiAccountantOracle.sol:EtherfiAccountantOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200150000000000020000000003010019000000600330027000000220033001970000000100200190000000280000c13d0000008004000039000000400040043f000000040030008c000003df0000413d000000000201043b000000e002200270000002280020009c000000660000213d000002350020009c000000750000a13d000002360020009c000000970000a13d000002370020009c0000011b0000613d000002380020009c000001200000613d000002390020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001ce0000c13d000000010110018f0000000000140435000002200040009c0000022004008041000000400140021000000241011001c70000087b0001042e0000000002000416000000000002004b000003df0000c13d0000001f0230003900000221022001970000012002200039000000400020043f0000001f0230018f00000005043002720000003a0000613d000001200500003900000005064002100000012006600039000000000701034f000000007807043c0000000005850436000000000065004b000000360000c13d000000000002004b000000490000613d0000000504400210000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001400030008c000003df0000413d000001200300043d000002220030009c000003df0000213d000001400100043d000002220010009c000003df0000213d000001600500043d000002220050009c000003df0000213d000001800700043d000002220070009c000003df0000213d000002200600043d000002220060009c000003df0000213d000002000800043d000001e00900043d000001c00b00043d000001a00400043d000002230240012a000002400a00043d000000000020041b000002240040009c000002000000213d00000000000b004b000002020000c13d0000020a0000013d000002290020009c000000860000a13d0000022a0020009c000000be0000a13d0000022b0020009c0000013c0000613d0000022c0020009c000001470000613d0000022d0020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d087a06ff0000040f000001400000013d0000023c0020009c000000cd0000213d0000023f0020009c0000014e0000613d000002400020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412001300000001001d001200200000003d000080050100003900000044030000390000000004000415000000130440008a000001950000013d000002300020009c0000010c0000213d000002330020009c000001530000613d000002340020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000f00000001001d000e00000000001d0000800501000039000000440300003900000000040004150000000f0440008a000001950000013d0000023a0020009c0000018b0000613d0000023b0020009c000003df0000c13d000000240030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000000401100370000000000101043b000900000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025601000041000000a00010043f0000008001000039087a07690000040f0000000401000039000000000501041a0000000001000414000002200010009c0000022001008041000000c00110021000000245011001c70000800d02000039000000030300003900000257040000410000000906000029087a08700000040f0000000100200190000003df0000613d00000009010000290000000402000039000000000012041b00000000010000190000087b0001042e0000022e0020009c0000019c0000613d0000022f0020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000b00000001001d000a00400000003d0000800501000039000000440300003900000000040004150000000b0440008a000001950000013d0000023d0020009c000001a10000613d0000023e0020009c000003df0000c13d000000240030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000000401100370000000000101043b000002220010009c000003df0000213d000900000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000101043b000000090110014f000000400200043d00000222001001980000025c0000c13d0000024901000041000900000002001d0000000001120436000800000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c0000029b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000090a000029000002c80000013d000002310020009c000001a90000613d000002320020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000d00000001001d000c00800000003d0000800501000039000000440300003900000000040004150000000d0440008a000001950000013d0000000001000416000000000001004b000003df0000c13d0000000201000039000001a50000013d000000440030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025201000041000000a00010043f0000008001000039087a07690000040f0000000801000029000002230610012a000000000500041a000000000060041b000002240010009c000001e50000213d000000090000006b000001e70000613d000002020000013d0000000001000416000000000001004b000003df0000c13d087a067a0000040f000000400200043d0000000000120435000002200020009c0000022002008041000000400120021000000241011001c70000087b0001042e0000000001000416000000000001004b000003df0000c13d000000000100041a000000800010043f00000242010000410000087b0001042e0000000001000416000000000001004b000003df0000c13d0000000101000039000001a50000013d0000000001000416000000000001004b000003df0000c13d0000000301000039000000000101041a000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000301043b000000090130006c000001df0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008002000039000001cc0000813d000700000003001d000000400300043d0000024901000041000900000003001d0000000001130436000800000001001d000002430100004100000000001004390000000001000412000000040010044300000024002004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c0000030e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000033a0000013d0000000001000416000000000001004b000003df0000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a00000005044002100000024302000041087a08520000040f0000022201100197000000800010043f00000242010000410000087b0001042e0000000001000416000000000001004b000003df0000c13d0000000301000039000001a50000013d0000000001000416000000000001004b000003df0000c13d0000000401000039000000000101041a000000800010043f00000242010000410000087b0001042e000000440030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024401000041000000a00010043f0000008001000039087a07690000040f00000002010000390000000805000029000000000051041b00000003030000390000000906000029000000000063041b0000000001000414000002200010009c0000022001008041000000c00110021000000245011001c70000800d020000390000024604000041087a08700000040f0000000100200190000003df0000613d00000000010000190000087b0001042e0000000301000039000000000101041a000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000090210006c000002630000813d0000025b0100004100000000001004350000001101000039000000040010043f00000250010000410000087c00010430000000090000006b000002020000613d0000000101000039000000000701041a000000400100043d00000009020000290000000000210435000002200010009c000002200100804100000040011002100000000002000414000002200020009c0000022002008041000000c002200210000000000112019f00000254011001c70000800d0200003900000004030000390000025504000041087a08700000040f0000000100200190000003df0000613d00000009010000290000000102000039000000000012041b00000000010000190000087b0001042e00000000000b004b0000020a0000c13d000000400100043d00000253020000410000000000210435000002200010009c0000022001008041000000400110021000000227011001c70000087c000104300000000004000415000000150440008a0000000504400210000000000009004b000002140000613d0000000004000415000000140440008a0000000504400210000000000008004b0000021d0000c13d00000000000b004b0000000002000019000000010200c0390000000504400270000000000402001f0000021d0000613d000000400100043d0000022602000041000002040000013d000900000003001d000100000001001d000600000005001d000800000006001d000700000007001d000400000008001d000300000009001d00050000000a001d00020000000b001d087a066f0000040f0000000601000029087a066f0000040f0000000701000029087a066f0000040f0000000801000029087a066f0000040f0000000101000029000000800010043f0000000601000029000000a00010043f0000000701000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000801000029000000e00010043f0000000901000029087a066f0000040f0000000904000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d0000020000200443000002200030044300000080020000390000024000200443000002600040044300000100001004430000000501000039000001200010044300000225010000410000087b0001042e00000258010000410000000000120435000002200020009c0000022002008041000000400120021000000227011001c70000087c000104300000000201000039000000000101041a000000000001004b0000000003000019000002700000c13d0000024c0230012a000000000012001a000001df0000413d000000000112001a000000400400043d0000027d0000c13d0000000001000019000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000002680000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000002680000013d000700000001001d0000024901000041000900000004001d0000000001140436000800000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000003a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000003d20000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000090a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080b000029000002b60000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002b20000c13d000000000005004b000002c50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003760000613d0000001f01400039000000600110018f0000000002a10019000000000012004b000000000100001900000001010040390000024b0020009c000004e40000213d0000000100100190000004e40000c13d000000400020043f000000200030008c000003df0000413d000800000002001d00000000010a0433000900000001001d0000000101000039000700000001001d000000000101041a000000000001004b000003e10000c13d000002590100004100000008020000290000000001120436000600000001001d0000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d00000008020000290000000402200039000000000101043b000002220110019700000000001204350000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000004b10000c13d0000000003000031000000200030008c00000020040000390000000004034019000004dd0000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003280000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003240000c13d000000000005004b000003370000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003850000613d0000001f01400039000000600210018f0000000901200029000000000021004b000000000200001900000001020040390000024b0010009c000004e40000213d0000000100200190000004e40000c13d000000400010043f000000200030008c000003df0000413d0000000301000039000000000101041a000800000001001d00000009010000290000000001010433000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000080210006c0000000706000029000001df0000413d0000000201000039000000000101041a000000000001004b00000000030000190000044c0000c13d0000024c0230012a000000000012001a000001df0000413d0000000001120019000000090010006b000000000301001900000009030040290000000401000039000000000101041a0000000002030019000000000031001a000001df0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004590000c13d000000400100043d0000025102000041000002040000013d000000400200043d0000001f0430018f0000000505300272000003820000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000037e0000c13d000000000004004b000003930000c13d000003a00000013d000000400200043d0000001f0430018f0000000505300272000003910000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000038d0000c13d000000000004004b000003a00000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c000104300000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003c00000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003bc0000c13d000000000005004b000003cf0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004370000613d0000001f01400039000000600110018f0000000904100029000000000014004b000000000100001900000001010040390000024b0040009c000004e40000213d0000000100100190000004e40000c13d000000400040043f000000200030008c000004460000813d00000000010000190000087c000104300000000301000039000000000101041a000800000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000080210006c000001df0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004ea0000c13d0000024c0230012a000000000012001a000001df0000413d000800000012001d000000400200043d0000025901000041000600000002001d0000000001120436000500000001001d0000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000806000029000000090060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000906006029000800000006001d0000000100200190000005820000613d00000006020000290000000402200039000000000101043b000002220110019700000000001204350000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005280000c13d0000000003000031000000200030008c00000020040000390000000004034019000005540000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004430000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000043f0000c13d000000000004004b000003a00000613d000003940000013d00000009010000290000000001010433000000070010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000003610000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000003610000013d0000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000101043b0000024d0200004100000000002004390000022201100197000900000001001d00000004001004430000000001000414000002200010009c0000022001008041000000c0011002100000024e011001c70000800202000039087a08750000040f0000000100200190000005820000613d000000000101043b000000000001004b000003df0000613d000000400200043d0000024f01000041000800000002001d00000000001204350000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d00000008020000290000000402200039000000000101043b0000022201100197000000000012043500000000010004140000000902000029000000040020008c000004a60000613d0000000802000029000002200020009c00000220020080410000004002200210000002200010009c0000022001008041000000c001100210000000000121019f00000250011001c70000000902000029087a08700000040f00000000030100190000006003300270000002200030019d0000000100200190000005e00000613d00000008010000290000024b0010009c000004e40000213d0000000801000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001c30000013d0000000803000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000250011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000004cb0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004c70000c13d000000000005004b000004da0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005190000613d0000001f01400039000000600110018f00000008020000290000000001210019000600000001001d0000024b0010009c000004f70000a13d0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000003f70000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000003f70000013d0000000601000029000000400010043f000000200030008c000003df0000413d0000000001020433000500000001001d0000025a0100004100000006020000290000000001120436000800000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005830000c13d0000000003000031000000200030008c00000020040000390000000004034019000005af0000013d000000400200043d0000001f0430018f0000000505300272000005250000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005210000c13d000000000004004b000003a00000613d000003930000013d0000000603000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000250011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005420000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b0000053e0000c13d000000000005004b000005510000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005c20000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000900000002001d0000024b0020009c000004e40000213d0000000100100190000004e40000c13d0000000901000029000000400010043f000000200030008c000003df0000413d00000006010000290000000001010433000500000001001d0000025a0100004100000009020000290000000001120436000600000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005f00000c13d0000000003000031000000200030008c000000200400003900000000040340190000061c0000013d000000000001042f0000000603000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a0000290000059d0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005990000c13d000000000005004b000005ac0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005d10000613d0000001f01400039000000600110018f00000006011000290000024b0010009c000004e40000213d000000400010043f000000200030008c000003df0000413d00000006020000290000000003020433000000ff0030008c000003df0000213d000000050200002900000009022000b9000000090000006b0000062f0000c13d0000004d0030008c000001df0000213d000006340000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ce0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ca0000c13d000000000004004b000003a00000613d000003940000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005dd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d90000c13d000000000004004b000003a00000613d000003940000013d0000022003300197000000400200043d0000001f0430018f0000000505300272000005ed0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e90000c13d000000000004004b000003a00000613d000003930000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a0000290000060a0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006060000c13d000000000005004b000006190000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006480000613d0000001f01400039000000600110018f00000009011000290000024b0010009c000004e40000213d000000400010043f000000200030008c000003df0000413d00000009020000290000000003020433000000ff0030008c000003df0000213d000000050200002900000008022000b9000000080000006b000006570000c13d0000004d0030008c000001df0000213d0000065c0000013d0000004d0030008c000001df0000213d00000009042000fa000000050040006c000001df0000c13d000000000003004b0000065e0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006380000c13d000700000006001d000000000006004b0000065e0000c13d0000025b0100004100000000001004350000001201000039000000040010043f00000250010000410000087c00010430000000400200043d0000001f0430018f0000000505300272000006540000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006500000c13d000000000004004b000003a00000613d000003930000013d0000004d0030008c000001df0000213d00000008042000fa000000050040006c000001df0000c13d000000000003004b000006650000c13d00000007022000fa0000000000210435000002200010009c0000022001008041000000400110021000000241011001c70000087b0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006670000c13d0000063f0000013d0000022200100198000006720000613d000000000001042d000000400100043d0000025c020000410000000000210435000002200010009c0000022001008041000000400110021000000227011001c70000087c000104300002000000000002000000400200043d0000024901000041000200000002001d0000000001120436000100000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000006d60000613d000000000201043b00000000010004140000022202200197000000040020008c0000069a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006c70000013d0000000203000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000020a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006b50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006b10000c13d000000000005004b000006c40000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006df0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000024b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f0000001f0030008c000006dd0000a13d00000000010a0433000000000001042d000000000001042f0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c0001043000000000010000190000087c00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006eb0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006e70000c13d000000000004004b000006f90000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c0001043000010000000000020000000301000039000000000101041a000100000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000007320000613d000000000101043b000000010210006c0000072c0000413d0000000201000039000000000101041a000000000001004b000007210000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000072c0000c13d000000000004004b000007270000613d00000000032400a900000000044300d9000000000024004b000007220000613d0000072c0000013d00000000030000190000024c0230012a000000000012001a0000072c0000413d0000000001120019000000000001042d00000000030000190000024c0230012a000000000012001a0000072c0000413d000007250000013d0000025b0100004100000000001004350000001101000039000000040010043f00000250010000410000087c00010430000000000001042f000000004301043400000000013204360000025d063001970000001f0530018f000000000014004b000007490000813d000000000006004b000007450000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000073f0000c13d000000000005004b000007630000613d0000000007010019000007590000013d000000000006004b000007550000613d000000200760008a0000025d077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007510000c13d000000000005004b000007630000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f033000390000025d023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d0000002403500039000000400200003900000000002304350000025e0200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025d04a001970000001f03a0018f0000006401500039000000000012004b0000078d0000813d000000000004004b000007890000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007830000c13d000000000003004b000007a70000613d00000000050100190000079d0000013d000000000004004b000007990000613d000000200540008a0000025d05500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007950000c13d000000000003004b000007a70000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024301000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000008110000613d000000000201043b00000000010004140000022202200197000000040020008c000000040a000029000007c50000c13d0000000003000031000000200030008c00000020040000390000000004034019000007f90000013d00000002030000290000001f033000390000025d033001970000022000a0009c000002200400004100000000040a401900000040044002100000006403300039000002200030009c00000220030080410000006003300210000000000343019f000002200010009c0000022001008041000000c001100210000000000131019f087a08750000040f000000040a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007e70000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007e30000c13d000000000005004b000007f60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008310000613d0000001f01400039000000600110018f0000000004a10019000000000014004b000000000100001900000001010040390000024b0040009c000008120000213d0000000100100190000008120000c13d000000400040043f0000001f0030008c0000080f0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000080f0000c13d000000000001004b000008180000613d000000000001042d00000000010000190000087c00010430000000000001042f0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025f01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d087a07330000040f00000004020000290000000001210049000002200010009c0000022001008041000002200020009c000002200200804100000060011002100000004002200210000000000121019f0000087c00010430000000400200043d0000001f0430018f000000050530027200000005055002100000083d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008390000c13d000000000004004b0000084b0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c00010430000000000001042f00000000050100190000000000200439000000050030008c000008600000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008580000413d000002200030009c000002200300804100000060013002100000000002000414000002200020009c0000022002008041000000c002200210000000000112019f00000260011001c70000000002050019087a08750000040f00000001002001900000086f0000613d000000000101043b000000000001042d000000000001042f00000873002104210000000102000039000000000001042d0000000002000019000000000001042d00000878002104230000000102000039000000000001042d0000000002000019000000000001042d0000087a000004320000087b0001042e0000087c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000180000001000000000000000000b8a5589b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000069240425000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000008b9d294000000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000282a8700000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","ACCOUNTANT()":"8b9d2940","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100026180b0bca9cc715633bbc6c6a4236eb0ac7941d55807320ff14b17d8d0","factoryDependencies":{}}},"contracts/oracles/OneJumpOracle.sol":{"OneJumpOracle":{"abi":[{"inputs":[{"internalType":"address","name":"correlatedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"address","name":"intermediateOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTERMEDIATE_ORACLE","outputs":[{"internalType":"contract OracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correlatedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"intermediateOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INTERMEDIATE_ORACLE\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"OneJumpOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"INTERMEDIATE_ORACLE()\":{\"notice\":\"Address of the intermediate oracle\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of an asset in through an intermediate asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/OneJumpOracle.sol\":\"OneJumpOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/OneJumpOracle.sol\":{\"keccak256\":\"0xa08f479bef67278c8b7a32cdf49691b76ed64c9f29c7dbd3435bd1a964f6b4ac\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://599a054287455a3cc67b46888b9b838039d8965bee30c2c9b888d36be181504a\",\"dweb:/ipfs/QmbuC6QP3avPhJ22LnTX8NW9wrTzckeKhsbEdk1pYybhbZ\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of the underlying token for 1 correlated token scaled by the underlying token decimals"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"OneJumpOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"INTERMEDIATE_ORACLE()":{"notice":"Address of the intermediate oracle"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of the underlying token for 1 correlated token, using the intermediate oracle"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of an asset in through an intermediate asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/OneJumpOracle.sol:OneJumpOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/OneJumpOracle.sol:OneJumpOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/OneJumpOracle.sol:OneJumpOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/OneJumpOracle.sol:OneJumpOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/OneJumpOracle.sol:OneJumpOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200150000000000020000000003010019000000600330027000000326033001970000000100200190000000280000c13d0000008006000039000000400060043f000000040030008c0000062b0000413d000000000201043b000000e0022002700000032e0020009c0000006a0000213d0000033b0020009c0000007f0000a13d0000033c0020009c000000e90000a13d0000033d0020009c000001a70000613d0000033e0020009c000001800000613d0000033f0020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001d20000c13d000000010110018f0000000000160435000003260060009c0000032606008041000000400160021000000349011001c700000c920001042e0000000002000416000000000002004b0000062b0000c13d0000001f0230003900000327022001970000012002200039000000400020043f0000001f0230018f00000005043002720000003a0000613d000001200500003900000005064002100000012006600039000000000701034f000000007807043c0000000005850436000000000065004b000000360000c13d000000000002004b000000490000613d0000000504400210000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001400030008c0000062b0000413d000001200100043d000003280010009c0000062b0000213d000001400200043d000900000002001d000003280020009c0000062b0000213d000001600200043d000800000002001d000003280020009c0000062b0000213d000001800200043d000700000002001d000003280020009c0000062b0000213d000002200200043d000600000002001d000003280020009c0000062b0000213d000002000400043d000001e00500043d000001c00700043d000001a00300043d000003290230012a000002400600043d000000000020041b0000032a0030009c000002040000213d000000000007004b000002060000c13d0000020e0000013d0000032f0020009c000000900000a13d000003300020009c000001100000a13d000003310020009c000001af0000613d000003320020009c0000019c0000613d000003330020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0000000001000412000b00000001001d000a00800000003d0000800501000039000000440300003900000000040004150000000b0440008a000001cb0000013d000003420020009c000000a10000213d000003450020009c000001190000613d000003460020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0000000001000412001300000001001d001200200000003d000080050100003900000044030000390000000004000415000000130440008a000001cb0000013d000003360020009c000000e00000213d000003390020009c0000011e0000613d0000033a0020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0000000001000412000f00000001001d000e00000000001d0000800501000039000000440300003900000000040004150000000f0440008a000001cb0000013d000003430020009c000001560000613d000003440020009c0000062b0000c13d000000240030008c0000062b0000413d0000000002000416000000000002004b0000062b0000c13d0000000401100370000000000101043b000900000001001d000003280010009c0000062b0000213d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000000090110014f000000400200043d00000328001001980000025c0000c13d0000034f01000041000900000002001d0000000001120436000800000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c0000029b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000090a000029000002c80000013d000003370020009c0000015b0000613d000003380020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0000000301000039000001ab0000013d000003400020009c000001b60000613d000003410020009c0000062b0000c13d000000240030008c0000062b0000413d0000000002000416000000000002004b0000062b0000c13d0000000401100370000000000101043b000900000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000035d01000041000000a00010043f00000080010000390c910b800000040f0000000401000039000000000501041a0000000001000414000003260010009c0000032601008041000000c0011002100000034b011001c70000800d0200003900000003030000390000035e0400004100000009060000290c910c870000040f00000001002001900000062b0000613d00000009010000290000000402000039000000000012041b000000000100001900000c920001042e000003340020009c000001c10000613d000003350020009c0000062b0000c13d0000000001000416000000000001004b0000062b0000c13d0c9109830000040f000001a00000013d0000000001000416000000000001004b0000062b0000c13d0000000101000039000001ab0000013d0000000001000416000000000001004b0000062b0000c13d0000000301000039000000000101041a000900000001001d0000034d0100004100000000001004390000000001000414000003260010009c0000032601008041000000c0011002100000034e011001c70000800b020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b000000090120006c000001e30000413d000900000002001d0000000102000039000000000202041a000000010220008a000000000012004b0000017e0000813d000000400200043d0000034f01000041000800000002001d0000000001120436000700000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000002f80000c13d0000000003000031000000200030008c00000020040000390000000004034019000003240000013d0000000001000416000000000001004b0000062b0000c13d0000000401000039000001ab0000013d000000440030008c0000062b0000413d0000000002000416000000000002004b0000062b0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000034a01000041000000a00010043f00000080010000390c910b800000040f00000002010000390000000805000029000000000051041b00000003030000390000000906000029000000000063041b0000000001000414000003260010009c0000032601008041000000c0011002100000034b011001c70000800d020000390000034c040000410c910c870000040f00000001002001900000062b0000613d000000000100001900000c920001042e000000440030008c0000062b0000413d0000000002000416000000000002004b0000062b0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000035901000041000000a00010043f00000080010000390c910b800000040f0000000801000029000003290610012a000000000500041a000000000060041b0000032a0010009c000001e90000213d000000090000006b000001eb0000613d000002060000013d0000000001000416000000000001004b0000062b0000c13d0c910b160000040f000000400200043d0000000000120435000003260020009c0000032602008041000000400120021000000349011001c700000c920001042e0000000001000416000000000001004b0000062b0000c13d0000000201000039000000000101041a000000800010043f000003480100004100000c920001042e0000000001000416000000000001004b0000062b0000c13d000000000100041a000000800010043f000003480100004100000c920001042e0000000001000416000000000001004b0000062b0000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a000001cb0000013d0000000001000416000000000001004b0000062b0000c13d0000000001000412000d00000001001d000c00400000003d0000800501000039000000440300003900000000040004150000000d0440008a000000050440021000000347020000410c910c690000040f0000032801100197000000800010043f000003480100004100000c920001042e0000000301000039000000000101041a000900000001001d0000034d0100004100000000001004390000000001000414000003260010009c0000032601008041000000c0011002100000034e011001c70000800b020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000000090210006c000002630000813d000003600100004100000000001004350000001101000039000000040010043f000003530100004100000c9300010430000000090000006b000002060000613d0000000101000039000000000701041a000000400100043d00000009020000290000000000210435000003260010009c000003260100804100000040011002100000000002000414000003260020009c0000032602008041000000c002200210000000000112019f0000035b011001c70000800d0200003900000004030000390000035c040000410c910c870000040f00000001002001900000062b0000613d00000009010000290000000102000039000000000012041b000000000100001900000c920001042e000000000007004b0000020e0000c13d000000400100043d0000035a020000410000000000210435000003260010009c000003260100804100000040011002100000032d011001c700000c93000104300000000003000415000000150330008a0000000503300210000000000005004b000002180000613d0000000003000415000000140330008a0000000503300210000000000004004b000002210000c13d000000000007004b0000000002000019000000010200c0390000000503300270000000000302001f000002210000613d000000400100043d0000032c02000041000002080000013d000100000001001d000400000004001d000300000005001d000500000006001d000200000007001d0c9109780000040f00000009010000290c9109780000040f00000008010000290c9109780000040f00000006010000290c9109780000040f0000000101000029000000800010043f0000000901000029000000a00010043f0000000801000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000601000029000000e00010043f00000007010000290c9109780000040f0000000704000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000032b0100004100000c920001042e0000035f010000410000000000120435000003260020009c000003260200804100000040012002100000032d011001c700000c93000104300000000201000039000000000101041a000000000001004b0000000003000019000002700000c13d000003540230012a000000000012001a000001e30000413d000000000112001a000000400600043d0000027d0000c13d0000000001000019000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001e30000c13d000000000004004b0000000003000019000002680000613d00000000032400a900000000044300d9000000000024004b000001e30000c13d000002680000013d000700000001001d0000034f01000041000900000006001d0000000001160436000800000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000003720000c13d0000000003000031000000200030008c000000200400003900000000040340190000039e0000013d0000000903000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000090a000029000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080b000029000002b60000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002b20000c13d000000000005004b000002c50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003540000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003510010009c000006210000213d0000000100200190000006210000c13d000000400010043f000000200030008c0000062b0000413d00000009010000290000000001010433000900000001001d000000ff0010008c0000062b0000213d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b000000400300043d0000034f01000041000800000003001d0000000001130436000600000001001d00000000010004140000032802200197000700000002001d000000040020008c000003dd0000c13d0000000003000031000000200030008c000000200400003900000000040340190000040a0000013d0000000803000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003120000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000030e0000c13d000000000005004b000003210000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003630000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000003510010009c000006210000213d0000000100200190000006210000c13d000000400010043f000000200030008c0000062b0000413d00000008010000290000000001010433000800000001001d000000ff0010008c0000062b0000213d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b000000400300043d0000034f01000041000700000003001d0000000001130436000500000001001d00000000010004140000032802200197000600000002001d000000040020008c0000043e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000046b0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003600000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000035c0000c13d000000000004004b0000052d0000c13d000005390000013d000000400200043d0000001f0430018f000000050530027200000005055002100000036f0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000036b0000c13d000000000004004b000005390000613d0000052d0000013d0000000903000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a0000290000038c0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003880000c13d000000000005004b0000039b0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003ce0000613d0000001f01400039000000600210018f0000000901200029000000000021004b00000000020000190000000102004039000003510010009c000006210000213d0000000100200190000006210000c13d000000400010043f000000200030008c00000009010000290000062b0000413d0000000001010433000900000001001d000000ff0010008c0000062b0000213d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b000000400300043d0000034f01000041000800000003001d0000000001130436000500000001001d00000000010004140000032802200197000600000002001d000000040020008c000004bd0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004ea0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003da0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003d60000c13d000000000004004b000005390000613d0000052d0000013d0000000802000029000003260020009c00000326020080410000004002200210000003260010009c0000032601008041000000c001100210000000000121019f0000032d011001c700000007020000290c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000003f80000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000003f40000c13d000000000005004b000004070000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000049f0000613d0000001f01400039000000600110018f0000000802100029000000000012004b00000000010000190000000101004039000600000002001d000003510020009c000006210000213d0000000100100190000006210000c13d0000000601000029000000400010043f000000200030008c0000062b0000413d00000008010000290000000001010433000800000001001d000000ff0010008c0000062b0000213d000003520100004100000006020000290000000001120436000500000001001d0000000401200039000000070200002900000000002104350000034701000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c0000053f0000c13d0000000003000031000000200030008c000000200400003900000000040340190000056b0000013d0000000702000029000003260020009c00000326020080410000004002200210000003260010009c0000032601008041000000c001100210000000000121019f0000032d011001c700000006020000290c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004590000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004550000c13d000000000005004b000004680000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004ae0000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000190000000101004039000500000002001d000003510020009c000006210000213d0000000100100190000006210000c13d0000000501000029000000400010043f000000200030008c00000080020000390000062b0000413d00000007010000290000000001010433000700000001001d000000ff0010008c0000062b0000213d000003520100004100000005030000290000000001130436000400000001001d000000040130003900000006030000290000000000310435000003470100004100000000001004390000000001000412000000040010044300000024002004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c0000057e0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005aa0000013d000000400200043d0000001f0430018f0000000505300272000004ab0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004a70000c13d000000000004004b0000052c0000c13d000005390000013d000000400200043d0000001f0430018f0000000505300272000004ba0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004b60000c13d000000000004004b000005390000613d0000052c0000013d0000000802000029000003260020009c00000326020080410000004002200210000003260010009c0000032601008041000000c001100210000000000121019f0000032d011001c700000006020000290c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004d80000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004d40000c13d000000000005004b000004e70000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000051e0000613d0000001f01400039000000600110018f0000000802100029000000000012004b00000000010000190000000101004039000500000002001d000003510020009c000006210000213d0000000100100190000006210000c13d0000000501000029000000400010043f000000200030008c0000062b0000413d00000008010000290000000001010433000800000001001d000000ff0010008c0000062b0000213d000003520100004100000005020000290000000001120436000400000001001d0000000401200039000000060200002900000000002104350000034701000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000005ef0000c13d0000000003000031000000200030008c000000200400003900000000040340190000061b0000013d000000400200043d0000001f0430018f00000005053002720000052a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005260000c13d000000000004004b000005390000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003260020009c00000326020080410000004002200210000000000112019f00000c93000104300000000603000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005590000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005550000c13d000000000005004b000005680000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005d10000613d0000001f01400039000000600110018f0000000601100029000700000001001d000003510010009c000006210000213d0000000701000029000000400010043f000000200030008c0000062b0000413d00000008010000290000004e0010008c000001e30000813d00000006010000290000000001010433000000080000006b0000065b0000c13d0000000102000039000006650000013d0000000503000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005980000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005940000c13d000000000005004b000005a70000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005e00000613d0000001f01400039000000600110018f0000000501100029000003510010009c000006210000213d000000400010043f000000200030008c0000062b0000413d00000007010000290000004d0010008c000001e30000213d000000050100002900000000010104330000000705000029000000000005004b0000000104000039000005c30000613d0000000a02000039000000010050019000000000032200a9000000010200603900000000044200a900000001055002720000000002030019000005bc0000c13d000000000204001900070000001400ad000000000001004b000005ca0000613d00000007011000f9000000000021004b000001e30000c13d0000000801000029000000ff0110018f000000240010008c000001e30000213d000006b50000c13d000800010000003d000006c20000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005dd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d90000c13d000000000004004b000005390000613d0000052d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ec0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e80000c13d000000000004004b000005390000613d0000052d0000013d0000000503000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000006090000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000006050000c13d000000000005004b000006180000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000062d0000613d0000001f01400039000000600110018f00000005011000290000000006010019000003510010009c000006270000a13d000003600100004100000000001004350000004101000039000000040010043f000003530100004100000c93000104300000000001060019000000400010043f000000200030008c0000063c0000813d000000000100001900000c9300010430000000400200043d0000001f0430018f00000005053002720000000505500210000006390000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006350000c13d000000000004004b000005390000613d0000052d0000013d00000008010000290000004d0010008c000001e30000213d000000050100002900000000020104330000000805000029000000000005004b00000001040000390000064d0000613d0000000a01000039000000010050019000000000031100a9000000010100603900000000044100a900000001055002720000000001030019000006460000c13d000000000304001900000000012400a9000000000002004b000006540000613d00000000022100d9000000000032004b000001e30000c13d0000000902000029000000ff0320018f000000240030008c000001e30000213d000007440000c13d0000000102000039000007560000013d0000000a0300003900000001020000390000000805000029000000010050019000000000043300a9000000010300603900000000022300a9000000010550027200000000030400190000065e0000c13d00080000001200ad000000000001004b0000066b0000613d00000008011000f9000000000021004b000001e30000c13d0000000901000029000000ff0210018f000000240020008c000001e30000213d0000000101000039000900000001001d0000067f0000613d0000000a0300003900000001050000390000002402200089000000010020019000000000043300a9000000010300603900000000055300a900000001022002720000000003040019000006750000c13d000900000005001d000000000005004b000007500000613d00000009030000290006000800300101000000000101041a000000000001004b000006ee0000c13d000003520100004100000007020000290000000001120436000500000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d00000007020000290000000402200039000000000101043b000003280110019700000000001204350000034701000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000007c00000c13d0000000003000031000000200030008c00000020040000390000000004034019000007ec0000013d0000000a0200003900000001040000390000002401100089000000010010019000000000032200a9000000010200603900000000044200a900000001011002720000000002030019000006b80000c13d000800000004001d000000000004004b000007500000613d0000000301000039000000000101041a000600000001001d0000034d0100004100000000001004390000000001000414000003260010009c0000032601008041000000c0011002100000034e011001c70000800b020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000000060210006c0000000906000029000001e30000413d0000000201000039000000000101041a000000000001004b00000000030000190000075b0000c13d000003540330012a000000000013001a000001e30000413d000000080400002900000007024000f90000000001130019000000000012004b00000000020180190000000401000039000000000101041a000000000021001a000001e30000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000007680000c13d000000400100043d0000035802000041000002080000013d0000000301000039000000000101041a000900000001001d0000034d0100004100000000001004390000000001000414000003260010009c0000032601008041000000c0011002100000034e011001c70000800b020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000000090210006c000001e30000413d0000000201000039000000000101041a000000000001004b00000000030000190000081a0000c13d000003540230012a000000000012001a000001e30000413d000800000012001d000000400200043d0000035201000041000900000002001d0000000001120436000700000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000806000029000000060060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000606006029000800000006001d0000000100200190000008900000613d00000009020000290000000402200039000000000101043b000003280110019700000000001204350000034701000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000008360000c13d0000000003000031000000200030008c00000020040000390000000004034019000008620000013d0000000a0400003900000001020000390000002403300089000000010030019000000000054400a9000000010400603900000000022400a900000001033002720000000004050019000007470000c13d000000000002004b000007560000c13d000003600100004100000000001004350000001201000039000000040010043f000003530100004100000c930001043000000000012100d9000000070010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001e30000c13d000000000004004b0000000003000019000006d90000613d00000000032400a900000000044300d9000000000024004b000001e30000c13d000006d90000013d0000034701000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000003550200004100000000002004390000032801100197000900000001001d00000004001004430000000001000414000003260010009c0000032601008041000000c00110021000000356011001c700008002020000390c910c8c0000040f0000000100200190000008900000613d000000000101043b000000000001004b0000062b0000613d000000400200043d0000035701000041000800000002001d00000000001204350000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d00000008020000290000000402200039000000000101043b0000032801100197000000000012043500000000010004140000000902000029000000040020008c000007b50000613d0000000802000029000003260020009c00000326020080410000004002200210000003260010009c0000032601008041000000c001100210000000000121019f00000353011001c700000009020000290c910c870000040f00000000030100190000006003300270000003260030019d0000000100200190000008ef0000613d0000000801000029000003510010009c000006210000213d0000000801000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001750000013d0000000703000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000007da0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000007d60000c13d000000000005004b000007e90000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008270000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000190000000101004039000500000002001d000003510020009c000006210000213d0000000100100190000006210000c13d0000000501000029000000400010043f000000200030008c0000062b0000413d00000007010000290000000001010433000400000001001d0000034f0100004100000005020000290000000001120436000700000001001d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000008910000c13d0000000003000031000000200030008c00000020040000390000000004034019000008bd0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001e30000c13d000000000004004b0000000003000019000007040000613d00000000032400a900000000044300d9000000000024004b000001e30000c13d000007040000013d000000400200043d0000001f0430018f0000000505300272000008330000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000082f0000c13d000000000004004b000005390000613d0000052c0000013d0000000903000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000008500000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b0000084c0000c13d000000000005004b0000085f0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008d10000613d0000001f01400039000000600110018f0000000902100029000000000012004b00000000010000190000000101004039000700000002001d000003510020009c000006210000213d0000000100100190000006210000c13d0000000701000029000000400010043f000000200030008c0000062b0000413d00000009010000290000000001010433000600000001001d0000034f0100004100000007020000290000000001120436000900000001001d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f0000000100200190000008900000613d000000000201043b00000000010004140000032802200197000000040020008c000008ff0000c13d0000000003000031000000200030008c000000200400003900000000040340190000092a0000013d000000000001042f0000000503000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000008ab0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000008a70000c13d000000000005004b000008ba0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008e00000613d0000001f01400039000000600110018f0000000501100029000003510010009c000006210000213d000000400010043f000000200030008c0000062b0000413d00000005020000290000000004020433000000ff0040008c0000062b0000213d000000040300002900000006023000b90000000905000029000000080050006c0000093d0000a13d0000004d0040008c000001e30000213d000009420000013d000000400200043d0000001f0430018f00000005053002720000000505500210000008dd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008d90000c13d000000000004004b000005390000613d0000052d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000008ec0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008e80000c13d000000000004004b000005390000613d0000052d0000013d0000032603300197000000400200043d0000001f0430018f0000000505300272000008fc0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008f80000c13d000000000004004b000005390000613d0000052c0000013d0000000703000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000009180000613d000000000701034f0000000708000029000000007907043c0000000008980436000000090080006c000009140000c13d000000000005004b000009270000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000009460000613d0000001f01400039000000600110018f0000000701100029000003510010009c000006210000213d000000400010043f000000200030008c0000062b0000413d00000007020000290000000004020433000000ff0040008c0000062b0000213d000000060200002900000008022000b9000000080000006b000009670000c13d0000004d0040008c000001e30000213d0000096c0000013d0000004d0040008c000001e30000213d00000006032000fa000000040030006c000001e30000c13d000000000004004b000009550000c13d0000000103000039000009600000013d000000400200043d0000001f0430018f0000000505300272000009520000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000094e0000c13d000000000004004b000005390000613d0000052c0000013d0000000a050000390000000103000039000000010040019000000000065500a9000000010500603900000000033500a900000001044002720000000005060019000009570000c13d000000000003004b000007500000613d00000000023200d90000000000210435000003260010009c0000032601008041000000400110021000000349011001c700000c920001042e0000004d0040008c000001e30000213d00000008032000fa000000060030006c000001e30000c13d000000000004004b000009440000613d0000000a050000390000000103000039000000010040019000000000065500a9000000010500603900000000033500a900000001044002720000000005060019000009700000c13d0000095e0000013d00000328001001980000097b0000613d000000000001042d000000400100043d00000361020000410000000000210435000003260010009c000003260100804100000040011002100000032d011001c700000c93000104300004000000000002000000400200043d0000034f01000041000400000002001d0000000001120436000300000001001d0000034701000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f000000010020019000000ac50000613d000000000201043b00000000010004140000032802200197000000040020008c000009a30000c13d0000000003000031000000200030008c00000020040000390000000004034019000000040a000029000009d00000013d0000000403000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c70c910c8c0000040f000000040a000029000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000009be0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009ba0000c13d000000000005004b000009cd0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000ad20000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003510010009c00000ac60000213d000000010020019000000ac60000c13d000000400010043f0000001f0030008c00000ac30000a13d00000000010a0433000300000001001d000000ff0010008c00000ac30000213d000003470100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f000000010020019000000ac50000613d000000000201043b000000400a00043d0000034f0100004100000000041a043600000000010004140000032802200197000000040020008c000009fc0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a2d0000013d0000032600a0009c000003260300004100000000030a40190000004003300210000003260010009c0000032601008041000000c001100210000000000131019f0000032d011001c7000100000002001d00040000000a001d000200000004001d0c910c8c0000040f000000020b000029000000040a000029000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f000000050640027200000a1a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000a160000c13d000000000005004b00000a290000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000ae10000613d00000001020000290000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000003510040009c00000ac60000213d000000010010019000000ac60000c13d000000400040043f000000200030008c00000ac30000413d00000000010a0433000000ff0010008c00000ac30000213d000200000001001d00000352010000410000000001140436000100000001001d000400000004001d000000040140003900000000002104350000034701000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f000000010020019000000ac50000613d000000000201043b00000000010004140000032802200197000000040020008c00000a5f0000c13d0000000003000031000000200030008c000000200400003900000000040340190000000205000029000000040a00002900000a8d0000013d0000000403000029000003260030009c00000326030080410000004003300210000003260010009c0000032601008041000000c001100210000000000131019f00000353011001c70c910c8c0000040f000000040a000029000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b00002900000a7a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000a760000c13d000000000005004b00000a890000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000af00000613d00000002050000290000001f01400039000000600110018f0000000001a10019000003510010009c00000ac60000213d000000400010043f000000200030008c00000ac30000413d0000004e0050008c00000acc0000813d00000000020a0433000000000005004b00000aa70000613d0000000a010000390000000103000039000000010050019000000000041100a9000000010100603900000000033100a90000000105500272000000000104001900000a9c0000c13d00000000013200a9000000000002004b00000aab0000c13d00000aae0000013d000000010300003900000000013200a9000000000002004b00000aae0000613d00000000022100d9000000000032004b00000acc0000c13d0000000302000029000000ff0320018f000000240030008c00000acc0000213d00000ab50000c13d000000010110011a000000000001042d0000000a0400003900000001020000390000002403300089000000010030019000000000054400a9000000010400603900000000022400a90000000103300272000000000405001900000ab80000c13d000000000002004b00000b100000613d00000000012100d9000000000001042d000000000100001900000c9300010430000000000001042f000003600100004100000000001004350000004101000039000000040010043f000003530100004100000c9300010430000003600100004100000000001004350000001101000039000000040010043f000003530100004100000c9300010430000000400200043d0000001f0430018f0000000505300272000000050550021000000ade0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000ada0000c13d000000000004004b00000afe0000c13d00000b0a0000013d000000400200043d0000001f0430018f0000000505300272000000050550021000000aed0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000ae90000c13d000000000004004b00000b0a0000613d00000afe0000013d000000400200043d0000001f0430018f0000000505300272000000050550021000000afc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000af80000c13d000000000004004b00000b0a0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003260020009c00000326020080410000004002200210000000000121019f00000c9300010430000003600100004100000000001004350000001201000039000000040010043f000003530100004100000c930001043000010000000000020000000301000039000000000101041a000100000001001d0000034d0100004100000000001004390000000001000414000003260010009c0000032601008041000000c0011002100000034e011001c70000800b020000390c910c8c0000040f000000010020019000000b490000613d000000000101043b000000010210006c00000b430000413d0000000201000039000000000101041a000000000001004b00000b380000613d000000000300041a00000000041300a900000000051400d9000000000035004b00000b430000c13d000000000004004b00000b3e0000613d00000000032400a900000000044300d9000000000024004b00000b390000613d00000b430000013d0000000003000019000003540230012a000000000012001a00000b430000413d0000000001120019000000000001042d0000000003000019000003540230012a000000000012001a00000b430000413d00000b3c0000013d000003600100004100000000001004350000001101000039000000040010043f000003530100004100000c9300010430000000000001042f0000000043010434000000000132043600000362063001970000001f0530018f000000000014004b00000b600000813d000000000006004b00000b5c0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000b560000c13d000000000005004b00000b7a0000613d000000000701001900000b700000013d000000000006004b00000b6c0000613d000000200760008a00000362077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b00000b680000c13d000000000005004b00000b7a0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000362023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000003630200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000036204a001970000001f03a0018f0000006401500039000000000012004b00000ba40000813d000000000004004b00000ba00000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c00000b9a0000c13d000000000003004b00000bbe0000613d000000000501001900000bb40000013d000000000004004b00000bb00000613d000000200540008a0000036205500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b00000bac0000c13d000000000003004b00000bbe0000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000034701000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000003260010009c0000032601008041000000c00110021000000350011001c700008005020000390c910c8c0000040f000000010020019000000c280000613d000000000201043b00000000010004140000032802200197000000040020008c000000040a00002900000bdc0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000c100000013d00000002030000290000001f0330003900000362033001970000032600a0009c000003260400004100000000040a401900000040044002100000006403300039000003260030009c00000326030080410000006003300210000000000343019f000003260010009c0000032601008041000000c001100210000000000131019f0c910c8c0000040f000000040a000029000000000301001900000060033002700000032603300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b00002900000bfe0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000bfa0000c13d000000000005004b00000c0d0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000c480000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000003510040009c00000c290000213d000000010010019000000c290000c13d000000400040043f0000001f0030008c00000c260000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b00000c260000c13d000000000001004b00000c2f0000613d000000000001042d000000000100001900000c9300010430000000000001042f000003600100004100000000001004350000004101000039000000040010043f000003530100004100000c93000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000036401000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d0c910b4a0000040f00000004020000290000000001210049000003260010009c0000032601008041000003260020009c000003260200804100000060011002100000004002200210000000000121019f00000c9300010430000000400200043d0000001f0430018f0000000505300272000000050550021000000c540000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000c500000c13d000000000004004b00000c620000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003260020009c00000326020080410000004002200210000000000112019f00000c9300010430000000000001042f00000000050100190000000000200439000000050030008c00000c770000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00000c6f0000413d000003260030009c000003260300804100000060013002100000000002000414000003260020009c0000032602008041000000c002200210000000000112019f00000365011001c700000000020500190c910c8c0000040f000000010020019000000c860000613d000000000101043b000000000001042d000000000001042f00000c8a002104210000000102000039000000000001042d0000000002000019000000000001042d00000c8f002104230000000102000039000000000001042d0000000002000019000000000001042d00000c910000043200000c920001042e00000c9300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000180000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000ac5a693d00000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000ef4fa51b00000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000abb85613000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be6310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e00000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000020000000000000000000000000736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff41976e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b06000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","INTERMEDIATE_ORACLE()":"ef4fa51b","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"01000367a6324c24677c6a4533fcd6ea2d5a4d80fac890f44f8d8a56896dbb94","factoryDependencies":{}}},"contracts/oracles/PendleOracle.sol":{"PendleOracle":{"abi":[{"inputs":[{"components":[{"internalType":"address","name":"market","type":"address"},{"internalType":"address","name":"ptOracle","type":"address"},{"internalType":"enum PendleOracle.RateKind","name":"rateKind","type":"uint8"},{"internalType":"address","name":"ptToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint32","name":"twapDuration","type":"uint32"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"snapshotGap","type":"uint256"}],"internalType":"struct PendleOracle.ConstructorParams","name":"params","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidDuration","type":"error"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"inputs":[],"name":"ZeroValueNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKET","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PT_ORACLE","outputs":[{"internalType":"contract IPendlePtOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_KIND","outputs":[{"internalType":"enum PendleOracle.RateKind","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TWAP_DURATION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ptOracle\",\"type\":\"address\"},{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"rateKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"ptToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"twapDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"internalType\":\"struct PendleOracle.ConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MARKET\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PT_ORACLE\",\"outputs\":[{\"internalType\":\"contract IPendlePtOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_KIND\",\"outputs\":[{\"internalType\":\"enum PendleOracle.RateKind\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TWAP_DURATION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidDuration Thrown if the duration is invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"stateVariables\":{\"UNDERLYING_DECIMALS\":{\"details\":\"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market\"}},\"title\":\"PendleOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidDuration()\":[{\"notice\":\"Thrown if the duration is invalid\"}],\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"MARKET()\":{\"notice\":\"Address of the market\"},\"PT_ORACLE()\":{\"notice\":\"Address of the PT oracle\"},\"RATE_KIND()\":{\"notice\":\"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"TWAP_DURATION()\":{\"notice\":\"Twap duration for the oracle\"},\"UNDERLYING_DECIMALS()\":{\"notice\":\"Decimals of the underlying token\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of underlying token for 1 PT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a pendle token\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/PendleOracle.sol\":\"PendleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IPendlePtOracle.sol\":{\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://20c6f0727f06025b7ecaf9613ba78ba44a2a6a305edf347d360bbaaa26288682\",\"dweb:/ipfs/Qma44fx2EGb3sfQRgw79gB5Yaykn1VhLf7wxKcfTvF3ZxF\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/PendleOracle.sol\":{\"keccak256\":\"0xaa7963ac7657ea62079c2162cb4fc45524f8ffbbc6e84f89a5d4e54b71dc6025\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://31d2cc0e3f7472922e5ffae3fed0a542f8f6b3cf4b7fcb8419d667af0a424db5\",\"dweb:/ipfs/QmeTb94GymRJZCrp1L7rmy2YTEYxnBU7N56rjTHTBHzUgJ\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","details":"As a base price the oracle uses either the price of the Pendle market's asset (in this case PT_TO_ASSET rate should be used) or the price of the Pendle market's interest bearing token (e.g. wstETH for stETH; in this case PT_TO_SY rate should be used). Technically, interest bearing token is different from standardized yield (SY) token, but since SY is a wrapper around an interest bearing token, we can safely assume the prices of the two are equal. This is not always true for asset price though: using PT_TO_ASSET rate assumes that the yield token can be seamlessly redeemed for the underlying asset. In reality, this might not always be the case. For more details, see https://docs.pendle.finance/Developers/Contracts/StandardizedYield","kind":"dev","methods":{"constructor":{"custom:error":"InvalidDuration Thrown if the duration is invalid"},"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of underlying token (either the market's asset or the yield token) for 1 PT, adjusted for decimals such that the result has the same precision as the underlying token"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"stateVariables":{"UNDERLYING_DECIMALS":{"details":"We make an assumption that the underlying decimals will not change throughout the lifetime of the Pendle market"}},"title":"PendleOracle","version":1},"userdoc":{"errors":{"InvalidDuration()":[{"notice":"Thrown if the duration is invalid"}],"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}],"ZeroValueNotAllowed()":[{"notice":"Thrown if the supplied value is 0 where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"MARKET()":{"notice":"Address of the market"},"PT_ORACLE()":{"notice":"Address of the PT oracle"},"RATE_KIND()":{"notice":"Whether to use PT/SY (standardized yield token) rate or PT/market asset rate"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"TWAP_DURATION()":{"notice":"Twap duration for the oracle"},"UNDERLYING_DECIMALS()":{"notice":"Decimals of the underlying token"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of underlying token for 1 PT"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of a pendle token","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/PendleOracle.sol:PendleOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/PendleOracle.sol:PendleOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/PendleOracle.sol:PendleOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/PendleOracle.sol:PendleOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/PendleOracle.sol:PendleOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001800000000000200000000030100190000006003300270000003690330019700000001002001900000003c0000c13d0000008002000039000000400020043f000000040030008c000000600000413d000000000201043b000000e002200270000003790020009c000000620000213d000003880020009c000000b80000a13d000003890020009c000000de0000213d0000038d0020009c000001f30000613d0000038e0020009c000002690000613d0000038f0020009c000000600000c13d000000240030008c000000600000413d0000000002000416000000000002004b000000600000c13d0000000401100370000000000101043b000600000001001d000000c001000039000000400010043f0000001701000039000000800010043f000003ab01000041000000a00010043f00000080010000390d9d0c8c0000040f0000000401000039000000000501041a0000000001000414000003690010009c0000036901008041000000c0011002100000039a011001c70000800d020000390000000303000039000003ac0400004100000006060000290d9d0d930000040f0000000100200190000000600000613d00000006010000290000000402000039000000000012041b000000000100001900000d9e0001042e000001a002000039000000400020043f0000000004000416000000000004004b000000600000c13d0000001f043000390000036a04400197000001a004400039000000400040043f0000001f0430018f00000005053002720000004f0000613d0000000506500210000001a006600039000000000701034f000000007807043c0000000002820436000000000062004b0000004b0000c13d000000000004004b0000005e0000613d0000000502500210000000000121034f0000000304400210000001a002200039000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000001a00030008c000000710000813d000000000100001900000d9f000104300000037a0020009c000000c50000a13d0000037b0020009c000000ee0000213d0000037f0020009c000002740000613d000003800020009c000002790000613d000003810020009c000000600000c13d0000000001000416000000000001004b000000600000c13d0d9d0a980000040f000002b90000013d000000400300043d0000036b0030009c0000007a0000a13d000003af0100004100000000001004350000004101000039000000040010043f000003a50100004100000d9f00010430000001a001300039000000400010043f000001a00100043d0000036c0010009c000000600000213d0000000001130436000001c00200043d0000036c0020009c000000600000213d0000000000210435000001e00200043d000000010020008c000000600000213d00000040043000390000000000240435000002000600043d0000036c0060009c000000600000213d00000060023000390000000000620435000002200200043d0000036c0020009c000000600000213d00000080053000390000000000250435000002400700043d0000036c0070009c000000600000213d000000a0053000390000000000750435000002600800043d000003690080009c000000600000213d000000c0053000390000000000850435000000e008300039000002800d00043d0000000000d804350000010009300039000002a00800043d0000000000890435000001200a300039000002c00900043d00000000009a0435000001400a300039000002e00b00043d0000000000ba0435000003000a00043d0000036c00a0009c000000600000213d000001600c3000390000000000ac0435000001800e300039000003200c00043d0000000000ce04350000036d0ed0012a0000000000e0041b0000036e00d0009c000003720000213d000000000008004b000002da0000c13d000003740000013d000003900020009c000000ff0000a13d000003910020009c000001330000613d000003920020009c000001170000613d000003930020009c000000600000c13d0000000001000416000000000001004b000000600000c13d00000004010000390000028e0000013d000003820020009c000001080000a13d000003830020009c0000013e0000613d000003840020009c000001280000613d000003850020009c000000600000c13d0000000001000416000000000001004b000000600000c13d0000000001000412000c00000001001d000b00e00000003d0000800501000039000000440300003900000000040004150000000c0440008a000000050440021000000396020000410d9d0d750000040f0000036901100197000000800010043f000003970100004100000d9e0001042e0000038a0020009c0000028a0000613d0000038b0020009c000002920000613d0000038c0020009c000000600000c13d0000000001000416000000000001004b000000600000c13d0000000102000039000000000102041a000000000001004b0000000001000019000002c00000c13d000000010110018f000002b90000013d0000037c0020009c000002ae0000613d0000037d0020009c000002b50000613d0000037e0020009c000000600000c13d0000000001000416000000000001004b000000600000c13d0000000001000412000800000001001d000700c00000003d000080050100003900000044030000390000000004000415000000080440008a000002830000013d000003940020009c000001630000613d000003950020009c000000600000c13d0000000001000416000000000001004b000000600000c13d00000001010000390000028e0000013d000003860020009c0000017e0000613d000003870020009c000000600000c13d0000000001000416000000000001004b000000600000c13d0000000001000412001000000001001d000f00000000001d000080050100003900000044030000390000000004000415000000100440008a000002830000013d0000000001000416000000000001004b000000600000c13d0000000001000412001400000001001d001301000000003d000080050100003900000044030000390000000004000415000000140440008a000000050440021000000396020000410d9d0d750000040f000000ff0110018f000000800010043f000003970100004100000d9e0001042e0000000001000416000000000001004b000000600000c13d0000000001000412000e00000001001d000d00800000003d0000800501000039000000440300003900000000040004150000000e0440008a000002830000013d0000000001000416000000000001004b000000600000c13d0000000001000412001600000001001d001500200000003d000080050100003900000044030000390000000004000415000000160440008a000002830000013d000000440030008c000000600000413d0000000002000416000000000002004b000000600000c13d0000002402100370000000000202043b000600000002001d0000000401100370000000000101043b000500000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000039901000041000000a00010043f00000080010000390d9d0c8c0000040f00000002010000390000000505000029000000000051041b00000003030000390000000606000029000000000063041b0000000001000414000003690010009c0000036901008041000000c0011002100000039a011001c70000800d020000390000039b040000410d9d0d930000040f0000000100200190000000600000613d000000000100001900000d9e0001042e0000000001000416000000000001004b000000600000c13d0000039601000041000000000010043900000000010004120000000400100443000000a00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000010010008c000002870000a13d000003af0100004100000000001004350000002101000039000000040010043f000003a50100004100000d9f000104300000000001000416000000000001004b000000600000c13d0000000301000039000000000101041a000600000001001d0000039c0100004100000000001004390000000001000414000003690010009c0000036901008041000000c0011002100000039d011001c70000800b020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b000000060120006c000002d20000413d000500000002001d0000000102000039000600000002001d000000000202041a000000010220008a000000000012004b000001610000813d0000039601000041000000000010043900000000010004120000000400100443000000a00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000010010008c000001780000213d000000400200043d000400000002001d000003870000c13d000003a0010000410000000001120436000300000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000202000029000003690220019700000004040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c0000047a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004a60000013d000000240030008c000000600000413d0000000002000416000000000002004b000000600000c13d0000000401100370000000000101043b000600000001001d0000036c0010009c000000600000213d000003960100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000060110014f0000036c00100198000003620000c13d0000039601000041000000000010043900000000010004120000000400100443000000a00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000010010008c000001780000213d000000400200043d000600000002001d000003cc0000c13d000003a0010000410000000001120436000500000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000400000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000402000029000003690220019700000006040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000004af0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004db0000013d0000000001000416000000000001004b000000600000c13d0000000001000412001200000001001d001100600000003d000080050100003900000044030000390000000004000415000000120440008a000002830000013d0000000001000416000000000001004b000000600000c13d00000003010000390000028e0000013d0000000001000416000000000001004b000000600000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000000050440021000000396020000410d9d0d750000040f0000036c01100197000000800010043f000003970100004100000d9e0001042e0000000001000416000000000001004b000000600000c13d0000000201000039000000000101041a000000800010043f000003970100004100000d9e0001042e000000440030008c000000600000413d0000000002000416000000000002004b000000600000c13d0000002402100370000000000202043b000600000002001d0000000401100370000000000101043b000500000001001d000000c001000039000000400010043f0000001e01000039000000800010043f000003a701000041000000a00010043f00000080010000390d9d0c8c0000040f00000005010000290000036d0610012a000000000500041a000000000060041b0000036e0010009c000002d80000213d000000060000006b000002da0000c13d000002e20000013d0000000001000416000000000001004b000000600000c13d000000000100041a000000800010043f000003970100004100000d9e0001042e0000000001000416000000000001004b000000600000c13d0d9d0c220000040f000000400200043d0000000000120435000003690020009c0000036902008041000000400120021000000398011001c700000d9e0001042e000500000002001d0000000301000039000000000101041a000600000001001d0000039c0100004100000000001004390000000001000414000003690010009c0000036901008041000000c0011002100000039d011001c70000800b020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000060210006c000002fb0000813d000003af0100004100000000001004350000001101000039000000040010043f000003a50100004100000d9f00010430000000060000006b000002e20000c13d000000400100043d000003a8020000410000000000210435000003690010009c0000036901008041000000400110021000000370011001c700000d9f000104300000000101000039000000000701041a000000400100043d00000006020000290000000000210435000003690010009c000003690100804100000040011002100000000002000414000003690020009c0000036902008041000000c002200210000000000112019f000003a9011001c70000800d020000390000000403000039000003aa040000410d9d0d930000040f0000000100200190000000600000613d00000006010000290000000102000039000000000012041b000000000100001900000d9e0001042e0000000201000039000000000101041a000000000001004b0000000003000019000003650000c13d000003a10230012a000000000012001a000002d20000413d000000000212001a0000000001000019000000ec0000613d000600000002001d0000039601000041000000000010043900000000010004120000000400100443000000a00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000010010008c000001780000213d000000400100043d000400000001001d0000042e0000c13d000003a00100004100000004020000290000000001120436000300000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000202000029000003690220019700000004040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c0000061d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006490000013d000000400100043d000003ad02000041000002dc0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000002d20000c13d000000000004004b0000000003000019000003000000613d00000000032400a900000000044300d9000000000024004b000002d20000c13d000003000000013d000000000008004b000002da0000613d000000000d000415000000180dd0008a000000050dd00210000000000009004b0000037e0000613d000000000d000415000000170dd0008a000000050dd0021000000000000b004b000004110000c13d000000000008004b000000000e000019000000010e00c039000000050dd00270000000000d0e001f000004110000613d000000400100043d0000037802000041000002dc0000013d0000039f010000410000000001120436000300000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000202000029000003690220019700000004040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000004e40000c13d0000000003000031000000200030008c00000020040000390000000004034019000005100000013d0000039f010000410000000001120436000500000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000400000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000402000029000003690220019700000006040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000005750000c13d0000000003000031000000200030008c00000020040000390000000004034019000005a10000013d000000000006004b0000042b0000613d000000000002004b0000042b0000613d000000000007004b0000042b0000613d00000000000a004b0000042b0000613d000000800060043f000000a00020043f000000c00070043f0000000106000039000000000086041b0000000206000039000000000096041b00000003060000390000000000b6041b00000004060000390000000000c6041b000000e000a0043f00000000030304330000036c033001980000042b0000613d00000000060104330000036c00600198000004740000c13d000000400100043d0000037702000041000002dc0000013d0000039f0100004100000004020000290000000001120436000300000001001d0000039601000041000000000010043900000000010004120000000400100443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b0000000202000029000003690220019700000004040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000006520000c13d0000000003000031000000200030008c000000200400003900000000040340190000067e0000013d00000000060504330000036900600198000005c90000c13d000000400100043d0000037602000041000002dc0000013d0000000403000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000004940000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000004900000c13d000000000005004b000004a30000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005e10000613d0000001f01400039000000600210018f0000000401200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d000005180000013d0000000603000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004c90000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000004c50000c13d000000000005004b000004d80000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005f00000613d0000001f01400039000000600210018f0000000601200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d000005a90000013d0000000403000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000004fe0000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000004fa0000c13d000000000005004b0000050d0000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005ff0000613d0000001f01400039000000600210018f0000000401200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d0000000100200190000000740000c13d000000400010043f000000200030008c000000600000413d00000004010000290000000001010433000400000001001d0000039601000041000000000010043900000000010004120000000400100443000001000100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000ff0110018f0000004d0010008c000002d20000213d000000000001004b000300040000002d000005450000613d0000000a020000390000000104000039000000010010019000000000032200a9000000010200603900000000044200a900000001011002720000000002030019000005380000c13d000600000004001d000000000004004b000300000000001d000005490000613d000000040200002900030006002000bd000000030200002900000006012000fa000000040010006c000002d20000c13d0000000301000039000000000101041a000600000001001d0000039c0100004100000000001004390000000001000414000003690010009c0000036901008041000000c0011002100000039d011001c70000800b020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000060210006c0000000506000029000002d20000413d0000000201000039000000000101041a000000000001004b0000000003000019000008630000c13d000003a10330012a000000000013001a000002d20000413d0000000302000029000003a10220012a0000000001130019000000000012004b00000000020180190000000401000039000000000101041a000000000021001a000002d20000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b0000087f0000c13d000000400100043d000003a602000041000002dc0000013d0000000603000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a0000290000058f0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b0000058b0000c13d000000000005004b0000059e0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000060e0000613d0000001f01400039000000600210018f0000000601200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d0000000100200190000000740000c13d000000400010043f000000200030008c000000600000413d00000006010000290000000001010433000600000001001d0000039601000041000000000010043900000000010004120000000400100443000001000100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000ff0210018f0000004d0020008c000002d20000213d000000000002004b0000074f0000c13d000000010100003900000006020000290000075c0000013d000001400030043f00000000010104330000036c01100197000001000010043f0000000001040433000000020010008c000001780000813d000001200010043f00000000010504330000036901100197000001600010043f0000036f01000041000000400300043d000600000003001d0000000001130436000500000001001d0000000001000414000000040020008c000006bb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006e70000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ed0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e90000c13d000000000004004b000007490000613d0000073d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005fc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f80000c13d000000000004004b000007490000613d0000073d0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000060b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006070000c13d000000000004004b000007490000613d0000073d0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000061a0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006160000c13d000000000004004b000007490000613d0000073d0000013d0000000403000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000006370000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000006330000c13d000000000005004b000006460000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000007100000613d0000001f01400039000000600210018f0000000401200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d000006860000013d0000000403000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a0000290000066c0000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000006680000c13d000000000005004b0000067b0000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000071f0000613d0000001f01400039000000600210018f0000000401200029000000000021004b00000000020000190000000102004039000003710010009c000000740000213d0000000100200190000000740000c13d000000400010043f000000200030008c000000600000413d00000004010000290000000001010433000400000001001d0000039601000041000000000010043900000000010004120000000400100443000001000100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000ff0110018f0000004d0010008c000002d20000213d000000000001004b0000000402000029000006b30000613d0000000a020000390000000104000039000000010010019000000000032200a9000000010200603900000000044200a900000001011002720000000002030019000006a60000c13d000500000004001d000000000004004b0000000002000019000006b60000613d000000040200002900000005022000b900000005012000fa000000040010006c000002d20000c13d000003a10120012a000000060010006c00000000010000190000000101002039000000ec0000013d0000000603000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000370011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000006d50000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000006d10000c13d000000000005004b000006e40000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000072e0000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000500000002001d000003710020009c000000740000213d0000000100100190000000740000c13d0000000501000029000000400010043f000000200030008c000000600000413d00000006010000290000000001010433000000ff0010008c000000600000213d000001800010043f000001600100043d000003690110019700000005060000290000002402600039000001000400043d000001400500043d000000000012043500000372010000410000000001160436000600000001001d00000004016000390000036c02500197000000000021043500000000010004140000036c02400197000000040020008c000007ef0000c13d000000600030008c000000600400003900000000040340190000081c0000013d000000400200043d0000001f0430018f00000005053002720000071c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007180000c13d000000000004004b000007490000613d0000073c0000013d000000400200043d0000001f0430018f00000005053002720000072b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007270000c13d000000000004004b000007490000613d0000073c0000013d000000400200043d0000001f0430018f00000005053002720000073a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007360000c13d000000000004004b000007490000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003690020009c00000369020080410000004002200210000000000112019f00000d9f000104300000000a030000390000000101000039000000010020019000000000043300a9000000010300603900000000011300a900000001022002720000000003040019000007510000c13d000000000001004b000500000000001d000007600000613d00000006021000b9000500000002001d00000005011000f9000000060010006c000002d20000c13d0000000501000029000403a1001001320000000101000039000600000001001d000000000101041a000000000001004b000007990000c13d000000400200043d000003ae01000041000300000002001d0000000001120436000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d00000003020000290000000402200039000000000101043b0000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000008d70000c13d0000000003000031000000200030008c00000020040000390000000004034019000009030000013d0000000301000039000000000101041a000500000001001d0000039c0100004100000000001004390000000001000414000003690010009c0000036901008041000000c0011002100000039d011001c70000800b020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000050210006c000002d20000413d0000000201000039000000000101041a000000000001004b0000000003000019000009310000c13d000003a10230012a000000000012001a000002d20000413d000500000012001d000000400200043d000003ae01000041000300000002001d0000000001120436000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000506000029000000040060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000406006029000500000006001d0000000100200190000009a70000613d00000003020000290000000402200039000000000101043b0000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c0000094d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000009790000013d0000000503000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000600030008c000000600400003900000000040340190000001f0540018f00000005064002720000080a0000613d000000050760021000000005090000290000000007790019000000000801034f000000008a08043c0000000009a90436000000000079004b000008060000c13d000000000005004b000008190000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008700000613d0000001f01400039000000e00110018f0000000501100029000003710010009c000000740000213d000000400010043f000000600030008c000000600000413d00000005020000290000000002020433000000000002004b0000000003000019000000010300c039000000000032004b000000600000c13d000000060300002900000000030304330000ffff0030008c000000600000213d000000050300002900000040033000390000000003030433000000000003004b0000000004000019000000010400c039000000000043004b000000600000c13d000000000002004b000009f70000c13d000000000003004b000009f70000613d000000800100043d00000140000004430000016000100443000000a00200043d00000020010000390000018000100443000001a000200443000000c00200043d0000004003000039000001c000300443000001e0002004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000001000300043d00000240002004430000026000300443000000a002000039000001200300043d0000028000200443000002a000300443000000c002000039000001400300043d000002c000200443000002e000300443000000e002000039000001600300043d000003000020044300000320003004430000010002000039000001800300043d00000340002004430000036000300443000001000010044300000009010000390000012000100443000003740100004100000d9e0001042e000000000300041a00000000041300a900000000051400d9000000000035004b000002d20000c13d000000000004004b0000000003000019000005600000613d00000000032400a900000000044300d9000000000024004b000002d20000c13d000005600000013d000000400200043d0000001f0430018f00000005053002720000087c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008780000c13d000000000004004b000007490000613d0000073c0000013d0000039601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000003a20200004100000000002004390000036c01100197000600000001001d00000004001004430000000001000414000003690010009c0000036901008041000000c001100210000003a3011001c700008002020000390d9d0d980000040f0000000100200190000009a70000613d000000000101043b000000000001004b000000600000613d000000400200043d000003a401000041000500000002001d00000000001204350000039601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d00000005020000290000000402200039000000000101043b0000036c01100197000000000012043500000000010004140000000602000029000000040020008c000008cc0000613d0000000502000029000003690020009c00000369020080410000004002200210000003690010009c0000036901008041000000c001100210000000000121019f000003a5011001c700000006020000290d9d0d930000040f00000000030100190000006003300270000003690030019d000000010020019000000a080000613d0000000501000029000003710010009c000000740000213d0000000501000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001580000013d0000000303000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f000003a5011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000008f10000613d000000000701034f0000000308000029000000007907043c00000000089804360000000000a8004b000008ed0000c13d000000000005004b000009000000613d0000000506600210000000000761034f00000003066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000093e0000613d0000001f01400039000000600110018f0000000302100029000000000012004b00000000010000190000000101004039000200000002001d000003710020009c000000740000213d0000000100100190000000740000c13d0000000201000029000000400010043f000000200030008c000000600000413d00000003010000290000000001010433000100000001001d0000036f0100004100000002020000290000000001120436000300000001001d000003960100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c000009a80000c13d0000000003000031000000200030008c00000020040000390000000004034019000009d40000013d000000000300041a00000000041300a900000000051400d9000000000035004b000002d20000c13d000000000004004b0000000003000019000007af0000613d00000000032400a900000000044300d9000000000024004b000002d20000c13d000007af0000013d000000400200043d0000001f0430018f00000005053002720000094a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000009460000c13d000000000004004b000007490000613d0000073c0000013d0000000303000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f000003a5011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000009670000613d000000000701034f0000000308000029000000007907043c00000000089804360000000000a8004b000009630000c13d000000000005004b000009760000613d0000000506600210000000000761034f00000003066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000009e80000613d0000001f01400039000000600110018f0000000302100029000000000012004b00000000010000190000000101004039000400000002001d000003710020009c000000740000213d0000000100100190000000740000c13d0000000401000029000000400010043f000000200030008c000000600000413d00000003010000290000000001010433000200000001001d0000036f0100004100000004020000290000000001120436000300000001001d000003960100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f0000000100200190000009a70000613d000000000201043b00000000010004140000036c02200197000000040020008c00000a180000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a440000013d000000000001042f0000000203000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000370011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000009c20000613d000000000701034f0000000208000029000000007907043c00000000089804360000000000a8004b000009be0000c13d000000000005004b000009d10000613d0000000506600210000000000761034f00000002066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000009f90000613d0000001f01400039000000600110018f0000000201100029000003710010009c000000740000213d000000400010043f000000200030008c000000600000413d00000002020000290000000003020433000000ff0030008c000000600000213d000000010400002900000004024000b90000000504000029000003a10040009c00000a570000813d0000004d0030008c000002d20000213d00000a5c0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000009f40000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000009f00000c13d000000000004004b000007490000613d0000073d0000013d0000037502000041000002dc0000013d000000400200043d0000001f0430018f0000000505300272000000050550021000000a050000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000a010000c13d000000000004004b000007490000613d0000073d0000013d0000036903300197000000400200043d0000001f0430018f000000050530027200000a150000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000a110000c13d000000000004004b000007490000613d0000073c0000013d0000000403000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000370011001c70d9d0d980000040f000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a00002900000a320000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b00000a2e0000c13d000000000005004b00000a410000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000a700000613d0000001f01400039000000600110018f0000000401100029000003710010009c000000740000213d000000400010043f000000200030008c000000600000413d00000004020000290000000003020433000000ff0030008c000000600000213d000000020200002900000005022000b9000000050000006b00000a7f0000c13d0000004d0030008c000002d20000213d00000a840000013d0000004d0030008c000002d20000213d00000004042000fa000000010040006c000002d20000c13d000000000003004b00000a910000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a90000000103300272000000000405001900000a600000c13d000600000006001d000000000006004b00000a910000c13d000003af0100004100000000001004350000001201000039000000040010043f000003a50100004100000d9f00010430000000400200043d0000001f0430018f000000050530027200000a7c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000a780000c13d000000000004004b000007490000613d0000073c0000013d0000004d0030008c000002d20000213d00000005042000fa000000020040006c000002d20000c13d000000000003004b00000a910000613d0000000a04000039000600010000003d000000010030019000000000054400a9000000010400603900060006004000bd0000000103300272000000000405001900000a880000c13d000000060000006b00000a6a0000613d00000006022000fa0000000000210435000003690010009c0000036901008041000000400110021000000398011001c700000d9e0001042e00030000000000020000039601000041000000000010043900000000010004120000000400100443000000a00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b000000020010008c00000be70000813d000000400300043d000000010010008c0000000002000412000300000003001d00000af50000c13d000003a0010000410000000001130436000100000001001d000003960100004100000000001004390000000400200443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b0000000202000029000003690220019700000003040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000201043b00000000010004140000036c02200197000000040020008c00000b3a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000030a00002900000b670000013d0000039f010000410000000001130436000100000001001d000003960100004100000000001004390000000400200443000000e00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b000200000001001d0000039601000041000000000010043900000000010004120000000400100443000000c00100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b0000000202000029000003690220019700000003040000290000002403400039000000000023043500000004024000390000036c0110019700000000001204350000039601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000201043b00000000010004140000036c02200197000000040020008c00000ba10000c13d0000000003000031000000200030008c00000020040000390000000004034019000000030a00002900000bce0000013d0000000303000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000030a000029000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b00002900000b550000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000b510000c13d000000000005004b00000b640000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000bf30000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003710010009c00000bed0000213d000000010020019000000bed0000c13d000000400010043f000000200030008c00000bdb0000413d00000000010a0433000300000001001d0000039601000041000000000010043900000000010004120000000400100443000001000100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000be00000613d000000000101043b000000ff0210018f0000004d0020008c00000be10000213d000000000002004b00000b990000613d0000000a030000390000000101000039000000010020019000000000043300a9000000010300603900000000011300a90000000102200272000000000304001900000b8d0000c13d000000000001004b00000bdd0000613d000000030300002900000000023100a900000b9c0000013d00000001010000390000000303000029000000000203001900000000011200d9000000000031004b00000be10000c13d000003a10120012a000000000001042d0000000303000029000003690030009c00000369030080410000004003300210000003690010009c0000036901008041000000c001100210000000000131019f00000373011001c70d9d0d980000040f000000030a000029000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b00002900000bbc0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000bb80000c13d000000000005004b00000bcb0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000c020000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000003710010009c00000bed0000213d000000010020019000000bed0000c13d000000400010043f0000001f0030008c00000b740000213d000000000100001900000d9f000104300000000002000019000003a10120012a000000000001042d000000000001042f000003af0100004100000000001004350000001101000039000000040010043f000003a50100004100000d9f00010430000003af0100004100000000001004350000002101000039000000040010043f000003a50100004100000d9f00010430000003af0100004100000000001004350000004101000039000000040010043f000003a50100004100000d9f00010430000000400200043d0000001f0430018f0000000505300272000000050550021000000bff0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000bfb0000c13d000000000004004b00000c1c0000613d00000c100000013d000000400200043d0000001f0430018f0000000505300272000000050550021000000c0e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000c0a0000c13d000000000004004b00000c1c0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003690020009c00000369020080410000004002200210000000000121019f00000d9f0001043000010000000000020000000301000039000000000101041a000100000001001d0000039c0100004100000000001004390000000001000414000003690010009c0000036901008041000000c0011002100000039d011001c70000800b020000390d9d0d980000040f000000010020019000000c550000613d000000000101043b000000010210006c00000c4f0000413d0000000201000039000000000101041a000000000001004b00000c440000613d000000000300041a00000000041300a900000000051400d9000000000035004b00000c4f0000c13d000000000004004b00000c4a0000613d00000000032400a900000000044300d9000000000024004b00000c450000613d00000c4f0000013d0000000003000019000003a10230012a000000000012001a00000c4f0000413d0000000001120019000000000001042d0000000003000019000003a10230012a000000000012001a00000c4f0000413d00000c480000013d000003af0100004100000000001004350000001101000039000000040010043f000003a50100004100000d9f00010430000000000001042f00000000430104340000000001320436000003b0063001970000001f0530018f000000000014004b00000c6c0000813d000000000006004b00000c680000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000c620000c13d000000000005004b00000c860000613d000000000701001900000c7c0000013d000000000006004b00000c780000613d000000200760008a000003b0077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b00000c740000c13d000000000005004b00000c860000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000003b0023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000003b10200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a30435000003b004a001970000001f03a0018f0000006401500039000000000012004b00000cb00000813d000000000004004b00000cac0000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c00000ca60000c13d000000000003004b00000cca0000613d000000000501001900000cc00000013d000000000004004b00000cbc0000613d000000200540008a000003b005500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b00000cb80000c13d000000000003004b00000cca0000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000039601000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000003690010009c0000036901008041000000c0011002100000039e011001c700008005020000390d9d0d980000040f000000010020019000000d340000613d000000000201043b00000000010004140000036c02200197000000040020008c000000040a00002900000ce80000c13d0000000003000031000000200030008c0000002004000039000000000403401900000d1c0000013d00000002030000290000001f03300039000003b0033001970000036900a0009c000003690400004100000000040a401900000040044002100000006403300039000003690030009c00000369030080410000006003300210000000000343019f000003690010009c0000036901008041000000c001100210000000000131019f0d9d0d980000040f000000040a000029000000000301001900000060033002700000036903300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b00002900000d0a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b00000d060000c13d000000000005004b00000d190000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000000010020019000000d540000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000003710040009c00000d350000213d000000010010019000000d350000c13d000000400040043f0000001f0030008c00000d320000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b00000d320000c13d000000000001004b00000d3b0000613d000000000001042d000000000100001900000d9f00010430000000000001042f000003af0100004100000000001004350000004101000039000000040010043f000003a50100004100000d9f00010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000003b201000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d0d9d0c560000040f00000004020000290000000001210049000003690010009c0000036901008041000003690020009c000003690200804100000060011002100000004002200210000000000121019f00000d9f00010430000000400200043d0000001f0430018f0000000505300272000000050550021000000d600000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00000d5c0000c13d000000000004004b00000d6e0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000003690020009c00000369020080410000004002200210000000000112019f00000d9f00010430000000000001042f00000000050100190000000000200439000000050030008c00000d830000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00000d7b0000413d000003690030009c000003690300804100000060013002100000000002000414000003690020009c0000036902008041000000c002200210000000000112019f000003b3011001c700000000020500190d9d0d980000040f000000010020019000000d920000613d000000000101043b000000000001042d000000000001042f00000d96002104210000000102000039000000000001042d0000000002000019000000000001042d00000d9b002104230000000102000039000000000001042d0000000002000019000000000001042d00000d9d0000043200000d9e0001042e00000d9f00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000fffffffffffffe5f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f313ce567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff873e9600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000020000000000000000000000000000028000000100000000000000000076166401000000000000000000000000000000000000000000000000000000009cf8540c000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069240425000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000ac5a693d00000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000f46f16c2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000abb85613000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000809d7b3100000000000000000000000000000000000000000000000000000000879ac8f800000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000041976e0800000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c80000000000000000000000000000000000000000000000000000000029db1be50000000000000000000000000000000000000000000000000000000029db1be6000000000000000000000000000000000000000000000000000000003dae7c22000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000002125d090000000000000000000000000000000000000000000000000000000007d0413c310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e00000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000020000000000000000000000000736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000200000200000000000000000000000000000044000000000000000000000000abca0eab00000000000000000000000000000000000000000000000000000000a31426d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","MARKET()":"f46f16c2","PT_ORACLE()":"809d7b31","RATE_KIND()":"02125d09","RESILIENT_ORACLE()":"a4edcd4c","TWAP_DURATION()":"879ac8f8","UNDERLYING_DECIMALS()":"3dae7c22","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010003b55e55ec9a7904f085102f13a58dc32785e4f32dd2085ff3f3bb2750c7","factoryDependencies":{}}},"contracts/oracles/SFraxOracle.sol":{"SFraxOracle":{"abi":[{"inputs":[{"internalType":"address","name":"sFrax","type":"address"},{"internalType":"address","name":"frax","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sFrax\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"frax\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of FRAX for sFrax\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"SFraxOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of FRAX for 1 sFrax\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of sFrax\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/SFraxOracle.sol\":\"SFraxOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/ISFrax.sol\":{\"keccak256\":\"0x478821eeeb2b7699442dc19b5029f918f650448cb0655b88348a167ea856efb8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a995dfc29d1c157443f29c033087d3507491e1ddf8d5e47ca193bd316117e06b\",\"dweb:/ipfs/QmZUWhVMi71xkQeJFuvMjAsyt6vR6j98XxdsB94ApgBkVW\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/SFraxOracle.sol\":{\"keccak256\":\"0x4d959a249f385f90a40f1a7a0adf2193c4cecdc2225959c3971fd952ba210b7f\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://b4e4e044f20a69b00d02380256a677e4bb45b128effe28fb2e50f9237d0196f9\",\"dweb:/ipfs/QmTNZYWnrquAWNSZNjvyiAM8si8oFSTnu8raWBQZsop4Ls\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of FRAX for sFrax"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"SFraxOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of FRAX for 1 sFrax"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of sFrax","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/SFraxOracle.sol:SFraxOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/SFraxOracle.sol:SFraxOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/SFraxOracle.sol:SFraxOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/SFraxOracle.sol:SFraxOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/SFraxOracle.sol:SFraxOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020012000000000002000000000301001900000060033002700000021b0330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003c80000413d000000000201043b000000e002200270000002230020009c000000590000a13d000002240020009c0000006c0000a13d000002250020009c000000d50000a13d000002260020009c0000016e0000613d000002270020009c000001790000613d000002280020009c000003c80000c13d0000000001000416000000000001004b000003c80000c13d086506ea0000040f000001720000013d0000000002000416000000000002004b000003c80000c13d0000001f023000390000021c022001970000010002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000001000500003900000005064002100000010006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003c80000413d000001000100043d0000021d0010009c000003c80000213d000001200400043d0000021d0040009c000003c80000213d000001400500043d0000021d0050009c000003c80000213d000001e00600043d0000021d0060009c000003c80000213d000001c00700043d000001a00800043d000001800a00043d000001600300043d0000021e0230012a000002000900043d000000000020041b0000021f0030009c000001c20000213d00000000000a004b000001c40000613d000001d90000013d000002300020009c000000ac0000213d000002360020009c000000e40000213d000002390020009c000001800000613d0000023a0020009c000003c80000c13d0000000001000416000000000001004b000003c80000c13d0000000001000412001000000001001d000f00200000003d000080050100003900000044030000390000000004000415000000100440008a000001b30000013d0000022b0020009c000001250000213d0000022e0020009c000001850000613d0000022f0020009c000003c80000c13d0000000001000416000000000001004b000003c80000c13d0000000301000039000000000101041a000800000001001d0000024101000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000242011001c70000800b02000039086508600000040f00000001002001900000056b0000613d000000000301043b000000080130006c000001f20000413d0000000102000039000000000202041a000000010220008a000000000012004b0000014c0000813d000600000003001d000000400200043d00000243010000410000000001120436000700000001001d000800000002001d0000000401200039000002440200004100000000002104350000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c000002840000c13d0000000003000031000000200030008c00000020040000390000000004034019000002b00000013d000002310020009c0000014e0000213d000002340020009c000001940000613d000002350020009c000003c80000c13d000000240030008c000003c80000413d0000000002000416000000000002004b000003c80000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025001000041000000a00010043f0000008001000039086507540000040f0000000401000039000000000501041a00000000010004140000021b0010009c0000021b01008041000000c0011002100000023f011001c70000800d020000390000000303000039000002510400004100000008060000290865085b0000040f0000000100200190000003c80000613d00000008010000290000000402000039000000000012041b0000000001000019000008660001042e000002290020009c0000019f0000613d0000022a0020009c000003c80000c13d0000000001000416000000000001004b000003c80000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000001b30000013d000002370020009c000001a40000613d000002380020009c000003c80000c13d000000240030008c000003c80000413d0000000002000416000000000002004b000003c80000c13d0000000401100370000000000101043b0000021d0010009c000003c80000213d000800000001001d0000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000101043b000000080110014f000000400200043d0000021d00100198000002430000c13d00000243010000410000000001120436000700000001001d000800000002001d0000000401200039000002440200004100000000002104350000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c000002ec0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a000029000003190000013d0000022c0020009c000001a90000613d0000022d0020009c000003c80000c13d000000440030008c000003c80000413d0000000002000416000000000002004b000003c80000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000023e01000041000000a00010043f0000008001000039086507540000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b00000000010004140000021b0010009c0000021b01008041000000c0011002100000023f011001c70000800d0200003900000240040000410865085b0000040f0000000100200190000003c80000613d0000000001000019000008660001042e000002320020009c000001ba0000613d000002330020009c000003c80000c13d000000440030008c000003c80000413d0000000002000416000000000002004b000003c80000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000024c01000041000000a00010043f0000008001000039086507540000040f00000007010000290000021e0610012a000000000500041a000000000060041b0000021f0010009c000001d70000213d000000080000006b000001d90000c13d000001f80000013d0000000001000416000000000001004b000003c80000c13d086506630000040f000000400200043d00000000001204350000021b0020009c0000021b0200804100000040012002100000023b011001c7000008660001042e0000000001000416000000000001004b000003c80000c13d000000000100041a000000800010043f0000023c01000041000008660001042e0000000001000416000000000001004b000003c80000c13d0000000101000039000001be0000013d0000000001000416000000000001004b000003c80000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001e10000c13d000000010110018f00000000001404350000021b0040009c0000021b0400804100000040014002100000023b011001c7000008660001042e0000000001000416000000000001004b000003c80000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001b30000013d0000000001000416000000000001004b000003c80000c13d0000000301000039000001be0000013d0000000001000416000000000001004b000003c80000c13d0000000401000039000001be0000013d0000000001000416000000000001004b000003c80000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a00000005044002100000023d020000410865083d0000040f0000021d01100197000000800010043f0000023c01000041000008660001042e0000000001000416000000000001004b000003c80000c13d0000000201000039000000000101041a000000800010043f0000023c01000041000008660001042e00000000000a004b000001d90000613d0000000003000415000000120330008a0000000503300210000000000008004b000001ce0000613d0000000003000415000000110330008a0000000503300210000000000007004b000002110000c13d00000000000a004b0000000002000019000000010200c0390000000503300270000000000302001f000002110000613d000000400100043d0000022102000041000001db0000013d000000080000006b000001f80000c13d000000400100043d0000024d0200004100000000002104350000021b0010009c0000021b01008041000000400110021000000222011001c700000867000104300000000301000039000000000101041a000800000001001d0000024101000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000242011001c70000800b02000039086508600000040f00000001002001900000056b0000613d000000000101043b000000080210006c0000024a0000813d000002550100004100000000001004350000001101000039000000040010043f000002460100004100000867000104300000000101000039000000000701041a000000400100043d000000080200002900000000002104350000021b0010009c0000021b01008041000000400110021000000000020004140000021b0020009c0000021b02008041000000c002200210000000000112019f0000024e011001c70000800d0200003900000004030000390000024f040000410865085b0000040f0000000100200190000003c80000613d00000008010000290000000102000039000000000012041b0000000001000019000008660001042e000100000001001d000600000004001d000700000005001d000800000006001d000400000007001d000300000008001d000500000009001d00020000000a001d086506580000040f0000000601000029086506580000040f0000000701000029086506580000040f0000000801000029086506580000040f0000000102000029000000800020043f0000000603000029000000a00030043f0000000705000029000000c00050043f00000001010000390000000204000029000000000041041b00000002010000390000000304000029000000000041041b00000003010000390000000404000029000000000041041b00000004010000390000000504000029000000000041041b0000000804000029000000e00040043f0000014000000443000001600020044300000020020000390000018000200443000001a0003004430000004003000039000001c000300443000001e000500443000000600300003900000200003004430000022000400443000001000020044300000120001004430000022001000041000008660001042e000002520100004100000000001204350000021b0020009c0000021b02008041000000400120021000000222011001c700000867000104300000000201000039000000000101041a000000000001004b0000000003000019000002570000c13d000002440230012a000000000012001a000001f20000413d000000000112001a000000400400043d000002640000c13d00000000010000190000018d0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001f20000c13d000000000004004b00000000030000190000024f0000613d00000000032400a900000000044300d9000000000024004b000001f20000c13d0000024f0000013d000600000001001d00000243010000410000000001140436000700000001001d000800000004001d0000000401400039000002440200004100000000002104350000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c0000038f0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003bb0000013d00000008030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000029e0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000029a0000c13d000000000005004b000002ad0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000035f0000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000002470010009c000004cd0000213d0000000100200190000004cd0000c13d000000400010043f000000200030008c000003c80000413d0000000301000039000000000101041a000700000001001d00000008010000290000000001010433000800000001001d0000024101000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000242011001c70000800b02000039086508600000040f00000001002001900000056b0000613d000000000101043b000000070210006c0000000606000029000001f20000413d0000000201000039000000000101041a000000000001004b0000000003000019000004350000c13d000002440230012a000000000012001a000001f20000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000001f20000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004420000c13d000000400100043d0000024b02000041000001db0000013d00000008030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000080a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000003070000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000003030000c13d000000000005004b000003160000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000036e0000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002470020009c000004cd0000213d0000000100100190000004cd0000c13d000000400020043f000000200030008c000003c80000413d000700000002001d00000000010a0433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000003ca0000c13d000002530100004100000007020000290000000001120436000500000001001d0000023d010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d00000007020000290000000402200039000000000101043b0000021d0110019700000000001204350000023d010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c0000049a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004c60000013d000000400200043d0000001f0430018f00000005053002720000036b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003670000c13d000000000004004b000003890000613d0000037c0000013d000000400200043d0000001f0430018f00000005053002720000037a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003760000c13d000000000004004b000003890000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f000008670001043000000008030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003a90000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000003a50000c13d000000000005004b000003b80000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004200000613d0000001f01400039000000600110018f0000000804100029000000000014004b00000000010000190000000101004039000002470040009c000004cd0000213d0000000100100190000004cd0000c13d000000400040043f000000200030008c0000042f0000813d000000000100001900000867000104300000000301000039000000000101041a000700000001001d0000024101000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000242011001c70000800b02000039086508600000040f00000001002001900000056b0000613d000000000101043b000000070210006c000001f20000413d0000000201000039000000000101041a000000000001004b0000000003000019000004d30000c13d000002440230012a000000000012001a000001f20000413d000700000012001d000000400200043d0000025301000041000500000002001d0000000001120436000400000001001d0000023d010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d00000001002001900000056b0000613d00000005020000290000000402200039000000000101043b0000021d0110019700000000001204350000023d010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c000005110000c13d0000000003000031000000200030008c000000200400003900000000040340190000053d0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000042c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004280000c13d000000000004004b000003890000613d0000037d0000013d00000008010000290000000001010433000000060010006c000000000100001900000001010020390000018d0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001f20000c13d000000000004004b0000000003000019000002d70000613d00000000032400a900000000044300d9000000000024004b000001f20000c13d000002d70000013d0000023d010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000101043b000002480200004100000000002004390000021d01100197000800000001001d000000040010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000249011001c70000800202000039086508600000040f00000001002001900000056b0000613d000000000101043b000000000001004b000003c80000613d000000400200043d0000024a01000041000700000002001d00000000001204350000023d010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d00000007020000290000000402200039000000000101043b0000021d01100197000000000012043500000000010004140000000802000029000000040020008c0000048f0000613d00000007020000290000021b0020009c0000021b0200804100000040022002100000021b0010009c0000021b01008041000000c001100210000000000121019f00000246011001c700000008020000290865085b0000040f000000000301001900000060033002700000021b0030019d0000000100200190000005c90000613d0000000701000029000002470010009c000004cd0000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001430000013d00000007030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004b40000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004b00000c13d000000000005004b000004c30000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005020000613d0000001f01400039000000600110018f00000007020000290000000001210019000500000001001d000002470010009c000004e00000a13d000002550100004100000000001004350000004101000039000000040010043f00000246010000410000086700010430000000000300041a00000000041300a900000000051400d9000000000035004b000001f20000c13d000000000004004b0000000003000019000003e00000613d00000000032400a900000000044300d9000000000024004b000001f20000c13d000003e00000013d0000000501000029000000400010043f000000200030008c000003c80000413d0000000001020433000400000001001d000002540100004100000005020000290000000001120436000700000001001d0000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c0000056c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005980000013d000000400200043d0000001f0430018f00000005053002720000050e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000050a0000c13d000000000004004b000003890000613d0000037c0000013d00000005030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000052b0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005270000c13d000000000005004b0000053a0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005ab0000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002470020009c000004cd0000213d0000000100100190000004cd0000c13d0000000801000029000000400010043f000000200030008c000003c80000413d00000005010000290000000001010433000400000001001d000002540100004100000008020000290000000001120436000500000001001d0000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f00000001002001900000056b0000613d000000000201043b00000000010004140000021d02200197000000040020008c000005d90000c13d0000000003000031000000200030008c00000020040000390000000004034019000006050000013d000000000001042f00000005030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000222011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005860000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005820000c13d000000000005004b000005950000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005ba0000613d0000001f01400039000000600110018f0000000501100029000002470010009c000004cd0000213d000000400010043f000000200030008c000003c80000413d00000005020000290000000003020433000000ff0030008c000003c80000213d000000040200002900000008022000b9000000080000006b000006180000c13d0000004d0030008c000001f20000213d0000061d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005b70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005b30000c13d000000000004004b000003890000613d0000037d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005c60000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005c20000c13d000000000004004b000003890000613d0000037d0000013d0000021b03300197000000400200043d0000001f0430018f0000000505300272000005d60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d20000c13d000000000004004b000003890000613d0000037c0000013d00000008030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000222011001c7086508600000040f000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005f30000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005ef0000c13d000000000005004b000006020000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006310000613d0000001f01400039000000600110018f0000000801100029000002470010009c000004cd0000213d000000400010043f000000200030008c000003c80000413d00000008020000290000000003020433000000ff0030008c000003c80000213d000000040200002900000007022000b9000000070000006b000006400000c13d0000004d0030008c000001f20000213d000006450000013d0000004d0030008c000001f20000213d00000008042000fa000000040040006c000001f20000c13d000000000003004b000006470000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006210000c13d000600000006001d000000000006004b000006470000c13d000002550100004100000000001004350000001201000039000000040010043f00000246010000410000086700010430000000400200043d0000001f0430018f00000005053002720000063d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006390000c13d000000000004004b000003890000613d0000037c0000013d0000004d0030008c000001f20000213d00000007042000fa000000040040006c000001f20000c13d000000000003004b0000064e0000c13d00000006022000fa00000000002104350000021b0010009c0000021b0100804100000040011002100000023b011001c7000008660001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006500000c13d000006280000013d0000021d001001980000065b0000613d000000000001042d000000400100043d000002560200004100000000002104350000021b0010009c0000021b01008041000000400110021000000222011001c700000867000104300002000000000002000000400200043d00000243010000410000000001120436000100000001001d000200000002001d0000000401200039000002440200004100000000002104350000023d01000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f0000000100200190000006c10000613d000000000201043b00000000010004140000021d02200197000000040020008c000006850000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006b20000013d00000002030000290000021b0030009c0000021b0300804100000040033002100000021b0010009c0000021b01008041000000c001100210000000000131019f00000246011001c7086508600000040f000000020a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006a00000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b0000069c0000c13d000000000005004b000006af0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006ca0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002470010009c000006c20000213d0000000100200190000006c20000c13d000000400010043f0000001f0030008c000006c80000a13d00000000010a0433000000000001042d000000000001042f000002550100004100000000001004350000004101000039000000040010043f0000024601000041000008670001043000000000010000190000086700010430000000400200043d0000001f0430018f00000005053002720000000505500210000006d60000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006d20000c13d000000000004004b000006e40000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f000008670001043000010000000000020000000301000039000000000101041a000100000001001d0000024101000041000000000010043900000000010004140000021b0010009c0000021b01008041000000c00110021000000242011001c70000800b02000039086508600000040f00000001002001900000071d0000613d000000000101043b000000010210006c000007170000413d0000000201000039000000000101041a000000000001004b0000070c0000613d000000000300041a00000000041300a900000000051400d9000000000035004b000007170000c13d000000000004004b000007120000613d00000000032400a900000000044300d9000000000024004b0000070d0000613d000007170000013d0000000003000019000002440230012a000000000012001a000007170000413d0000000001120019000000000001042d0000000003000019000002440230012a000000000012001a000007170000413d000007100000013d000002550100004100000000001004350000001101000039000000040010043f00000246010000410000086700010430000000000001042f0000000043010434000000000132043600000257063001970000001f0530018f000000000014004b000007340000813d000000000006004b000007300000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000072a0000c13d000000000005004b0000074e0000613d0000000007010019000007440000013d000000000006004b000007400000613d000000200760008a00000257077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000073c0000c13d000000000005004b0000074e0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000257023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002580200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025704a001970000001f03a0018f0000006401500039000000000012004b000007780000813d000000000004004b000007740000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000076e0000c13d000000000003004b000007920000613d0000000005010019000007880000013d000000000004004b000007840000613d000000200540008a0000025705500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007800000c13d000000000003004b000007920000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000023d010000410000000000100439000000000100041200000004001004430000006001000039000000240010044300000000010004140000021b0010009c0000021b01008041000000c00110021000000245011001c70000800502000039086508600000040f0000000100200190000007fc0000613d000000000201043b00000000010004140000021d02200197000000040020008c000000040a000029000007b00000c13d0000000003000031000000200030008c00000020040000390000000004034019000007e40000013d00000002030000290000001f0330003900000257033001970000021b00a0009c0000021b0400004100000000040a4019000000400440021000000064033000390000021b0030009c0000021b030080410000006003300210000000000343019f0000021b0010009c0000021b01008041000000c001100210000000000131019f086508600000040f000000040a000029000000000301001900000060033002700000021b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007d20000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007ce0000c13d000000000005004b000007e10000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000081c0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002470040009c000007fd0000213d0000000100100190000007fd0000c13d000000400040043f0000001f0030008c000007fa0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000007fa0000c13d000000000001004b000008030000613d000000000001042d00000000010000190000086700010430000000000001042f000002550100004100000000001004350000004101000039000000040010043f000002460100004100000867000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025901000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d0865071e0000040f000000040200002900000000012100490000021b0010009c0000021b010080410000021b0020009c0000021b0200804100000060011002100000004002200210000000000121019f0000086700010430000000400200043d0000001f0430018f00000005053002720000000505500210000008280000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008240000c13d000000000004004b000008360000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000021b0020009c0000021b020080410000004002200210000000000112019f0000086700010430000000000001042f00000000050100190000000000200439000000050030008c0000084b0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008430000413d0000021b0030009c0000021b03008041000000600130021000000000020004140000021b0020009c0000021b02008041000000c002200210000000000112019f0000025a011001c70000000002050019086508600000040f00000001002001900000085a0000613d000000000101043b000000000001042d000000000001042f0000085e002104210000000102000039000000000001042d0000000002000019000000000001042d00000863002104230000000102000039000000000001042d0000000002000019000000000001042d0000086500000432000008660001042e0000086700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000140000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d3000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000007a2d13a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100025b3b421df493b640940795c35ab65b91f838d435828651feeecb59656a","factoryDependencies":{}}},"contracts/oracles/SFrxETHOracle.sol":{"SFrxETHOracle":{"abi":[{"inputs":[{"internalType":"address","name":"_sfrxEthFraxOracle","type":"address"},{"internalType":"address","name":"_sfrxETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadPriceData","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[],"name":"PriceDifferenceExceeded","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"inputs":[],"name":"ZeroValueNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxAllowedPriceDifference","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxAllowedPriceDifference","type":"uint256"}],"name":"MaxAllowedPriceDifferenceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"SFRXETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SFRXETH_FRAX_ORACLE","outputs":[{"internalType":"contract ISfrxEthFraxOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_acm","type":"address"},{"internalType":"uint256","name":"_maxAllowedPriceDifference","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAllowedPriceDifference","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAllowedPriceDifference","type":"uint256"}],"name":"setMaxAllowedPriceDifference","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sfrxEthFraxOracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sfrxETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadPriceData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceDifferenceExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMaxAllowedPriceDifference\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxAllowedPriceDifference\",\"type\":\"uint256\"}],\"name\":\"MaxAllowedPriceDifferenceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SFRXETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SFRXETH_FRAX_ORACLE\",\"outputs\":[{\"internalType\":\"contract ISfrxEthFraxOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_acm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxAllowedPriceDifference\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAllowedPriceDifference\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxAllowedPriceDifference\",\"type\":\"uint256\"}],\"name\":\"setMaxAllowedPriceDifference\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:error\":\"ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address\",\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad dataZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zeroPriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`\",\"params\":{\"asset\":\"Address of the sfrxETH token\"},\"returns\":{\"_0\":\"price The price scaled by 1e18\"}},\"initialize(address,uint256)\":{\"custom:error\":\"ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\",\"params\":{\"_acm\":\"Address of the access control manager contract\",\"_maxAllowedPriceDifference\":\"Maximum allowed price difference\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setMaxAllowedPriceDifference(uint256)\":{\"custom:error\":\"ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero\",\"params\":{\"_maxAllowedPriceDifference\":\"Maximum allowed price difference\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"SFRXETH\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"SFRXETH_FRAX_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"SFrxETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"BadPriceData()\":[{\"notice\":\"Thrown if the price data is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"PriceDifferenceExceeded()\":[{\"notice\":\"Thrown if the price difference exceeds the allowed limit\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}],\"ZeroValueNotAllowed()\":[{\"notice\":\"Thrown if the supplied value is 0 where it is not allowed\"}]},\"events\":{\"MaxAllowedPriceDifferenceUpdated(uint256,uint256)\":{\"notice\":\"Emits when the maximum allowed price difference is updated\"},\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"}},\"kind\":\"user\",\"methods\":{\"SFRXETH()\":{\"notice\":\"Address of sfrxETH\"},\"SFRXETH_FRAX_ORACLE()\":{\"notice\":\"Address of SfrxEthFraxOracle\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Fetches the USD price of sfrxETH\"},\"initialize(address,uint256)\":{\"notice\":\"Sets the contracts required to fetch prices\"},\"maxAllowedPriceDifference()\":{\"notice\":\"Maximum allowed price difference\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setMaxAllowedPriceDifference(uint256)\":{\"notice\":\"Sets the maximum allowed price difference\"}},\"notice\":\"This oracle fetches the price of sfrxETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/SFrxETHOracle.sol\":\"SFrxETHOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ISfrxEthFraxOracle.sol\":{\"keccak256\":\"0x1444fbcfe658b985041e7ca5da6cce92fd143ca46d9793316ab2ef542fbde87a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://267911fa7bdbc36b71265c3c42fc0b17aa6363dd9145696a1b155e086f19bd07\",\"dweb:/ipfs/QmbYVGQmGrGzWra9mqDbMe97V1HmR5JdmGtUrbsptnQQaj\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/SFrxETHOracle.sol\":{\"keccak256\":\"0xea4740b6629d3cb39eb9652d51b8e02a58cce3620142625881c367b3e484fd92\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://3718c2934f16803a5283551332169d9c90cf2c0dc3158fb8f1fd523936bb7603\",\"dweb:/ipfs/QmcFbQLa99LG8ud3zasGQ8b42YVzYqDq9kk6Jxh2QmfBaJ\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:error":"ZeroAddressNotAllowed is thrown when `_sfrxEthFraxOracle` or `_sfrxETH` are the zero address","custom:oz-upgrades-unsafe-allow":"constructor"},"getPrice(address)":{"custom:error":"InvalidTokenAddress is thrown when the `asset` is not the sfrxETH token (`SFRXETH`)BadPriceData is thrown if the `SFRXETH_FRAX_ORACLE` oracle informs it has bad dataZeroValueNotAllowed is thrown if the prices (low or high, in USD) are zeroPriceDifferenceExceeded is thrown if priceHigh/priceLow is greater than `maxAllowedPriceDifference`","params":{"asset":"Address of the sfrxETH token"},"returns":{"_0":"price The price scaled by 1e18"}},"initialize(address,uint256)":{"custom:error":"ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero","params":{"_acm":"Address of the access control manager contract","_maxAllowedPriceDifference":"Maximum allowed price difference"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setMaxAllowedPriceDifference(uint256)":{"custom:error":"ZeroValueNotAllowed is thrown if `_maxAllowedPriceDifference` is zero","params":{"_maxAllowedPriceDifference":"Maximum allowed price difference"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"SFRXETH":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"SFRXETH_FRAX_ORACLE":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"title":"SFrxETHOracle","version":1},"userdoc":{"errors":{"BadPriceData()":[{"notice":"Thrown if the price data is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"PriceDifferenceExceeded()":[{"notice":"Thrown if the price difference exceeds the allowed limit"}],"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}],"ZeroValueNotAllowed()":[{"notice":"Thrown if the supplied value is 0 where it is not allowed"}]},"events":{"MaxAllowedPriceDifferenceUpdated(uint256,uint256)":{"notice":"Emits when the maximum allowed price difference is updated"},"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"}},"kind":"user","methods":{"SFRXETH()":{"notice":"Address of sfrxETH"},"SFRXETH_FRAX_ORACLE()":{"notice":"Address of SfrxEthFraxOracle"},"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"constructor":{"notice":"Constructor for the implementation contract."},"getPrice(address)":{"notice":"Fetches the USD price of sfrxETH"},"initialize(address,uint256)":{"notice":"Sets the contracts required to fetch prices"},"maxAllowedPriceDifference()":{"notice":"Maximum allowed price difference"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setMaxAllowedPriceDifference(uint256)":{"notice":"Sets the maximum allowed price difference"}},"notice":"This oracle fetches the price of sfrxETH","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":7112,"contract":"contracts/oracles/SFrxETHOracle.sol:SFrxETHOracle","label":"maxAllowedPriceDifference","offset":0,"slot":"201","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0001000000000002000b0000000000020000000003010019000000600330027000000104033001970000000100200190000000410000c13d0000008002000039000000400020043f000000040030008c000003760000413d000000000201043b000000e002200270000001100020009c000000950000a13d000001110020009c000000a80000a13d000001120020009c000000c50000213d000001150020009c000000e60000613d000001160020009c000003760000c13d000000240030008c000003760000413d0000000002000416000000000002004b000003760000c13d0000000401100370000000000501043b000000e001000039000000400010043f0000002501000039000000800010043f0000012502000041000000a00020043f0000012602000041000000c00020043f0000009702000039000000000202041a0000012703000041000000e00030043f0000000006000411000000e40060043f0000004003000039000001040030043f000001240010043f000000a00100043d000001440010043f000001640100043d0000012801100197000000c00300043d0000012903300197000000000113019f000001640010043f000001690000043f00000000010004140000010602200197000000040020008c000001bf0000c13d0000000003000031000000200030008c00000020040000390000000004034019000001e80000013d0000000002000416000000000002004b000003760000c13d0000001f023000390000010502200197000000c002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000530000613d000000c005000039000000c006400039000000000701034f000000007807043c0000000005850436000000000065004b0000004f0000c13d000000000002004b000000610000613d000000000141034f0000000302200210000000c004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000400030008c000003760000413d000000c00100043d000001060010009c000003760000213d000000e00200043d000001060020009c000003760000213d000000000001004b0000019a0000613d000000000002004b0000019a0000613d000000800010043f000000a00020043f000000000300041a0000ff0000300190000001ab0000c13d000000ff0430018f000000ff0040008c0000008b0000613d000000ff013001bf000000000010041b000000ff01000039000000400200043d0000000000120435000001040020009c000001040200804100000040012002100000000002000414000001040020009c0000010402008041000000c002200210000000000112019f0000010b011001c70000800d0200003900000001030000390000010c04000041040a04000000040f0000000100200190000003760000613d000000a00200043d000000800100043d0000014000000443000001600010044300000020010000390000018000100443000001a0002004430000010000100443000000020100003900000120001004430000010d010000410000040b0001042e0000011a0020009c000000b30000213d0000011e0020009c000001050000613d0000011f0020009c000001220000613d000001200020009c000003760000c13d0000000001000416000000000001004b000003760000c13d0000000001000412000900000001001d000800200000003d000080050100003900000044030000390000000004000415000000090440008a0000012c0000013d000001170020009c000001300000613d000001180020009c000001350000613d000001190020009c000003760000c13d0000000001000416000000000001004b000003760000c13d0000009701000039000001950000013d0000011b0020009c0000013d0000613d0000011c0020009c000001780000613d0000011d0020009c000003760000c13d0000000001000416000000000001004b000003760000c13d0000006501000039000000000101041a00000106021001970000000001000411000000000012004b0000020c0000c13d040a03970000040f00000000010000190000040b0001042e000001130020009c000001910000613d000001140020009c000003760000c13d000000240030008c000003760000413d0000000002000416000000000002004b000003760000c13d0000000401100370000000000601043b000001060060009c000003760000213d0000003301000039000000000101041a00000106051001970000000001000411000000000015004b000001a20000c13d0000006501000039000000000201041a0000012102200197000000000262019f000000000021041b0000000001000414000001040010009c0000010401008041000000c00110021000000122011001c70000800d02000039000000030300003900000123040000410000029b0000013d000000440030008c000003760000413d0000000002000416000000000002004b000003760000c13d0000000402100370000000000402043b000001060040009c000003760000213d0000000005000415000000070550008a00000005055002100000002401100370000000000201043b000000000300041a0000ff0001300190000002180000c13d0000000005000415000000060550008a0000000505500210000000ff00300190000002180000c13d000001330130019700000101011001bf0000000003000019000000000010041b000000000002004b000002400000c13d000000400100043d0000012d020000410000019c0000013d000000240030008c000003760000413d0000000002000416000000000002004b000003760000c13d0000000401100370000000000101043b000001060010009c000003760000213d0000003302000039000000000202041a00000106022001970000000003000411000000000032004b000001a20000c13d000000000001004b0000028b0000c13d0000010901000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000013701000041000000c40010043f0000013601000041000000e40010043f0000013c010000410000040c000104300000000001000416000000000001004b000003760000c13d0000000001000412000b00000001001d000a00000000001d0000800501000039000000440300003900000000040004150000000b0440008a00000005044002100000013d02000041040a03e70000040f000001960000013d0000000001000416000000000001004b000003760000c13d0000003301000039000001950000013d0000000001000416000000000001004b000003760000c13d000000c901000039000000000101041a000000800010043f00000124010000410000040b0001042e000000240030008c000003760000413d0000000002000416000000000002004b000003760000c13d0000000401100370000000000101043b000001060010009c000003760000213d000500000001001d0000013d01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000001040010009c0000010401008041000000c0011002100000013e011001c70000800502000039040a04050000040f00000001002001900000026a0000613d000000000101043b000000050110014f000000400200043d0000010600100198000002a00000c13d0000014001000041000500000002001d0000000001120436000400000001001d0000013d0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001040010009c0000010401008041000000c0011002100000013e011001c70000800502000039040a04050000040f00000001002001900000026a0000613d000000000201043b00000000010004140000010602200197000000040020008c000002d30000c13d0000000003000031000000600030008c00000060040000390000000004034019000000050b000029000003010000013d0000000001000416000000000001004b000003760000c13d0000003301000039000000000201041a00000106052001970000000003000411000000000035004b000001a20000c13d0000006503000039000000000403041a0000012104400197000000000043041b0000012102200197000000000021041b0000000001000414000001040010009c0000010401008041000000c00110021000000122011001c70000800d020000390000000303000039000001340400004100000000060000190000029b0000013d0000000001000416000000000001004b000003760000c13d0000006501000039000000000101041a0000010601100197000000800010043f00000124010000410000040b0001042e000000400100043d0000010e020000410000000000210435000001040010009c000001040100804100000040011002100000010f011001c70000040c000104300000010901000041000000800010043f0000002001000039000000840010043f000000a40010043f0000014a01000041000000c40010043f0000014b010000410000040c00010430000000400100043d00000064021000390000010703000041000000000032043500000044021000390000010803000041000000000032043500000024021000390000002703000039000000000032043500000109020000410000000000210435000000040210003900000020030000390000000000320435000001040010009c000001040100804100000040011002100000010a011001c70000040c00010430000500000005001d000001040010009c0000010401008041000000c0011002100000012a011001c7040a04050000040f000000e009000039000000000301001900000060033002700000010403300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001d40000613d000000000701034f000000007807043c0000000009890436000001000090008c000001d00000c13d000000000005004b000001e30000613d0000000506600210000000000761034f0000000305500210000000e006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000026b0000613d000000050500002900000000060004110000001f01400039000000600110018f000000e004100039000000400040043f000000200030008c000003760000413d000000e00200043d000000000002004b0000000003000019000000010300c039000000000032004b000003760000c13d000000000002004b000002a70000c13d0000012e020000410000000000240435000000e402100039000000000062043500000104021001bf0000000003000410000000000032043500000124021000390000006003000039000000000032043500000144021000390000008001000039000500000004001d040a03b00000040f000000050200002900000000012100490000004002200210000001040010009c00000104010080410000006001100210000000000121019f0000040c000104300000010901000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000013a01000041000000c40010043f0000013b01000041000000e40010043f0000013c010000410000040c00010430000500000005001d000100000001001d000300000003001d000400000004001d000200000002001d0000012f010000410000000000100439000000000100041000000004001004430000000001000414000001040010009c0000010401008041000000c00110021000000130011001c70000800202000039040a04050000040f00000001002001900000026a0000613d000000000101043b000000000001004b000002ae0000c13d0000000303000029000000ff0130018f000000010010008c0000000001000019000000010100603900000005020000290000000502200270000000000201001f000002b10000c13d000000010000006b00000002020000290000000404000029000000fc0000613d0000014d01300197000000010300003900000001011001bf000000000010041b000000000002004b000001020000613d0000ff0000100190000002600000613d000500000003001d000200000002001d0000006501000039000000000201041a0000012102200197000000000021041b000000000100041100000106061001970000003301000039000000000201041a0000012103200197000000000363019f000000000031041b0000000001000414000400000004001d0000010605200197000001040010009c0000010401008041000000c00110021000000122011001c70000800d0200003900000003030000390000013404000041040a04000000040f00000004050000290000000100200190000003760000613d000000000100041a0000ff00001001900000033a0000c13d000000400100043d00000064021000390000013803000041000000000032043500000044021000390000013903000041000000000032043500000024021000390000002b03000039000001b40000013d000000000001042f000000400200043d0000001f0430018f00000005053002720000000505500210000002770000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002730000c13d000000000004004b000002850000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001040020009c00000104020080410000004002200210000000000112019f0000040c000104300000009702000039000000000302041a0000012104300197000000000414019f000000000042041b0000010602300197000000800020043f000000a00010043f0000000001000414000001040010009c0000010401008041000000c0011002100000014c011001c70000800d0200003900000001030000390000013504000041040a04000000040f0000000100200190000003760000613d00000000010000190000040b0001042e0000013f010000410000000000120435000001040020009c000001040200804100000040012002100000010f011001c70000040c00010430000000000005004b000002bb0000c13d0000012d01000041000000000014043500000040014002100000010f011001c70000040c0001043000000005010000290000000501100270000000000100001f000000400100043d00000064021000390000013103000041000000000032043500000044021000390000013203000041000000000032043500000024021000390000002e03000039000001b40000013d000000c902000039000000000202041a000000000024043500000100011001bf000000000051043500000040014002100000000002000414000001040020009c0000010402008041000000c002200210000000000112019f0000012b011001c70000800d0200003900000001030000390000012c04000041000500000005001d040a04000000040f00000005010000290000000100200190000003760000613d000000c902000039000000000012041b00000000010000190000040b0001042e0000000503000029000001040030009c00000104030080410000004003300210000001040010009c0000010401008041000000c001100210000000000131019f0000010f011001c7040a04050000040f000000050b000029000000000301001900000060033002700000010403300197000000600030008c000000600400003900000000040340190000001f0540018f0000000506400272000002ef0000613d000000050760021000000000077b0019000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000079004b000002eb0000c13d000000000005004b000002fe0000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000032b0000613d0000001f01400039000000e00210018f0000000001b20019000000000021004b00000000020000190000000102004039000001410010009c000003250000213d0000000100200190000003250000c13d000000400010043f000000600030008c000003760000413d00000000020b0433000000000002004b0000000003000019000000010300c039000000000032004b000003760000c13d000000000002004b000003780000c13d00000004020000290000000003020433000000000003004b0000031f0000613d000000050200002900000040022000390000000004020433000000000004004b0000037a0000c13d000001480100004100000000001004350000001201000039000000040010043f00000149010000410000040c00010430000001480100004100000000001004350000004101000039000000040010043f00000149010000410000040c00010430000000400200043d0000001f0430018f00000005053002720000000505500210000003370000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003330000c13d000000000004004b000002790000c13d000002850000013d000300000001001d000000400100043d000000000005004b000003470000c13d00000064021000390000013603000041000000000032043500000044021000390000013703000041000000000032043500000024021000390000002503000039000001b40000013d0000009702000039000000000302041a0000012104300197000000000454019f000000000042041b0000002002100039000000000052043500000106023001970000000000210435000001040010009c000001040100804100000040011002100000000002000414000001040020009c0000010402008041000000c002200210000000000112019f0000012b011001c70000800d0200003900000001030000390000013504000041040a04000000040f0000000100200190000003760000613d000000c9010000390000000202000029000000000021041b000000050000006b0000029e0000c13d0000ff010100008a000000030110017f000000000010041b000000400100043d00000001030000390000000000310435000001040010009c000001040100804100000040011002100000000002000414000001040020009c0000010402008041000000c002200210000000000112019f0000010b011001c70000800d020000390000010c040000410000029b0000013d00000000010000190000040c0001043000000142020000410000019c0000013d000001040010009c000001040200004100000000020140190000004002200210000001430030009c0000038e0000213d000001440040009c0000038e0000813d0000014303300129000001430440012900000145053000d100000000054500d9000000c906000039000000000606041a000000000065004b000003920000a13d000001470300004100000000003104350000010f012001c70000040c000104300000012d0300004100000000003104350000010f012001c70000040c0001043000000000033400190000000103300270000000000031043500000146012001c70000040b0001042e0000006502000039000000000302041a0000012103300197000000000032041b00000106061001970000003301000039000000000201041a0000012103200197000000000363019f000000000031041b00000000010004140000010605200197000001040010009c0000010401008041000000c00110021000000122011001c70000800d0200003900000003030000390000013404000041040a04000000040f0000000100200190000003ae0000613d000000000001042d00000000010000190000040c00010430000000004301043400000000013204360000014e063001970000001f0530018f000000000014004b000003c60000813d000000000006004b000003c20000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003bc0000c13d000000000005004b000003e00000613d0000000007010019000003d60000013d000000000006004b000003d20000613d000000200760008a0000014e077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000003ce0000c13d000000000005004b000003e00000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f033000390000014e023001970000000001210019000000000001042d000000000001042f00000000050100190000000000200439000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b000003ea0000413d000001040030009c000001040300804100000060013002100000000002000414000001040020009c0000010402008041000000c002200210000000000112019f0000014f011001c70000000002050019040a04050000040f0000000100200190000003ff0000613d000000000101043b000000000001042d000000000001042f00000403002104210000000102000039000000000001042d0000000002000019000000000001042d00000408002104230000000102000039000000000001042d0000000002000019000000000001042d0000040a000004320000040b0001042e0000040c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff616c697a696e6700000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e69746908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249800000002000000000000000000000000000000c00000010000000000000000008579befe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000cd6dc68600000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000cd6dc68700000000000000000000000000000000000000000000000000000000d5445950000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000009fd1944f00000000000000000000000000000000000000000000000000000000b4a0bdf30000000000000000000000000000000000000000000000000000000041976e080000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000000e32cb8600000000000000000000000000000000000000000000000000000000127cac450000000000000000000000000000000000000000000000000000000035da603dffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270000000000000000000000000000000000000000200000008000000000000000007365744d6178416c6c6f7765645072696365446966666572656e63652875696e743235362900000000000000000000000000000000000000000000000000000018c5e8ab000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4000000e0000000000000000002000000000000000000000000000000000000400000000000000000000000008d4d923222e4a17f030a7f3fe695e9e6c13b437df4b3b48c2332f584395aba909cf8540c000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa06472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657200000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000001eb00b0600000000000000000000000000000000000000000000000000000000bd9a548b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffa40e3291000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c097ce7bc90715b34b9f10000000000000000000000000000000000000000000c097ce7bc90715b34b9f10000000010000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000020000000000000000000000000501973da000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000040000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"SFRXETH()":"35da603d","SFRXETH_FRAX_ORACLE()":"127cac45","acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","getPrice(address)":"41976e09","initialize(address,uint256)":"cd6dc687","maxAllowedPriceDifference()":"9fd1944f","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setAccessControlManager(address)":"0e32cb86","setMaxAllowedPriceDifference(uint256)":"d5445950","transferOwnership(address)":"f2fde38b"}},"hash":"010001511d2613765e8361dff16d35d82c96526518ed27dcd60b7c7c1c94bceb","factoryDependencies":{}}},"contracts/oracles/SequencerChainlinkOracle.sol":{"SequencerChainlinkOracle":{"abi":[{"inputs":[{"internalType":"contract AggregatorV3Interface","name":"_sequencer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAccessControlManager","type":"address"},{"indexed":false,"internalType":"address","name":"newAccessControlManager","type":"address"}],"name":"NewAccessControlManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPriceMantissa","type":"uint256"}],"name":"PricePosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"address","name":"feed","type":"address"},{"indexed":false,"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"name":"TokenConfigAdded","type":"event"},{"inputs":[],"name":"GRACE_PERIOD_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessControlManager","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sequencer","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"accessControlManager_","type":"address"}],"name":"setAccessControlManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setDirectPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"internalType":"struct ChainlinkOracle.TokenConfig","name":"tokenConfig","type":"tuple"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"internalType":"struct ChainlinkOracle.TokenConfig[]","name":"tokenConfigs_","type":"tuple[]"}],"name":"setTokenConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenConfigs","outputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"uint256","name":"maxStalePeriod","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"_sequencer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccessControlManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccessControlManager\",\"type\":\"address\"}],\"name\":\"NewAccessControlManager\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousPriceMantissa\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPriceMantissa\",\"type\":\"uint256\"}],\"name\":\"PricePosted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"name\":\"TokenConfigAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GRACE_PERIOD_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencer\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accessControlManager_\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setDirectPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig\",\"name\":\"tokenConfig\",\"type\":\"tuple\"}],\"name\":\"setTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkOracle.TokenConfig[]\",\"name\":\"tokenConfigs_\",\"type\":\"tuple[]\"}],\"name\":\"setTokenConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxStalePeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"params\":{\"_sequencer\":\"L2 sequencer\"}},\"getPrice(address)\":{\"params\":{\"asset\":\"Address of the asset\"},\"returns\":{\"_0\":\"Price in USD from Chainlink or a manually set price for the asset\"}},\"initialize(address)\":{\"params\":{\"accessControlManager_\":\"Address of the access control manager contract\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setAccessControlManager(address)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits NewAccessControlManager event\",\"details\":\"Admin function to set address of AccessControlManager\",\"params\":{\"accessControlManager_\":\"The new address of the AccessControlManager\"}},\"setDirectPrice(address,uint256)\":{\"custom:access\":\"Only Governance\",\"custom:event\":\"Emits PricePosted event on successfully setup of asset price\",\"params\":{\"asset\":\"Asset address\",\"price\":\"Asset price in 18 decimals\"}},\"setTokenConfig((address,address,uint256))\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero\",\"custom:event\":\"Emits TokenConfigAdded event on successfully setting of the token config\",\"params\":{\"tokenConfig\":\"Token config struct\"}},\"setTokenConfigs((address,address,uint256)[])\":{\"custom:access\":\"Only Governance\",\"custom:error\":\"Zero length error thrown, if length of the array in parameter is 0\",\"params\":{\"tokenConfigs_\":\"config array\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"sequencer\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"Sequencer Chain Link Oracle\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized(address,address,string)\":[{\"notice\":\"Thrown when the action is prohibited by AccessControlManager\"}]},\"events\":{\"NewAccessControlManager(address,address)\":{\"notice\":\"Emitted when access control manager contract address is changed\"},\"PricePosted(address,uint256,uint256)\":{\"notice\":\"Emit when a price is manually set\"},\"TokenConfigAdded(address,address,uint256)\":{\"notice\":\"Emit when a token config is added\"}},\"kind\":\"user\",\"methods\":{\"GRACE_PERIOD_TIME()\":{\"notice\":\"L2 Sequencer grace period\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain.\"},\"accessControlManager()\":{\"notice\":\"Returns the address of the access control manager contract\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"getPrice(address)\":{\"notice\":\"Gets the price of a asset from the chainlink oracle\"},\"initialize(address)\":{\"notice\":\"Initializes the owner of the contract\"},\"prices(address)\":{\"notice\":\"Manually set an override price, useful under extenuating conditions such as price feed failure\"},\"sequencer()\":{\"notice\":\"L2 Sequencer feed\"},\"setAccessControlManager(address)\":{\"notice\":\"Sets the address of AccessControlManager\"},\"setDirectPrice(address,uint256)\":{\"notice\":\"Manually set the price of a given asset\"},\"setTokenConfig((address,address,uint256))\":{\"notice\":\"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive\"},\"setTokenConfigs((address,address,uint256)[])\":{\"notice\":\"Add multiple token configs at the same time\"},\"tokenConfigs(address)\":{\"notice\":\"Token config by assets\"}},\"notice\":\"Oracle to fetch price using chainlink oracles on L2s with sequencer\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/SequencerChainlinkOracle.sol\":\"SequencerChainlinkOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75267b14b60dc216d01d596a4008189a6c44d3314e53eded0edb1e757d95be16\",\"dweb:/ipfs/QmQoMaxTRT6V7uQj9USfdQH9jh1crywB9auVjThzUSAbG2\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol\":{\"keccak256\":\"0xfe0fd441c84ac907cabc88db69ef04f6d7532d770c7e6a1dfe6e7d6305debb49\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2d94a5944cd90dd9fb985a3fd225b7b2065745e9a381ada6065c25fb43989e3a\",\"dweb:/ipfs/Qmb3WJHLiqq37EWEDmz1pGVq5fSnr65qC7nCxPsL9rKT5s\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/interfaces/VBep20Interface.sol\":{\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a321e0a5c0c913b127fc2bc19025c8d6e3a3c1f5a9c9e52a4e8e382deab1b349\",\"dweb:/ipfs/QmezcySRTNkHtDBBAh4cN64u2tt9dbYFwiNCSBt74ShisK\"]},\"contracts/oracles/ChainlinkOracle.sol\":{\"keccak256\":\"0x057852418e032dbb6210719170444bf73a4d12be50970570e28623719ea961a4\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f39e2abd97f5269a714da8e6dff2d1074e5d36f545e57785a91f763a3c3c3f01\",\"dweb:/ipfs/QmUAAbJwyxjvh1b45zLBySPVgCd2986UHRtPa6jdyJYSM8\"]},\"contracts/oracles/SequencerChainlinkOracle.sol\":{\"keccak256\":\"0x252aaf3af4a9aba9779d475545ef9a1ecc41ff1202192536cc7128944bb37dc8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://870cf8c4b0130655f75e88eb0fe0d658b03744b7df290afedb4f7cfb49bcd5f0\",\"dweb:/ipfs/Qmbcs87bJqxVdtYoYnz9bGgLwtE3ysrFeCCHzfsHH8yoaV\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","params":{"_sequencer":"L2 sequencer"}},"getPrice(address)":{"params":{"asset":"Address of the asset"},"returns":{"_0":"Price in USD from Chainlink or a manually set price for the asset"}},"initialize(address)":{"params":{"accessControlManager_":"Address of the access control manager contract"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setAccessControlManager(address)":{"custom:access":"Only Governance","custom:event":"Emits NewAccessControlManager event","details":"Admin function to set address of AccessControlManager","params":{"accessControlManager_":"The new address of the AccessControlManager"}},"setDirectPrice(address,uint256)":{"custom:access":"Only Governance","custom:event":"Emits PricePosted event on successfully setup of asset price","params":{"asset":"Asset address","price":"Asset price in 18 decimals"}},"setTokenConfig((address,address,uint256))":{"custom:access":"Only Governance","custom:error":"NotNullAddress error is thrown if asset address is nullNotNullAddress error is thrown if token feed address is nullRange error is thrown if maxStale period of token is not greater than zero","custom:event":"Emits TokenConfigAdded event on successfully setting of the token config","params":{"tokenConfig":"Token config struct"}},"setTokenConfigs((address,address,uint256)[])":{"custom:access":"Only Governance","custom:error":"Zero length error thrown, if length of the array in parameter is 0","params":{"tokenConfigs_":"config array"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"sequencer":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"title":"Sequencer Chain Link Oracle","version":1},"userdoc":{"errors":{"Unauthorized(address,address,string)":[{"notice":"Thrown when the action is prohibited by AccessControlManager"}]},"events":{"NewAccessControlManager(address,address)":{"notice":"Emitted when access control manager contract address is changed"},"PricePosted(address,uint256,uint256)":{"notice":"Emit when a price is manually set"},"TokenConfigAdded(address,address,uint256)":{"notice":"Emit when a token config is added"}},"kind":"user","methods":{"GRACE_PERIOD_TIME()":{"notice":"L2 Sequencer grace period"},"NATIVE_TOKEN_ADDR()":{"notice":"Set this as asset address for native token on each chain. This is the underlying address for vBNB on BNB chain or an underlying asset for a native market on any chain."},"accessControlManager()":{"notice":"Returns the address of the access control manager contract"},"constructor":{"notice":"Contract constructor"},"getPrice(address)":{"notice":"Gets the price of a asset from the chainlink oracle"},"initialize(address)":{"notice":"Initializes the owner of the contract"},"prices(address)":{"notice":"Manually set an override price, useful under extenuating conditions such as price feed failure"},"sequencer()":{"notice":"L2 Sequencer feed"},"setAccessControlManager(address)":{"notice":"Sets the address of AccessControlManager"},"setDirectPrice(address,uint256)":{"notice":"Manually set the price of a given asset"},"setTokenConfig((address,address,uint256))":{"notice":"Add single token config. asset & feed cannot be null addresses and maxStalePeriod must be positive"},"setTokenConfigs((address,address,uint256)[])":{"notice":"Add multiple token configs at the same time"},"tokenConfigs(address)":{"notice":"Token config by assets"}},"notice":"Oracle to fetch price using chainlink oracles on L2s with sequencer","version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":114,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":208,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":3414,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"_accessControlManager","offset":0,"slot":"151","type":"t_contract(IAccessControlManagerV8)3599"},{"astId":3419,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":6186,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"prices","offset":0,"slot":"201","type":"t_mapping(t_address,t_uint256)"},{"astId":6192,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"tokenConfigs","offset":0,"slot":"202","type":"t_mapping(t_address,t_struct(TokenConfig)6177_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IAccessControlManagerV8)3599":{"encoding":"inplace","label":"contract IAccessControlManagerV8","numberOfBytes":"20"},"t_mapping(t_address,t_struct(TokenConfig)6177_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct ChainlinkOracle.TokenConfig)","numberOfBytes":"32","value":"t_struct(TokenConfig)6177_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(TokenConfig)6177_storage":{"encoding":"inplace","label":"struct ChainlinkOracle.TokenConfig","members":[{"astId":6170,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"asset","offset":0,"slot":"0","type":"t_address"},{"astId":6173,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"feed","offset":0,"slot":"1","type":"t_address"},{"astId":6176,"contract":"contracts/oracles/SequencerChainlinkOracle.sol:SequencerChainlinkOracle","label":"maxStalePeriod","offset":0,"slot":"2","type":"t_uint256"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0001000000000002000b0000000000020000000003010019000000600330027000000218033001970000000100200190000000360000c13d0000008002000039000000400020043f000000040030008c0000005c0000413d000000000201043b000000e002200270000002240020009c0000005e0000a13d000002250020009c000000ad0000a13d000002260020009c000001390000a13d000002270020009c000001680000613d000002280020009c000001610000613d000002290020009c0000005c0000c13d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000601043b0000021a0060009c0000005c0000213d0000003301000039000000000101041a0000021a051001970000000001000411000000000015004b0000022f0000c13d0000006501000039000000000201041a0000023c02200197000000000262019f000000000021041b0000000001000414000002180010009c0000021801008041000000c0011002100000023d011001c70000800d0200003900000003030000390000023e04000041000002d20000013d0000000002000416000000000002004b0000005c0000c13d0000001f023000390000021902200197000000a002200039000000400020043f0000001f0230018f0000000504300272000000480000613d000000a0050000390000000506400210000000a006600039000000000701034f000000007807043c0000000005850436000000000065004b000000440000c13d000000000002004b000000570000613d0000000504400210000000000141034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000200030008c0000005c0000413d000000a00300043d0000021a0030009c0000007e0000a13d00000000010000190000085c00010430000002310020009c000000b80000213d000002370020009c000000ff0000213d0000023a0020009c0000016e0000613d0000023b0020009c0000005c0000c13d000000440030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000402100370000000000202043b000700000002001d0000021a0020009c0000005c0000213d0000002401100370000000000201043b000000070000006b000002720000c13d0000021d01000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000026601000041000000c40010043f0000026a010000410000085c00010430000000000100041a0000ff0000100190000000e20000c13d000000ff0210018f000000ff0020008c0000009a0000613d000000ff011001bf000000000010041b000000ff01000039000000400200043d0000000000120435000002180020009c000002180200804100000040012002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f0000021f011001c70000800d02000039000700000003001d00000001030000390000022004000041085a08500000040f000000070300002900000001002001900000005c0000613d0000021a00300198000002260000c13d000000400100043d00000044021000390000022203000041000000000032043500000024021000390000000c0300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000002180010009c0000021801008041000000400110021000000223011001c70000085c000104300000022c0020009c000000f60000213d0000022f0020009c0000014e0000613d000002300020009c0000005c0000c13d0000000001000416000000000001004b0000005c0000c13d00000033010000390000016c0000013d000002320020009c0000011c0000213d000002350020009c0000018a0000613d000002360020009c0000005c0000c13d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000101043b000700000001001d0000021a0010009c0000005c0000213d0000025101000041000000800010043f000002500100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000252011001c70000800502000039085a08550000040f0000000100200190000006870000613d000000000201043b00000000010004140000021a02200197000000040020008c000002d70000c13d0000000003000031000000a00030008c000000a0040000390000000004034019000002fe0000013d000000400100043d00000064021000390000021b03000041000000000032043500000044021000390000021c0300004100000000003204350000002402100039000000270300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000002180010009c000002180100804100000040011002100000021e011001c70000085c000104300000022d0020009c0000015a0000613d0000022e0020009c0000005c0000c13d0000000001000416000000000001004b0000005c0000c13d00000097010000390000016c0000013d000002380020009c000001b40000613d000002390020009c0000005c0000c13d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000101043b0000021a0010009c0000005c0000213d0000000000100435000000ca01000039000000200010043f085a08250000040f0000000202100039000000000202041a0000000103100039000000000303041a000000000101041a0000021a01100197000000800010043f0000021a01300197000000a00010043f000000c00020043f00000268010000410000085b0001042e000002330020009c000001d10000613d000002340020009c0000005c0000c13d0000000001000416000000000001004b0000005c0000c13d0000003301000039000000000201041a0000021a052001970000000003000411000000000035004b0000022f0000c13d0000006503000039000000000403041a0000023c04400197000000000043041b0000023c02200197000000000021041b0000000001000414000002180010009c0000021801008041000000c0011002100000023d011001c70000800d02000039000000030300003900000245040000410000000006000019000002d20000013d0000022a0020009c000001e20000613d0000022b0020009c0000005c0000c13d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000101043b0000021a0010009c0000005c0000213d0000000000100435000000c901000039000000200010043f085a08250000040f000000000101041a000000800010043f0000023f010000410000085b0001042e0000000001000416000000000001004b0000005c0000c13d0000006501000039000000000101041a0000021a021001970000000001000411000000000012004b000002380000c13d085a07e60000040f00000000010000190000085b0001042e0000000001000416000000000001004b0000005c0000c13d0000024c01000041000000800010043f0000023f010000410000085b0001042e0000000001000416000000000001004b0000005c0000c13d00000e1001000039000000800010043f0000023f010000410000085b0001042e0000000001000416000000000001004b0000005c0000c13d0000006501000039000000000101041a000001de0000013d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000402100370000000000202043b000002590020009c0000005c0000213d0000002304200039000000000034004b0000005c0000813d0000000404200039000000000441034f000000000604043b0000026e0060009c000001840000813d00000005046002100000003f044000390000026f04400197000002700040009c0000029e0000a13d000002610100004100000000001004350000004101000039000000040010043f00000262010000410000085c00010430000000640030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d000000e002000039000000400020043f0000000402100370000000000302043b0000021a0030009c0000005c0000213d000000800030043f0000002402100370000000000202043b0000021a0020009c0000005c0000213d0000021a00300198000000a00020043f0000004401100370000000000101043b000000c00010043f000002b80000613d000000000002004b000002b80000613d0000012001000039000000400010043f0000001b01000039000000e00010043f0000026301000041000001000010043f000000e001000039085a070e0000040f000000c00100043d000000000001004b0000032f0000c13d000000400100043d00000044021000390000026503000041000000000032043500000024021000390000001a03000039000000a20000013d000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000101043b0000021a0010009c0000005c0000213d0000003302000039000000000202041a0000021a022001970000000003000411000000000032004b0000022f0000c13d000000000001004b000002c20000c13d0000021d01000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000024901000041000000c40010043f0000024801000041000000e40010043f0000024f010000410000085c000104300000000001000416000000000001004b0000005c0000c13d0000000001000412000b00000001001d000a00000000001d0000800501000039000000440300003900000000040004150000000b0440008a00000005044002100000025002000041085a08320000040f0000021a01100197000000800010043f0000023f010000410000085b0001042e000000240030008c0000005c0000413d0000000002000416000000000002004b0000005c0000c13d0000000401100370000000000101043b000700000001001d0000021a0010009c0000005c0000213d0000000002000415000000090220008a0000000502200210000000000300041a0000ff0001300190000002440000c13d0000000002000415000000080220008a0000000502200210000000ff00300190000002440000c13d000002440130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000002680000613d000600000002001d0000006501000039000000000201041a0000023c02200197000000000021041b00000000010004110000021a061001970000003301000039000000000201041a0000023c03200197000000000363019f000000000031041b00000000010004140000021a05200197000002180010009c0000021801008041000000c0011002100000023d011001c70000800d0200003900000003030000390000024504000041085a08500000040f00000001002001900000005c0000613d000000000100041a0000ff0000100190000002680000613d000500000001001d000000400100043d0000000705000029000000000005004b000003a50000c13d00000064021000390000024803000041000000000032043500000044021000390000024903000041000000000032043500000024021000390000002503000039000000eb0000013d000000800030043f00000140000004430000016000300443000000200100003900000100001004430000000101000039000001200010044300000221010000410000085b0001042e0000021d01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000026901000041000000c40010043f0000026a010000410000085c000104300000021d01000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000024d01000041000000c40010043f0000024e01000041000000e40010043f0000024f010000410000085c00010430000600000002001d000400000001001d000500000003001d00000240010000410000000000100439000000000100041000000004001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800202000039085a08550000040f0000000100200190000006870000613d000000000101043b000000000001004b000003220000c13d0000000503000029000000ff0130018f000000010010008c0000000001000019000000010100603900000006020000290000000502200270000000000201001f000003250000c13d000000040000006b000001f70000613d0000027501300197000000010200003900000001011001bf000000000010041b0000ff0000100190000001fd0000c13d000000400100043d00000064021000390000024a03000041000000000032043500000044021000390000024b03000041000000000032043500000024021000390000002b03000039000000eb0000013d000600000002001d000000c001000039000000400010043f0000001f01000039000000800010043f0000026c01000041000000a00010043f0000008001000039085a070e0000040f00000007010000290000000000100435000000c901000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f00000001002001900000005c0000613d000000000101043b000000000201041a0000000604000029000000000041041b000000400100043d000000200310003900000000004304350000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000246011001c70000800d0200003900000002030000390000026d040000410000000705000029000002d20000013d0000008005400039000000400050043f000000800060043f000000240220003900000060046000c90000000004240019000000000034004b0000005c0000213d000000000006004b000003800000c13d0000004401500039000002740200004100000000002104350000002401500039000000110200003900000000002104350000021d010000410000000000150435000000040150003900000020020000390000000000210435000002180050009c0000021805008041000000400150021000000223011001c70000085c000104300000021d01000041000000e00010043f0000002001000039000000e40010043f0000001501000039000001040010043f0000026601000041000001240010043f00000267010000410000085c000104300000009702000039000000000302041a0000023c04300197000000000414019f000000000042041b0000021a02300197000000800020043f000000a00010043f0000000001000414000002180010009c0000021801008041000000c0011002100000026b011001c70000800d0200003900000001030000390000024704000041085a08500000040f00000001002001900000005c0000613d00000000010000190000085b0001042e000002180010009c0000021801008041000000c00110021000000253011001c7085a08550000040f000000000301001900000060033002700000021803300197000000a00030008c000000a00400003900000000040340190000001f0540018f00000005064002720000000506600210000000800a000039000002ed0000613d0000008007600039000000000801034f000000008908043c000000000a9a043600000000007a004b000002e90000c13d000000000005004b000002fb0000613d000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000035f0000613d0000001f01400039000001e00110018f0000008001100039000000400010043f000000a00030008c0000005c0000413d000000800100043d000002540010009c0000005c0000213d000001000100043d000002540010009c0000005c0000213d000000a00100043d000500000001001d000000c00100043d000600000001001d000002550100004100000000001004390000000001000414000002180010009c0000021801008041000000c00110021000000256011001c70000800b02000039085a08550000040f0000000100200190000006870000613d000000000101043b000000060110006c000003d10000813d000002610100004100000000001004350000001101000039000000040010043f00000262010000410000085c0001043000000006010000290000000501100270000000000100001f000000400100043d00000064021000390000024203000041000000000032043500000044021000390000024303000041000000000032043500000024021000390000002e03000039000000eb0000013d000000800100043d0000021a011001970000000000100435000000ca01000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f00000001002001900000005c0000613d000000800200043d0000021a05200197000000000101043b000000000201041a0000023c02200197000000000252019f000000000021041b000000a00200043d0000021a022001970000000103100039000000000403041a0000023c04400197000000000424019f000000000043041b0000000201100039000000c00300043d000000000031041b000000400100043d000000200410003900000000003404350000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000246011001c70000800d0200003900000002030000390000026404000041000002d20000013d000000400200043d0000001f0430018f00000005053002720000036b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003670000c13d000000000004004b0000037a0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085c00010430000000a00500003900000000062300490000025b0060009c0000005c0000213d000000600060008c0000005c0000413d000000400600043d0000025a0060009c000001840000213d0000006007600039000000400070043f000000000721034f000000000707043b0000021a0070009c0000005c0000213d00000000087604360000002007200039000000000971034f000000000909043b0000021a0090009c0000005c0000213d00000000009804350000002007700039000000000771034f000000000707043b0000004008600039000000000078043500000000056504360000006002200039000000000042004b000003810000413d000000800100043d000300000001001d000000000001004b0000040b0000c13d000000400500043d000002a80000013d0000009702000039000000000302041a0000023c04300197000000000454019f000000000042041b000000200210003900000000005204350000021a023001970000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000246011001c70000800d0200003900000001030000390000024704000041085a08500000040f00000001002001900000005c0000613d000000060000006b000002d50000c13d0000ff010100008a000000050110017f000000000010041b000000400100043d00000001030000390000000000310435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f0000021f011001c70000800d020000390000022004000041000002d20000013d00000e110010008c000004f90000413d0000000501000029000000010010008c000004f90000613d00000007010000290000024c0010009c000005000000c13d000600120000003d00000007010000290000000000100435000000c901000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f00000001002001900000005c0000613d000000000101043b000000000101041a000500000001001d000000000001004b000006be0000c13d000000ca01000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f00000001002001900000005c0000613d000000000101043b000000000101041a0000021a001001980000059b0000c13d000000400200043d000700000002001d0000021d0100004100000000001204350000000401200039085a06ce0000040f00000007020000290000000001210049000002180010009c00000218010080410000006001100210000002180020009c00000218020080410000004002200210000000000121019f0000085c00010430000700000000001d000000800100043d0000000702000029000000000012004b0000055d0000813d0000000501200210000000a001100039000000000b01043300000000210b04340000021a00100198000003fb0000613d00000000010204330000021a00100198000003fb0000613d000500000002001d000000400c00043d0000027100c0009c000001840000213d0000004001c00039000000400010043f0000002003c00039000002630100004100000000001304350000001b0100003900000000001c04350000009701000039000000000201041a000000400d00043d0000002401d00039000000400400003900000000004104350000027201000041000000000e1d04360000000401d000390000000004000411000000000041043500000000010c04330000004404d00039000000000014043500000276061001970000001f0510018f0000006404d00039000000000043004b000004470000813d000000000006004b000004430000613d00000000085300190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000043d0000c13d000000000005004b000004610000613d0000000007040019000004570000013d000000000006004b000004530000613d000000200760008a00000276077001970000000007740019000000200770003900000000080300190000000009040019000000008a0804340000000009a90436000000000079004b0000044f0000c13d000000000005004b000004610000613d000000000764001900000000036300190000000305500210000000000607043300000000065601cf000000000656022f00000000030304330000010005500089000000000353022f00000000035301cf000000000363019f00000000003704350000021a02200197000000000341001900000000000304350000000003000414000000040020008c00060000000b001d0000046d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004a40000013d00040000000c001d0000001f0110003900000276011001970000006401100039000002180010009c000002180100804100000060011002100000021800d0009c000002180400004100000000040d40190000004004400210000000000141019f000002180030009c0000021803008041000000c003300210000000000131019f00020000000d001d00010000000e001d085a08550000040f0000000109000029000000020d000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000000505400272000004900000613d000000000601034f00000000070d0019000000006806043c0000000007870436000000000097004b0000048c0000c13d0000001f064001900000049f0000613d0000000505500210000000000751034f00000000055d00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0000000100200190000000060b000029000000040c0000290000058c0000613d0000001f01400039000000600110018f0000000004d10019000000000014004b00000000010000190000000101004039000002590040009c000001840000213d0000000100100190000001840000c13d000000400040043f000000200030008c0000005c0000413d00000000010d0433000000000001004b0000000002000019000000010200c039000000000021004b0000005c0000c13d000000000001004b000005630000613d0000004001b00039000400000001001d0000000001010433000000000001004b0000057c0000613d00000000010b04330000021a011001970000000000100435000000ca01000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f000000060300002900000001002001900000005c0000613d00000000020304330000021a05200197000000000101043b000000000201041a0000023c02200197000000000252019f000000000021041b000000050200002900000000020204330000021a022001970000000103100039000000000403041a0000023c04400197000000000424019f000000000043041b000000020110003900000004030000290000000003030433000000000031041b000000400100043d000000200410003900000000003404350000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000246011001c70000800d0200003900000002030000390000026404000041085a08500000040f00000001002001900000005c0000613d00000007020000290000000102200039000700000002001d000000030020006c0000040c0000413d000002d50000013d000000400100043d00000044021000390000026003000041000000000032043500000024021000390000001803000039000000a20000013d000000400200043d0000025701000041000600000002001d0000000001120436000500000001001d00000000010004140000000702000029000000040020008c0000050e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000053b0000013d0000000602000029000002180020009c00000218020080410000004002200210000002180010009c0000021801008041000000c001100210000000000121019f00000258011001c70000000702000029085a08550000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005290000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005250000c13d000000000005004b000005380000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000054e0000613d0000001f01400039000000600210018f0000000601200029000000000021004b00000000020000190000000102004039000002590010009c000001840000213d0000000100200190000001840000c13d000000400010043f000000200030008c0000005c0000413d00000006010000290000000001010433000600000001001d000000ff0010008c0000005c0000213d000003da0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000055a0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005560000c13d000000000004004b0000037a0000613d0000036e0000013d000002610100004100000000001004350000003201000039000000040010043f00000262010000410000085c0001043000000044014000390000006002000039000000000021043500000024014000390000000002000410000000000021043500000273010000410000000000140435000000040140003900000000020004110000000000210435000000640240003900000000010c0019000700000004001d085a06d80000040f00000007020000290000000001210049000002180010009c0000021801008041000002180020009c000002180200804100000060011002100000004002200210000000000121019f0000085c0001043000000044014000390000026502000041000000000021043500000024014000390000001a0200003900000000002104350000021d010000410000000000140435000000040140003900000020020000390000000000210435000002180040009c0000021804008041000000400140021000000223011001c70000085c00010430000000400200043d0000001f0430018f00000005053002720000000505500210000005980000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005940000c13d000000000004004b0000036e0000c13d0000037a0000013d00000007010000290000000000100435000000ca01000039000000200010043f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f00000001002001900000005c0000613d000000400200043d0000025a0020009c000001840000213d000000000101043b0000006003200039000000400030043f000000000301041a0000021a0330019700000000033204360000000104100039000000000404041a0000021a04400197000000000043043500000040022000390000000201100039000000000101041a000300000001001d00000000001204350000025701000041000000400200043d000700000002001d0000000001120436000400000001001d0000000001000414000500000004001d000000040040008c000005c80000c13d0000000003000031000000200030008c00000020040000390000000004034019000005f50000013d0000000702000029000002180020009c00000218020080410000004002200210000002180010009c0000021801008041000000c001100210000000000121019f00000258011001c70000000502000029085a08550000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005e30000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000005df0000c13d000000000005004b000005f20000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000061a0000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000190000000101004039000400000002001d000002590020009c000001840000213d0000000100100190000001840000c13d0000000401000029000000400010043f000000200040008c0000005c0000413d00000007010000290000000001010433000200000001001d000000ff0010008c0000005c0000213d00000002010000290000001201100089000700000001001d000000ff0010008c0000031c0000213d000002510100004100000004020000290000000001120436000100000001001d00000000010004140000000502000029000000040020008c000006290000c13d000000a00030008c000000a0040000390000000004034019000006560000013d000000400200043d0000001f0430018f0000000505300272000006260000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006220000c13d000000000004004b0000037a0000613d0000036d0000013d0000000402000029000002180020009c00000218020080410000004002200210000002180010009c0000021801008041000000c001100210000000000121019f00000258011001c70000000502000029085a08550000040f000000000301001900000060033002700000021803300197000000a00030008c000000a00400003900000000040340190000001f0540018f00000005064002720000000506600210000006450000613d00000004090000290000000007690019000000000801034f000000008a08043c0000000009a90436000000000079004b000006410000c13d000000000005004b000006530000613d000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006880000613d0000001f01400039000001e00110018f0000000401100029000002590010009c000001840000213d000000400010043f000000a00030008c0000005c0000413d00000004020000290000000002020433000002540020009c0000005c0000213d000000040200002900000080022000390000000002020433000002540020009c0000005c0000213d00000001020000290000000002020433000100000002001d0000025b0020009c000006970000213d000000010000006b000006970000613d000000040100002900000060011000390000000001010433000500000001001d000002550100004100000000001004390000000001000414000002180010009c0000021801008041000000c00110021000000256011001c70000800b02000039085a08550000040f0000000100200190000006870000613d000000000101043b000000050110006c000006a10000813d000000400100043d00000044021000390000025e03000041000000000032043500000024021000390000001c03000039000000a20000013d000000000001042f000000400200043d0000001f0430018f0000000505300272000006940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006900000c13d000000000004004b0000037a0000613d0000036d0000013d00000044021000390000025f0300004100000000003204350000021d0200004100000000002104350000002402100039000000200300003900000000003204350000000402100039000000a70000013d000000030010006c000006aa0000a13d000000400100043d00000044021000390000025d03000041000000000032043500000024021000390000001703000039000000a20000013d0000000201000029000000120010008c000006af0000c13d0000000101000039000006b90000013d0000000a0200003900000001010000390000000704000029000000010040019000000000032200a9000000010200603900000000011200a9000700010040027a0000000002030019000006b10000c13d00000001031000b9000500000003001d00000001023000fa000000000012004b0000031c0000c13d0000000601000029000000120010008c0000031c0000213d00000006010000290000001201100089085a07ff0000040f00000000020100190000000501000029085a08160000040f000000400200043d0000000000120435000002180020009c000002180200804100000040012002100000025c011001c70000085b0001042e000000400210003900000266030000410000000000320435000000200210003900000015030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0000000043010434000000000132043600000276063001970000001f0530018f000000000014004b000006ee0000813d000000000006004b000006ea0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000006e40000c13d000000000005004b000007080000613d0000000007010019000006fe0000013d000000000006004b000006fa0000613d000000200760008a00000276077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000006f60000c13d000000000005004b000007080000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000276023001970000000001210019000000000001042d0003000000000002000000000c0100190000009701000039000000000201041a000000400e00043d0000002401e00039000000400300003900000000003104350000027201000041000000000f1e04360000000401e00039000000000d0004110000000000d104350000004403e0003900000000510c043400000000001304350000021a0220019700000276071001970000001f0610018f0000006404e00039000000000045004b000007340000813d000000000007004b000007300000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c0000072a0000c13d000000000006004b0000074e0000613d0000000008040019000007440000013d000000000007004b000007400000613d000000200870008a0000027608800197000000000848001900000020088000390000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b0000073c0000c13d000000000006004b0000074e0000613d000000000874001900000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f0000000000580435000000000441001900000000000404350000000004000414000000040020008c000007580000c13d0000000003000031000000200030008c00000020040000390000000004034019000007900000013d00030000000c001d0000001f0110003900000276011001970000006401100039000002180010009c000002180100804100000060011002100000021800e0009c000002180300004100000000030e40190000004003300210000000000131019f000002180040009c0000021804008041000000c003400210000000000131019f00020000000e001d00010000000f001d085a08550000040f000000010a000029000000020e000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000077c0000613d000000000701034f00000000080e0019000000007907043c00000000089804360000000000a8004b000007780000c13d000000000005004b0000078b0000613d0000000506600210000000000761034f00000000066e00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000000030c000029000000000d000411000007c60000613d0000001f01400039000000600110018f0000000004e10019000000000014004b00000000010000190000000101004039000002590040009c000007a80000213d0000000100100190000007a80000c13d000000400040043f0000001f0030008c000007a60000a13d00000000010e0433000000000001004b0000000002000019000000010200c039000000000021004b000007a60000c13d000000000001004b000007ae0000613d000000000001042d00000000010000190000085c00010430000002610100004100000000001004350000004101000039000000040010043f00000262010000410000085c000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000027301000041000000000014043500000004014000390000000000d10435000000640240003900000000010c0019000300000004001d085a06d80000040f00000003020000290000000001210049000002180010009c0000021801008041000002180020009c000002180200804100000060011002100000004002200210000000000121019f0000085c00010430000000400200043d0000001f0430018f00000005053002720000000505500210000007d20000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007ce0000c13d000000000004004b000007e00000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085c000104300000006502000039000000000302041a0000023c03300197000000000032041b0000021a061001970000003301000039000000000201041a0000023c03200197000000000363019f000000000031041b00000000010004140000021a05200197000002180010009c0000021801008041000000c0011002100000023d011001c70000800d0200003900000003030000390000024504000041085a08500000040f0000000100200190000007fd0000613d000000000001042d00000000010000190000085c000104300000004e0010008c000008100000813d000000000001004b0000080e0000613d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a900000001011002720000000003040019000008050000c13d0000000001020019000000000001042d0000000101000039000000000001042d000002610100004100000000001004350000001101000039000000040010043f00000262010000410000085c00010430000000000301001900000000013200a9000000000003004b0000081d0000613d00000000033100d9000000000023004b0000081e0000c13d000000000001042d000002610100004100000000001004350000001101000039000000040010043f00000262010000410000085c00010430000000000001042f0000000001000414000002180010009c0000021801008041000000c00110021000000246011001c70000801002000039085a08550000040f0000000100200190000008300000613d000000000101043b000000000001042d00000000010000190000085c0001043000000000050100190000000000200439000000050030008c000008400000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008380000413d000002180030009c000002180300804100000060013002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000277011001c70000000002050019085a08550000040f00000001002001900000084f0000613d000000000101043b000000000001042d000000000001042f00000853002104210000000102000039000000000001042d0000000002000019000000000001042d00000858002104230000000102000039000000000001042d0000000002000019000000000001042d0000085a000004320000085b0001042e0000085c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff616c697a696e6700000000000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320696e69746908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249800000002000000000000000000000000000000800000010000000000000000007a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000079ba509600000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000ed2f860300000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000cfed246b00000000000000000000000000000000000000000000000000000000a9534f8900000000000000000000000000000000000000000000000000000000a9534f8a00000000000000000000000000000000000000000000000000000000b4a0bdf30000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000392787d1000000000000000000000000000000000000000000000000000000005c1bba37000000000000000000000000000000000000000000000000000000005c1bba3800000000000000000000000000000000000000000000000000000000715018a600000000000000000000000000000000000000000000000000000000392787d20000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000000e32cb85000000000000000000000000000000000000000000000000000000000e32cb86000000000000000000000000000000000000000000000000000000001b69dc5f000000000000000000000000000000000000000000000000000000000431710e0000000000000000000000000000000000000000000000000000000009a8acb0ffffffffffffffffffffffff0000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270000000000000000000000000000000000000000200000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0020000000000000000000000000000000000004000000000000000000000000066fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa06472657373000000000000000000000000000000000000000000000000000000696e76616c696420616365737320636f6e74726f6c206d616e616765722061646e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657200000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32efeaf968c000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000400000080000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000636861696e6c696e6b2070726963652065787069726564000000000000000000757064617465644174206578636565647320626c6f636b2074696d6500000000636861696e6c696e6b207072696365206d75737420626520706f7369746976654c322073657175656e63657220756e617661696c61626c6500000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000736574546f6b656e436f6e66696728546f6b656e436f6e6669672900000000003cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f7374616c6520706572696f642063616e2774206265207a65726f00000000000063616e2774206265207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000064000000e0000000000000000000000000000000000000000000000000000000600000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000200000000000000000000000000000000000040000000800000000000000000736574446972656374507269636528616464726573732c75696e743235362900a0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee00000000000000000000000000000000000000000000000100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffffbf18c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000006c656e6774682063616e27742062652030000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"GRACE_PERIOD_TIME()":"ed2f8603","NATIVE_TOKEN_ADDR()":"a9534f8a","acceptOwnership()":"79ba5097","accessControlManager()":"b4a0bdf3","getPrice(address)":"41976e09","initialize(address)":"c4d66de8","owner()":"8da5cb5b","pendingOwner()":"e30c3978","prices(address)":"cfed246b","renounceOwnership()":"715018a6","sequencer()":"5c1bba38","setAccessControlManager(address)":"0e32cb86","setDirectPrice(address,uint256)":"09a8acb0","setTokenConfig((address,address,uint256))":"392787d2","setTokenConfigs((address,address,uint256)[])":"0431710e","tokenConfigs(address)":"1b69dc5f","transferOwnership(address)":"f2fde38b"}},"hash":"01000279ee89ccb4ae5b1e904cfcf727fe6c179ea26974bd03a5927a4ada2fa8","factoryDependencies":{}}},"contracts/oracles/SlisBNBOracle.sol":{"SlisBNBOracle":{"abi":[{"inputs":[{"internalType":"address","name":"stakeManager","type":"address"},{"internalType":"address","name":"slisBNB","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKE_MANAGER","outputs":[{"internalType":"contract ISynclubStakeManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slisBNB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_MANAGER\",\"outputs\":[{\"internalType\":\"contract ISynclubStakeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of BNB for slisBNB\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"SlisBNBOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"This is used as token address of BNB on BSC\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STAKE_MANAGER()\":{\"notice\":\"Address of StakeManager\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of BNB for 1 slisBNB\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of slisBNB asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/SlisBNBOracle.sol\":\"SlisBNBOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/ISynclubStakeManager.sol\":{\"keccak256\":\"0x81da7034490b7e92a26c58e9f22ff08c0c13f9aa9debffc95237684989ce2e3e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://b893b1bc15ae709e4eb683c5a624a714df0c37e16526dcd89c0807b91c039f82\",\"dweb:/ipfs/QmUU5YE2fWPEw81EvT2cH6FJ8SJ5zKEwXJ9aeyvix2DSPA\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/SlisBNBOracle.sol\":{\"keccak256\":\"0xc7d862d53cfc7807710ebf906542d2dc799100671b439fb4f058917a3b7f0c1d\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://87f9d971e6e36c30926753232ac956db4644139368308298669b7132377243f4\",\"dweb:/ipfs/QmNX4m4KkRyWn14eXKGSp1vhNs8T5wZH91sKjku32b5hyW\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of BNB for slisBNB"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"SlisBNBOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"NATIVE_TOKEN_ADDR()":{"notice":"This is used as token address of BNB on BSC"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"STAKE_MANAGER()":{"notice":"Address of StakeManager"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of BNB for 1 slisBNB"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of slisBNB asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/SlisBNBOracle.sol:SlisBNBOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/SlisBNBOracle.sol:SlisBNBOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/SlisBNBOracle.sol:SlisBNBOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/SlisBNBOracle.sol:SlisBNBOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/SlisBNBOracle.sol:SlisBNBOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001400000000000200000000030100190000006003300270000002230330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003ea0000413d000000000201043b000000e0022002700000022c0020009c000000580000a13d0000022d0020009c000000710000213d000002340020009c0000008f0000a13d000002350020009c000001120000613d000002360020009c0000011d0000613d000002370020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000301000039000001d50000013d0000000002000416000000000002004b000003ea0000c13d0000001f0230003900000224022001970000012002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000300000613d00000120050000390000012006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003e0000613d000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003ea0000413d000001200300043d000002250030009c000003ea0000213d000001400100043d000002250010009c000003ea0000213d000001600600043d000002250060009c000003ea0000213d000002000400043d000002250040009c000003ea0000213d000001e00700043d000001c00800043d000001a00a00043d000001800500043d000002260250012a000002200900043d000000000020041b000002270050009c000001d90000213d00000000000a004b000001db0000613d000002070000013d0000023a0020009c0000007e0000a13d0000023b0020009c0000009e0000a13d0000023c0020009c000001420000613d0000023d0020009c000001470000613d0000023e0020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001ee0000c13d000000010110018f0000000000140435000002230040009c0000022304008041000000400140021000000246011001c7000008890001042e0000022e0020009c000000c50000a13d0000022f0020009c000001630000613d000002300020009c0000016e0000613d000002310020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0888070d0000040f000001670000013d000002410020009c000000d00000213d000002440020009c000001750000613d000002450020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000001000412001200000001001d001100200000003d000080050100003900000044030000390000000004000415000000120440008a000001ca0000013d000002380020009c0000017a0000613d000002390020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000000001000412000e00000001001d000d00000000001d0000800501000039000000440300003900000000040004150000000e0440008a000001ca0000013d0000023f0020009c000001b50000613d000002400020009c000003ea0000c13d000000240030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025b01000041000000a00010043f0000008001000039088807770000040f0000000401000039000000000501041a0000000001000414000002230010009c0000022301008041000000c0011002100000024a011001c70000800d0200003900000003030000390000025c0400004100000008060000290888087e0000040f0000000100200190000003ea0000613d00000008010000290000000402000039000000000012041b0000000001000019000008890001042e000002320020009c000001c00000613d000002330020009c000003ea0000c13d0000000001000416000000000001004b000003ea0000c13d0000022801000041000000800010043f0000024701000041000008890001042e000002420020009c000001d10000613d000002430020009c000003ea0000c13d000000240030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000000401100370000000000101043b000002250010009c000003ea0000213d000800000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000101043b000000080110014f000000400200043d0000022500100198000002640000c13d0000024e010000410000000001120436000700000001001d000800000002001d00000004012000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000002a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a000029000002d30000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412000c00000001001d000b00800000003d0000800501000039000000440300003900000000040004150000000c0440008a000001ca0000013d000000440030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024901000041000000a00010043f0000008001000039088807770000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000002230010009c0000022301008041000000c0011002100000024a011001c70000800d020000390000024b040000410888087e0000040f0000000100200190000003ea0000613d0000000001000019000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000201000039000001d50000013d000000440030008c000003ea0000413d0000000002000416000000000002004b000003ea0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025701000041000000a00010043f0000008001000039088807770000040f0000000701000029000002260610012a000000000500041a000000000060041b000002270010009c000002050000213d000000080000006b000002070000c13d0000020f0000013d0000000001000416000000000001004b000003ea0000c13d088806850000040f000000400200043d0000000000120435000002230020009c0000022302008041000000400120021000000246011001c7000008890001042e0000000001000416000000000001004b000003ea0000c13d000000000100041a000000800010043f0000024701000041000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000101000039000001d50000013d0000000001000416000000000001004b000003ea0000c13d0000000301000039000000000101041a000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000301043b000000080130006c000001ff0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008004000039000001400000813d000600000003001d000000400200043d0000024e010000410000000001120436000700000001001d000800000002001d00000004012000390000024f020000410000000000210435000002480100004100000000001004390000000001000412000000040010044300000024004004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000003190000c13d0000000003000031000000200030008c00000020040000390000000004034019000003450000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412001000000001001d000f00600000003d000080050100003900000044030000390000000004000415000000100440008a000001ca0000013d0000000001000416000000000001004b000003ea0000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a00000005044002100000024802000041088808600000040f0000022501100197000000800010043f0000024701000041000008890001042e0000000001000416000000000001004b000003ea0000c13d0000000401000039000000000101041a000000800010043f0000024701000041000008890001042e00000000000a004b000002070000613d0000000005000415000000140550008a0000000505500210000000000008004b000001e50000613d0000000005000415000000130550008a0000000505500210000000000007004b000002280000c13d00000000000a004b0000000002000019000000010200c0390000000505500270000000000502001f000002280000613d000000400100043d0000022a02000041000002090000013d0000000301000039000000000101041a000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000080210006c0000026b0000813d000002600100004100000000001004350000001101000039000000040010043f00000251010000410000088a00010430000000080000006b0000020f0000c13d000000400100043d00000258020000410000000000210435000002230010009c000002230100804100000040011002100000022b011001c70000088a000104300000000101000039000000000701041a000000400100043d00000008020000290000000000210435000002230010009c000002230100804100000040011002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000259011001c70000800d0200003900000004030000390000025a040000410888087e0000040f0000000100200190000003ea0000613d00000008010000290000000102000039000000000012041b0000000001000019000008890001042e000800000003001d000700000004001d000100000001001d000600000006001d000400000007001d000300000008001d000500000009001d00020000000a001d0888067a0000040f00000006010000290888067a0000040f00000007010000290888067a0000040f0000000101000029000000800010043f0000022801000041000000a00010043f0000000601000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000701000029000000e00010043f00000008010000290888067a0000040f0000000804000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000022901000041000008890001042e0000025d010000410000000000120435000002230020009c000002230200804100000040012002100000022b011001c70000088a000104300000000201000039000000000101041a000000000001004b0000000003000019000002780000c13d0000024f0230012a000000000012001a000001ff0000413d000000000112001a000000400400043d000002850000c13d00000000010000190000006a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000002700000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000002700000013d000600000001001d0000024e010000410000000001140436000700000001001d000800000004001d00000004014000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000003b10000c13d0000000003000031000000200030008c00000020040000390000000004034019000003dd0000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000080a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000002c10000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002bd0000c13d000000000005004b000002d00000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003810000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002520020009c000004ef0000213d0000000100100190000004ef0000c13d000000400020043f000000200030008c000003ea0000413d000700000002001d00000000010a0433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000003ec0000c13d0000025e0100004100000007020000290000000001120436000500000001001d0000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d00000007020000290000000402200039000000000101043b000002250110019700000000001204350000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000004bc0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004e80000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003330000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000032f0000c13d000000000005004b000003420000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003900000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000002520010009c000004ef0000213d0000000100200190000004ef0000c13d000000400010043f000000200030008c000003ea0000413d0000000301000039000000000101041a000700000001001d00000008010000290000000001010433000800000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000070210006c0000000606000029000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004570000c13d0000024f0230012a000000000012001a000001ff0000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000001ff0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004640000c13d000000400100043d0000025602000041000002090000013d000000400200043d0000001f0430018f00000005053002720000038d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003890000c13d000000000004004b0000039e0000c13d000003ab0000013d000000400200043d0000001f0430018f00000005053002720000039c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003980000c13d000000000004004b000003ab0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a000104300000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003cb0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000003c70000c13d000000000005004b000003da0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004420000613d0000001f01400039000000600110018f0000000804100029000000000014004b00000000010000190000000101004039000002520040009c000004ef0000213d0000000100100190000004ef0000c13d000000400040043f000000200030008c000004510000813d00000000010000190000088a000104300000000301000039000000000101041a000700000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f00000001002001900000058d0000613d000000000101043b000000070210006c000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004f50000c13d0000024f0230012a000000000012001a000001ff0000413d000700000012001d000000400200043d0000025e01000041000500000002001d0000000001120436000400000001001d0000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d00000001002001900000058d0000613d00000005020000290000000402200039000000000101043b000002250110019700000000001204350000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000005330000c13d0000000003000031000000200030008c000000200400003900000000040340190000055f0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000044e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000044a0000c13d000000000004004b000003ab0000613d0000039f0000013d00000008010000290000000001010433000000060010006c000000000100001900000001010020390000006a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b00000000030000190000036c0000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d0000036c0000013d0000024801000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000101043b000002530200004100000000002004390000022501100197000800000001001d00000004001004430000000001000414000002230010009c0000022301008041000000c00110021000000254011001c70000800202000039088808830000040f00000001002001900000058d0000613d000000000101043b000000000001004b000003ea0000613d000000400200043d0000025501000041000700000002001d00000000001204350000024801000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d00000007020000290000000402200039000000000101043b0000022501100197000000000012043500000000010004140000000802000029000000040020008c000004b10000613d0000000702000029000002230020009c00000223020080410000004002200210000002230010009c0000022301008041000000c001100210000000000121019f00000251011001c700000008020000290888087e0000040f00000000030100190000006003300270000002230030019d0000000100200190000005eb0000613d0000000701000029000002520010009c000004ef0000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001370000013d0000000703000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004d60000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004d20000c13d000000000005004b000004e50000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005240000613d0000001f01400039000000600110018f00000007020000290000000001210019000500000001001d000002520010009c000005020000a13d000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000004020000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000004020000013d0000000501000029000000400010043f000000200030008c000003ea0000413d0000000001020433000400000001001d0000025f0100004100000005020000290000000001120436000700000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c0000058e0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005ba0000013d000000400200043d0000001f0430018f0000000505300272000005300000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000052c0000c13d000000000004004b000003ab0000613d0000039e0000013d0000000503000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000054d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005490000c13d000000000005004b0000055c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005cd0000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002520020009c000004ef0000213d0000000100100190000004ef0000c13d0000000801000029000000400010043f000000200030008c000003ea0000413d00000005010000290000000001010433000400000001001d0000025f0100004100000008020000290000000001120436000500000001001d000002480100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000058d0000613d000000000201043b00000000010004140000022502200197000000040020008c000005fb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006270000013d000000000001042f0000000503000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022b011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005a80000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005a40000c13d000000000005004b000005b70000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005dc0000613d0000001f01400039000000600110018f0000000501100029000002520010009c000004ef0000213d000000400010043f000000200030008c000003ea0000413d00000005020000290000000003020433000000ff0030008c000003ea0000213d000000040200002900000008022000b9000000080000006b0000063a0000c13d0000004d0030008c000001ff0000213d0000063f0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005d90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d50000c13d000000000004004b000003ab0000613d0000039f0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005e80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e40000c13d000000000004004b000003ab0000613d0000039f0000013d0000022303300197000000400200043d0000001f0430018f0000000505300272000005f80000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f40000c13d000000000004004b000003ab0000613d0000039e0000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022b011001c7088808830000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000006150000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000006110000c13d000000000005004b000006240000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006530000613d0000001f01400039000000600110018f0000000801100029000002520010009c000004ef0000213d000000400010043f000000200030008c000003ea0000413d00000008020000290000000003020433000000ff0030008c000003ea0000213d000000040200002900000007022000b9000000070000006b000006620000c13d0000004d0030008c000001ff0000213d000006670000013d0000004d0030008c000001ff0000213d00000008042000fa000000040040006c000001ff0000c13d000000000003004b000006690000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006430000c13d000600000006001d000000000006004b000006690000c13d000002600100004100000000001004350000001201000039000000040010043f00000251010000410000088a00010430000000400200043d0000001f0430018f00000005053002720000065f0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000065b0000c13d000000000004004b000003ab0000613d0000039e0000013d0000004d0030008c000001ff0000213d00000007042000fa000000040040006c000001ff0000c13d000000000003004b000006700000c13d00000006022000fa0000000000210435000002230010009c0000022301008041000000400110021000000246011001c7000008890001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006720000c13d0000064a0000013d00000225001001980000067d0000613d000000000001042d000000400100043d00000261020000410000000000210435000002230010009c000002230100804100000040011002100000022b011001c70000088a000104300002000000000002000000400200043d0000024e010000410000000001120436000100000001001d000200000002001d00000004012000390000024f0200004100000000002104350000024801000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f0000000100200190000006e40000613d000000000201043b00000000010004140000022502200197000000040020008c000006a80000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006d50000013d0000000203000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f00000251011001c7088808830000040f000000020a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006c30000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006bf0000c13d000000000005004b000006d20000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006ed0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002520010009c000006e50000213d0000000100200190000006e50000c13d000000400010043f0000001f0030008c000006eb0000a13d00000000010a0433000000000001042d000000000001042f000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a0001043000000000010000190000088a00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006f90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006f50000c13d000000000004004b000007070000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a0001043000010000000000020000000301000039000000000101041a000100000001001d0000024c0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024d011001c70000800b02000039088808830000040f0000000100200190000007400000613d000000000101043b000000010210006c0000073a0000413d0000000201000039000000000101041a000000000001004b0000072f0000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000073a0000c13d000000000004004b000007350000613d00000000032400a900000000044300d9000000000024004b000007300000613d0000073a0000013d00000000030000190000024f0230012a000000000012001a0000073a0000413d0000000001120019000000000001042d00000000030000190000024f0230012a000000000012001a0000073a0000413d000007330000013d000002600100004100000000001004350000001101000039000000040010043f00000251010000410000088a00010430000000000001042f0000000043010434000000000132043600000262063001970000001f0530018f000000000014004b000007570000813d000000000006004b000007530000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000074d0000c13d000000000005004b000007710000613d0000000007010019000007670000013d000000000006004b000007630000613d000000200760008a00000262077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000075f0000c13d000000000005004b000007710000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000262023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002630200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000026204a001970000001f03a0018f0000006401500039000000000012004b0000079b0000813d000000000004004b000007970000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007910000c13d000000000003004b000007b50000613d0000000005010019000007ab0000013d000000000004004b000007a70000613d000000200540008a0000026205500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007a30000c13d000000000003004b000007b50000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024801000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002230010009c0000022301008041000000c00110021000000250011001c70000800502000039088808830000040f00000001002001900000081f0000613d000000000201043b00000000010004140000022502200197000000040020008c000000040a000029000007d30000c13d0000000003000031000000200030008c00000020040000390000000004034019000008070000013d00000002030000290000001f0330003900000262033001970000022300a0009c000002230400004100000000040a401900000040044002100000006403300039000002230030009c00000223030080410000006003300210000000000343019f000002230010009c0000022301008041000000c001100210000000000131019f088808830000040f000000040a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007f50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007f10000c13d000000000005004b000008040000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000083f0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002520040009c000008200000213d0000000100100190000008200000c13d000000400040043f0000001f0030008c0000081d0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000081d0000c13d000000000001004b000008260000613d000000000001042d00000000010000190000088a00010430000000000001042f000002600100004100000000001004350000004101000039000000040010043f00000251010000410000088a000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000026401000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d088807410000040f00000004020000290000000001210049000002230010009c0000022301008041000002230020009c000002230200804100000060011002100000004002200210000000000121019f0000088a00010430000000400200043d0000001f0430018f000000050530027200000005055002100000084b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008470000c13d000000000004004b000008590000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088a00010430000000000001042f00000000050100190000000000200439000000050030008c0000086e0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008660000413d000002230030009c000002230300804100000060013002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000265011001c70000000002050019088808830000040f00000001002001900000087d0000613d000000000101043b000000000001042d000000000001042f00000881002104210000000102000039000000000001042d0000000002000019000000000001042d00000886002104230000000102000039000000000001042d0000000002000019000000000001042d0000088800000432000008890001042e0000088a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000200000000000000000000000000000180000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000a9534f8a0000000000000000000000000000000000000000000000000000000073538479000000000000000000000000000000000000000000000000000000007353847a000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000ce6298e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","NATIVE_TOKEN_ADDR()":"a9534f8a","RESILIENT_ORACLE()":"a4edcd4c","STAKE_MANAGER()":"7353847a","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100026720191a1f83f2faf9841853a22481fed5f98839d2625f20c4e93db92e","factoryDependencies":{}}},"contracts/oracles/StkBNBOracle.sol":{"StkBNBOracle":{"abi":[{"inputs":[{"internalType":"address","name":"stakePool","type":"address"},{"internalType":"address","name":"stkBNB","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[],"name":"PoolTokenSupplyIsZero","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKE_POOL","outputs":[{"internalType":"contract IPStakePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakePool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stkBNB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolTokenSupplyIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_POOL\",\"outputs\":[{\"internalType\":\"contract IPStakePool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"custom:error\":\"PoolTokenSupplyIsZero error is thrown if the pool token supply is zero\",\"returns\":{\"_0\":\"price The amount of BNB for stkBNB\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"StkBNBOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"PoolTokenSupplyIsZero()\":[{\"notice\":\"Thrown if the pool token supply is zero\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"NATIVE_TOKEN_ADDR()\":{\"notice\":\"This is used as token address of BNB on BSC\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STAKE_POOL()\":{\"notice\":\"Address of StakePool\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of BNB for 1 stkBNB\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of stkBNB asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/StkBNBOracle.sol\":\"StkBNBOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IPStakePool.sol\":{\"keccak256\":\"0xe1f74f35e9873a0e4dd128bd51a78ef548083d8b66771ebee45a27a093cf830d\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://182d5253ec2db09a016be54b92ff349bbb68fa1c74b8f56e8146a6948f56789d\",\"dweb:/ipfs/QmUHD1TG2uLKemkQ3QUnqtGBrRjAThdsxM4yzfmcLWrHpV\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/StkBNBOracle.sol\":{\"keccak256\":\"0x31a2a742fcaff04b1e3f92d7885011d260a22d4ec4cbc55a9c51bdc848e8d149\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://291a53532f2537a7a2c350e5d6d8525d7a8b1e77df8bc3fb479f7234e71539ab\",\"dweb:/ipfs/QmatK7y8geFyzLqwEkzNwYtfAmRUpE2tFexGc9uczUtpbS\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"custom:error":"PoolTokenSupplyIsZero error is thrown if the pool token supply is zero","returns":{"_0":"price The amount of BNB for stkBNB"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"StkBNBOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"PoolTokenSupplyIsZero()":[{"notice":"Thrown if the pool token supply is zero"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"NATIVE_TOKEN_ADDR()":{"notice":"This is used as token address of BNB on BSC"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"STAKE_POOL()":{"notice":"Address of StakePool"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of BNB for 1 stkBNB"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of stkBNB asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/StkBNBOracle.sol:StkBNBOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/StkBNBOracle.sol:StkBNBOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/StkBNBOracle.sol:StkBNBOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/StkBNBOracle.sol:StkBNBOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/StkBNBOracle.sol:StkBNBOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001400000000000200000000030100190000006003300270000002370330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003fe0000413d000000000201043b000000e002200270000002400020009c000000590000a13d000002410020009c0000007f0000213d000002480020009c0000009d0000a13d000002490020009c000000fc0000613d0000024a0020009c000001070000613d0000024b0020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d00000003010000390000016a0000013d0000000002000416000000000002004b000003fe0000c13d0000001f0230003900000238022001970000012002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000001200500003900000005064002100000012006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003fe0000413d000001200300043d000002390030009c000003fe0000213d000001400100043d000002390010009c000003fe0000213d000001600600043d000002390060009c000003fe0000213d000002000400043d000002390040009c000003fe0000213d000001e00700043d000001c00800043d000001a00a00043d000001800500043d0000023a0250012a000002200900043d000000000020041b0000023b0050009c000001d40000213d00000000000a004b000001d60000613d000001eb0000013d0000024e0020009c0000008c0000a13d0000024f0020009c000000d90000a13d000002500020009c0000012c0000613d000002510020009c0000014f0000613d000002520020009c000003fe0000c13d000000440030008c000003fe0000413d0000000002000416000000000002004b000003fe0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000026c01000041000000a00010043f000000800100003908d707c60000040f00000007010000290000023a0610012a000000000500041a000000000060041b0000023b0010009c000001e90000213d000000080000006b000001eb0000c13d0000021d0000013d000002420020009c000000e80000a13d000002430020009c000001540000613d000002440020009c0000015f0000613d000002450020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d08d7075c0000040f000001580000013d000002550020009c000000f30000213d000002580020009c000001660000613d000002590020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d0000000001000412001200000001001d001100200000003d000080050100003900000044030000390000000004000415000000120440008a000001cd0000013d0000024c0020009c0000016e0000613d0000024d0020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d0000000301000039000000000101041a000800000001001d000002600100004100000000001004390000000001000414000002370010009c0000023701008041000000c00110021000000261011001c70000800b0200003908d708d20000040f0000000100200190000005bf0000613d000000000301043b000000080130006c000005500000413d0000000102000039000000000202041a000000010220008a000000000012004b00000080020000390000012a0000813d000600000003001d000000400300043d0000026201000041000800000003001d0000000001130436000700000001001d0000025c0100004100000000001004390000000001000412000000040010044300000024002004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c000002970000c13d0000000003000031000000400030008c00000040040000390000000004034019000002c30000013d000002530020009c0000017d0000613d000002540020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001cd0000013d000002460020009c000001b80000613d000002470020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d0000023c01000041000000800010043f0000025b01000041000008d80001042e000002560020009c000001c30000613d000002570020009c000003fe0000c13d0000000001000416000000000001004b000003fe0000c13d00000004010000390000016a0000013d0000000001000416000000000001004b000003fe0000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a000001cd0000013d000000440030008c000003fe0000413d0000000002000416000000000002004b000003fe0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000025d01000041000000a00010043f000000800100003908d707c60000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000002370010009c0000023701008041000000c0011002100000025e011001c70000800d020000390000025f0400004108d708cd0000040f0000000100200190000003fe0000613d0000000001000019000008d80001042e000000240030008c000003fe0000413d0000000002000416000000000002004b000003fe0000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000027001000041000000a00010043f000000800100003908d707c60000040f0000000401000039000000000501041a0000000001000414000002370010009c0000023701008041000000c0011002100000025e011001c70000800d0200003900000003030000390000027104000041000000080600002908d708cd0000040f0000000100200190000003fe0000613d00000008010000290000000402000039000000000012041b0000000001000019000008d80001042e0000000001000416000000000001004b000003fe0000c13d00000002010000390000016a0000013d0000000001000416000000000001004b000003fe0000c13d08d706b80000040f000000400200043d0000000000120435000002370020009c000002370200804100000040012002100000025a011001c7000008d80001042e0000000001000416000000000001004b000003fe0000c13d000000000100041a000000800010043f0000025b01000041000008d80001042e0000000001000416000000000001004b000003fe0000c13d0000000101000039000000000101041a000000800010043f0000025b01000041000008d80001042e0000000001000416000000000001004b000003fe0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001f30000c13d000000010110018f0000000000140435000002370040009c000002370400804100000040014002100000025a011001c7000008d80001042e000000240030008c000003fe0000413d0000000002000416000000000002004b000003fe0000c13d0000000401100370000000000101043b000002390010009c000003fe0000213d000800000001001d0000025c0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000000080110014f000000400200043d0000023900100198000002720000c13d0000026201000041000800000002001d0000000001120436000700000001001d0000025c01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c0000030f0000c13d0000000003000031000000400030008c00000040040000390000000004034019000000080b0000290000033c0000013d0000000001000416000000000001004b000003fe0000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000001cd0000013d0000000001000416000000000001004b000003fe0000c13d0000000001000412001000000001001d000f00800000003d000080050100003900000044030000390000000004000415000000100440008a00000005044002100000025c0200004108d708af0000040f0000023901100197000000800010043f0000025b01000041000008d80001042e00000000000a004b000001eb0000613d0000000005000415000000140550008a0000000505500210000000000008004b000001e00000613d0000000005000415000000130550008a0000000505500210000000000007004b000002360000c13d00000000000a004b0000000002000019000000010200c0390000000505500270000000000502001f000002360000613d000000400100043d0000023e02000041000001ed0000013d000000080000006b0000021d0000c13d000000400100043d0000026d020000410000000000210435000002370010009c000002370100804100000040011002100000023f011001c7000008d9000104300000000301000039000000000101041a000800000001001d000002600100004100000000001004390000000001000414000002370010009c0000023701008041000000c00110021000000261011001c70000800b0200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000000080210006c000005500000413d0000000201000039000000000101041a000000000001004b0000000003000019000002150000613d000000000300041a00000000041300a900000000051400d9000000000035004b000005500000c13d000000000004004b0000000003000019000002150000613d00000000032400a900000000044300d9000000000024004b000005500000c13d000002660230012a000000000012001a000005500000413d000000000112001a000000400400043d000002790000c13d0000000001000019000001760000013d0000000101000039000000000701041a000000400100043d00000008020000290000000000210435000002370010009c000002370100804100000040011002100000000002000414000002370020009c0000023702008041000000c002200210000000000112019f0000026e011001c70000800d0200003900000004030000390000026f0400004108d708cd0000040f0000000100200190000003fe0000613d00000008010000290000000102000039000000000012041b0000000001000019000008d80001042e000800000003001d000700000004001d000100000001001d000600000006001d000400000007001d000300000008001d000500000009001d00020000000a001d08d706ad0000040f000000060100002908d706ad0000040f000000070100002908d706ad0000040f0000000101000029000000800010043f0000023c01000041000000a00010043f0000000601000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000701000029000000e00010043f000000080100002908d706ad0000040f0000000804000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000023d01000041000008d80001042e00000272010000410000000000120435000002370020009c000002370200804100000040012002100000023f011001c7000008d900010430000600000001001d0000026201000041000800000004001d0000000001140436000700000001001d0000025c01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c000003c40000c13d0000000003000031000000400030008c00000040040000390000000004034019000003f00000013d0000000803000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000000301001900000060033002700000023703300197000000400030008c000000400400003900000000040340190000001f0540018f00000005064002720000000506600210000002b20000613d00000008090000290000000007690019000000000801034f000000008a08043c0000000009a90436000000000079004b000002ae0000c13d000000000005004b000002c00000613d000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003940000613d0000001f01400039000000e00210018f0000000801200029000000000021004b00000000020000190000000102004039000002640010009c000004110000213d0000000100200190000004110000c13d000000400010043f000000400030008c000003fe0000413d000002650010009c000004110000213d0000004002100039000000400020043f000000080200002900000000020204330000000001210436000000070300002900000000030304330000000000310435000800000003001d000000000003004b000004200000613d00070266002000d5000000000002004b000002e30000613d00000007012000f9000002660010009c000005500000c13d0000000301000039000000000101041a000500000001001d000002600100004100000000001004390000000001000414000002370010009c0000023701008041000000c00110021000000261011001c70000800b0200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000000050210006c0000000606000029000005500000413d0000000201000039000000000101041a000000000001004b0000000003000019000004850000c13d000002660330012a000000000013001a000005500000413d000000070400002900000008024000fa0000000001130019000000000012004b00000000020180190000000401000039000000000101041a000000000021001a000005500000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004920000c13d000000400100043d0000026b02000041000001ed0000013d0000000803000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000080b000029000000000301001900000060033002700000023703300197000000400030008c000000400400003900000000040340190000001f0540018f000000050640027200000005066002100000032b0000613d00000000076b0019000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000079004b000003270000c13d000000000005004b000003390000613d000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003a30000613d0000001f01400039000000e00210018f0000000001b20019000000000021004b00000000020000190000000102004039000002640010009c000004110000213d0000000100200190000004110000c13d000000400010043f000000400030008c000003fe0000413d000002650010009c000004110000213d0000004002100039000000400020043f00000000020b04330000000001210436000000070300002900000000030304330000000000310435000800000003001d000000000003004b000004200000613d00070266002000d5000000000002004b0000035b0000613d00000007012000f9000002660010009c000005500000c13d000000070200002900060008002001020000000101000039000500000001001d000000000101041a000000000001004b000004230000c13d000000400200043d0000027301000041000400000002001d0000000001120436000300000001001d0000025c01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d00000004020000290000000402200039000000000101043b000002390110019700000000001204350000025c01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c000004ea0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005160000013d000000400200043d0000001f0430018f0000000505300272000003a00000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000039c0000c13d000000000004004b000003be0000613d000003b10000013d000000400200043d0000001f0430018f0000000505300272000003af0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003ab0000c13d000000000004004b000003be0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002370020009c00000237020080410000004002200210000000000112019f000008d9000104300000000803000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000000301001900000060033002700000023703300197000000400030008c000000400400003900000000040340190000001f0540018f00000005064002720000000506600210000003df0000613d00000008090000290000000007690019000000000801034f000000008a08043c0000000009a90436000000000079004b000003db0000c13d000000000005004b000003ed0000613d000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004000000613d0000001f01400039000000e00210018f00000008040000290000000001420019000000000021004b00000000020000190000000102004039000002640010009c000004110000213d0000000100200190000004110000c13d000000400010043f000000400030008c0000040f0000813d0000000001000019000008d900010430000000400200043d0000001f0430018f000000050530027200000005055002100000040c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004080000c13d000000000004004b000003be0000613d000003b20000013d000002650010009c000004170000a13d000002750100004100000000001004350000004101000039000000040010043f0000026a01000041000008d9000104300000004002100039000000400020043f00000000020404330000000003210436000000070100002900000000010104330000000000130435000000000001004b000004790000c13d000000400100043d0000027602000041000001ed0000013d0000000301000039000000000101041a000800000001001d000002600100004100000000001004390000000001000414000002370010009c0000023701008041000000c00110021000000261011001c70000800b0200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000000080210006c000005500000413d0000000201000039000000000101041a000000000001004b0000000003000019000005440000c13d000002660230012a000000000012001a000005500000413d000800000012001d000000400200043d0000027301000041000700000002001d0000000001120436000400000001001d0000025c01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000806000029000000060060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000606006029000800000006001d0000000100200190000005bf0000613d00000007020000290000000402200039000000000101043b000002390110019700000000001204350000025c01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c000005650000c13d0000000003000031000000200030008c00000020040000390000000004034019000005910000013d00000266032000d1000000000002004b0000047f0000613d00000000022300d9000002660020009c000005500000c13d00000000011300d9000000060010006c00000000010000190000000101002039000000400400043d000001760000013d000000000300041a00000000041300a900000000051400d9000000000035004b000005500000c13d000000000004004b0000000003000019000002fa0000613d00000000032400a900000000044300d9000000000024004b000002fa0000613d000005500000013d0000025c01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000002670200004100000000002004390000023901100197000800000001001d00000004001004430000000001000414000002370010009c0000023701008041000000c00110021000000268011001c7000080020200003908d708d20000040f0000000100200190000005bf0000613d000000000101043b000000000001004b000003fe0000613d000000400200043d0000026901000041000700000002001d00000000001204350000025c01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d00000007020000290000000402200039000000000101043b0000023901100197000000000012043500000000010004140000000802000029000000040020008c000004df0000613d0000000702000029000002370020009c00000237020080410000004002200210000002370010009c0000023701008041000000c001100210000000000121019f0000026a011001c7000000080200002908d708cd0000040f00000000030100190000006003300270000002370030019d00000001002001900000061e0000613d0000000701000029000002640010009c000004110000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001210000013d0000000403000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000026a011001c708d708d20000040f000000000301001900000060033002700000023703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000005040000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000005000000c13d000000000005004b000005130000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005560000613d0000001f01400039000000600110018f0000000402100029000000000012004b00000000010000190000000101004039000300000002001d000002640020009c000004110000213d0000000100100190000004110000c13d0000000301000029000000400010043f000000200030008c000003fe0000413d00000004010000290000000001010433000200000001001d000002740100004100000003020000290000000001120436000400000001001d0000025c0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c000005c00000c13d0000000003000031000000200030008c00000020040000390000000004034019000005ec0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000005500000c13d000000000004004b0000000003000019000004390000613d00000000032400a900000000044300d9000000000024004b000004390000613d000002750100004100000000001004350000001101000039000000040010043f0000026a01000041000008d900010430000000400200043d0000001f0430018f0000000505300272000005620000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000055e0000c13d000000000004004b000003be0000613d000003b10000013d0000000703000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000026a011001c708d708d20000040f000000000301001900000060033002700000023703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000057f0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b0000057b0000c13d000000000005004b0000058e0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006000000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000190000000101004039000600000002001d000002640020009c000004110000213d0000000100100190000004110000c13d0000000601000029000000400010043f000000200030008c000003fe0000413d00000007010000290000000001010433000400000001001d000002740100004100000006020000290000000001120436000700000001001d0000025c0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f0000000100200190000005bf0000613d000000000201043b00000000010004140000023902200197000000040020008c0000062e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000065a0000013d000000000001042f0000000303000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000000301001900000060033002700000023703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005da0000613d000000000701034f0000000308000029000000007907043c00000000089804360000000000a8004b000005d60000c13d000000000005004b000005e90000613d0000000506600210000000000761034f00000003066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000060f0000613d0000001f01400039000000600110018f0000000301100029000002640010009c000004110000213d000000400010043f000000200030008c000003fe0000413d00000003020000290000000003020433000000ff0030008c000003fe0000213d000000020400002900000006024000b90000000705000029000000080050006b0000066d0000a13d0000004d0030008c000005500000213d000006720000013d000000400200043d0000001f0430018f000000050530027200000005055002100000060c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006080000c13d000000000004004b000003be0000613d000003b20000013d000000400200043d0000001f0430018f000000050530027200000005055002100000061b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006170000c13d000000000004004b000003be0000613d000003b20000013d0000023703300197000000400200043d0000001f0430018f00000005053002720000062b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006270000c13d000000000004004b000003be0000613d000003b10000013d0000000603000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000000301001900000060033002700000023703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000006480000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000006440000c13d000000000005004b000006570000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006860000613d0000001f01400039000000600110018f0000000601100029000002640010009c000004110000213d000000400010043f000000200030008c000003fe0000413d00000006020000290000000003020433000000ff0030008c000003fe0000213d000000040200002900000008022000b9000000080000006b000006950000c13d0000004d0030008c000005500000213d0000069a0000013d0000004d0030008c000005500000213d00000006042000fa000000020040006c000005500000c13d000000000003004b0000069c0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006760000c13d000500000006001d000000000006004b0000069c0000c13d000002750100004100000000001004350000001201000039000000040010043f0000026a01000041000008d900010430000000400200043d0000001f0430018f0000000505300272000006920000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000068e0000c13d000000000004004b000003be0000613d000003b10000013d0000004d0030008c000005500000213d00000008042000fa000000040040006c000005500000c13d000000000003004b000006a30000c13d00000005022000fa0000000000210435000002370010009c000002370100804100000040011002100000025a011001c7000008d80001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006a50000c13d0000067d0000013d0000023900100198000006b00000613d000000000001042d000000400100043d00000277020000410000000000210435000002370010009c000002370100804100000040011002100000023f011001c7000008d9000104300002000000000002000000400200043d0000026201000041000200000002001d0000000001120436000100000001001d0000025c01000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f00000001002001900000072b0000613d000000000201043b00000000010004140000023902200197000000040020008c000006d80000c13d0000000003000031000000400030008c00000040040000390000000004034019000000020b000029000007050000013d0000000203000029000002370030009c00000237030080410000004003300210000002370010009c0000023701008041000000c001100210000000000131019f0000023f011001c708d708d20000040f000000020b000029000000000301001900000060033002700000023703300197000000400030008c000000400400003900000000040340190000001f0540018f00000005064002720000000506600210000006f40000613d00000000076b0019000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000079004b000006f00000c13d000000000005004b000007020000613d000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000073c0000613d0000001f01400039000000e00210018f0000000001b20019000000000021004b00000000020000190000000102004039000002640010009c000007250000213d0000000100200190000007250000c13d000000400010043f0000003f0030008c0000072c0000a13d000002650010009c000007250000213d0000004002100039000000400020043f00000000020b04330000000003210436000000010100002900000000010104330000000000130435000000000001004b0000072e0000613d00000266032000d1000000000002004b000007230000613d00000000022300d9000002660020009c000007360000c13d00000000011300d9000000000001042d000002750100004100000000001004350000004101000039000000040010043f0000026a01000041000008d900010430000000000001042f0000000001000019000008d900010430000000400100043d00000276020000410000000000210435000002370010009c000002370100804100000040011002100000023f011001c7000008d900010430000002750100004100000000001004350000001101000039000000040010043f0000026a01000041000008d900010430000000400200043d0000001f0430018f00000005053002720000000505500210000007480000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007440000c13d000000000004004b000007560000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002370020009c00000237020080410000004002200210000000000112019f000008d90001043000010000000000020000000301000039000000000101041a000100000001001d000002600100004100000000001004390000000001000414000002370010009c0000023701008041000000c00110021000000261011001c70000800b0200003908d708d20000040f00000001002001900000078f0000613d000000000101043b000000010210006c000007890000413d0000000201000039000000000101041a000000000001004b0000077e0000613d000000000300041a00000000041300a900000000051400d9000000000035004b000007890000c13d000000000004004b000007840000613d00000000032400a900000000044300d9000000000024004b0000077f0000613d000007890000013d0000000003000019000002660230012a000000000012001a000007890000413d0000000001120019000000000001042d0000000003000019000002660230012a000000000012001a000007890000413d000007820000013d000002750100004100000000001004350000001101000039000000040010043f0000026a01000041000008d900010430000000000001042f0000000043010434000000000132043600000278063001970000001f0530018f000000000014004b000007a60000813d000000000006004b000007a20000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000079c0000c13d000000000005004b000007c00000613d0000000007010019000007b60000013d000000000006004b000007b20000613d000000200760008a00000278077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007ae0000c13d000000000005004b000007c00000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000278023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002790200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000027804a001970000001f03a0018f0000006401500039000000000012004b000007ea0000813d000000000004004b000007e60000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007e00000c13d000000000003004b000008040000613d0000000005010019000007fa0000013d000000000004004b000007f60000613d000000200540008a0000027805500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007f20000c13d000000000003004b000008040000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000025c01000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002370010009c0000023701008041000000c00110021000000263011001c7000080050200003908d708d20000040f00000001002001900000086e0000613d000000000201043b00000000010004140000023902200197000000040020008c000000040a000029000008220000c13d0000000003000031000000200030008c00000020040000390000000004034019000008560000013d00000002030000290000001f0330003900000278033001970000023700a0009c000002370400004100000000040a401900000040044002100000006403300039000002370030009c00000237030080410000006003300210000000000343019f000002370010009c0000023701008041000000c001100210000000000131019f08d708d20000040f000000040a000029000000000301001900000060033002700000023703300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000008440000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000008400000c13d000000000005004b000008530000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000088e0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002640040009c0000086f0000213d00000001001001900000086f0000c13d000000400040043f0000001f0030008c0000086c0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000086c0000c13d000000000001004b000008750000613d000000000001042d0000000001000019000008d900010430000000000001042f000002750100004100000000001004350000004101000039000000040010043f0000026a01000041000008d9000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000027a01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d08d707900000040f00000004020000290000000001210049000002370010009c0000023701008041000002370020009c000002370200804100000060011002100000004002200210000000000121019f000008d900010430000000400200043d0000001f0430018f000000050530027200000005055002100000089a0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008960000c13d000000000004004b000008a80000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002370020009c00000237020080410000004002200210000000000112019f000008d900010430000000000001042f00000000050100190000000000200439000000050030008c000008bd0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008b50000413d000002370030009c000002370300804100000060013002100000000002000414000002370020009c0000023702008041000000c002200210000000000112019f0000027b011001c7000000000205001908d708d20000040f0000000100200190000008cc0000613d000000000101043b000000000001042d000000000001042f000008d0002104210000000102000039000000000001042d0000000002000019000000000001042d000008d5002104230000000102000039000000000001042d0000000002000019000000000001042d000008d700000432000008d80001042e000008d9000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000200000000000000000000000000000180000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d300000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000a9534f8a0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000041976e08000000000000000000000000000000000000000000000000000000005213f9c7000000000000000000000000000000000000000000000000000000005213f9c800000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000003a26dc4e000000000000000000000000000000000000000000000000000000003a26dc4f000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000003ba0b9a9000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf0000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000e1b25e0c000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","NATIVE_TOKEN_ADDR()":"a9534f8a","RESILIENT_ORACLE()":"a4edcd4c","STAKE_POOL()":"3a26dc4f","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100027db635eb17201ed5645e9ca297d7cefba6ee387470178d4592049ef69b","factoryDependencies":{}}},"contracts/oracles/WBETHOracle.sol":{"WBETHOracle":{"abi":[{"inputs":[{"internalType":"address","name":"wbeth","type":"address"},{"internalType":"address","name":"eth","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wbeth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount The amount of ETH for wBETH\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WBETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Fetches the amount of ETH for 1 wBETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of wBETH asset\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WBETHOracle.sol\":\"WBETHOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IWBETH.sol\":{\"keccak256\":\"0xaff923809f41bf7bc321d5285ddf2c03856a3cf0050c005154e31e811161d7db\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9d16862f49fdc93dc8bef402b8489460e013b4c2f742f3f788c95b91deabe957\",\"dweb:/ipfs/QmRQf8kduAB81ZLp3f88YAzzZ8MLZBzpp3pNtKNk78z34h\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/WBETHOracle.sol\":{\"keccak256\":\"0x7370b9e95c87723e0f9606a479251f3e8ef514aaf4b6750f3b1217c32d24b494\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://4e36c15d423502ce5d9ae055509a9293d8fdc4a6cb797ef0c0ab4b2f15f10868\",\"dweb:/ipfs/QmNPnxiPChRPy7djJri3qx5WxZgBYMtmAtQoXATgvuvkk3\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount The amount of ETH for wBETH"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"WBETHOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Fetches the amount of ETH for 1 wBETH"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of wBETH asset","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/WBETHOracle.sol:WBETHOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/WBETHOracle.sol:WBETHOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/WBETHOracle.sol:WBETHOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/WBETHOracle.sol:WBETHOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/WBETHOracle.sol:WBETHOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001200000000000200000000030100190000006003300270000002180330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003bf0000413d000000000201043b000000e002200270000002200020009c000000590000a13d000002210020009c0000006c0000a13d000002220020009c000000d20000a13d000002230020009c000001680000613d000002240020009c000001730000613d000002250020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d085906de0000040f0000016c0000013d0000000002000416000000000002004b000003bf0000c13d0000001f0230003900000219022001970000010002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000001000500003900000005064002100000010006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003bf0000413d000001000100043d0000021a0010009c000003bf0000213d000001200400043d0000021a0040009c000003bf0000213d000001400500043d0000021a0050009c000003bf0000213d000001e00600043d0000021a0060009c000003bf0000213d000001c00700043d000001a00800043d000001800a00043d000001600300043d0000021b0230012a000002000900043d000000000020041b0000021c0030009c000001bc0000213d00000000000a004b000001be0000613d000001d30000013d0000022d0020009c000000a90000213d000002330020009c000000e10000213d000002360020009c0000017a0000613d000002370020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000001000412001000000001001d000f00200000003d000080050100003900000044030000390000000004000415000000100440008a000001ad0000013d000002280020009c0000011f0000213d0000022b0020009c0000017f0000613d0000022c0020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000301000039000000000101041a000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000301043b000000080130006c000001ec0000413d0000000102000039000000000202041a000000010220008a000000000012004b000001460000813d000600000003001d000000400200043d0000024001000041000800000002001d0000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c0000027b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002a70000013d0000022e0020009c000001480000213d000002310020009c0000018e0000613d000002320020009c000003bf0000c13d000000240030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000024d01000041000000a00010043f0000008001000039085907480000040f0000000401000039000000000501041a0000000001000414000002180010009c0000021801008041000000c0011002100000023c011001c70000800d0200003900000003030000390000024e0400004100000008060000290859084f0000040f0000000100200190000003bf0000613d00000008010000290000000402000039000000000012041b00000000010000190000085a0001042e000002260020009c000001990000613d000002270020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000001ad0000013d000002340020009c0000019e0000613d000002350020009c000003bf0000c13d000000240030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000000401100370000000000101043b0000021a0010009c000003bf0000213d000800000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000101043b000000080110014f000000400200043d0000021a001001980000023d0000c13d0000024001000041000800000002001d0000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000002e30000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a000029000003100000013d000002290020009c000001a30000613d0000022a0020009c000003bf0000c13d000000440030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000023b01000041000000a00010043f0000008001000039085907480000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000002180010009c0000021801008041000000c0011002100000023c011001c70000800d020000390000023d040000410859084f0000040f0000000100200190000003bf0000613d00000000010000190000085a0001042e0000022f0020009c000001b40000613d000002300020009c000003bf0000c13d000000440030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000024901000041000000a00010043f0000008001000039085907480000040f00000007010000290000021b0610012a000000000500041a000000000060041b0000021c0010009c000001d10000213d000000080000006b000001d30000c13d000001f20000013d0000000001000416000000000001004b000003bf0000c13d0859065a0000040f000000400200043d0000000000120435000002180020009c0000021802008041000000400120021000000238011001c70000085a0001042e0000000001000416000000000001004b000003bf0000c13d000000000100041a000000800010043f00000239010000410000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000101000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001db0000c13d000000010110018f0000000000140435000002180040009c0000021804008041000000400140021000000238011001c70000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001ad0000013d0000000001000416000000000001004b000003bf0000c13d0000000301000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000401000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a00000005044002100000023a02000041085908310000040f0000021a01100197000000800010043f00000239010000410000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000201000039000000000101041a000000800010043f00000239010000410000085a0001042e00000000000a004b000001d30000613d0000000003000415000000120330008a0000000503300210000000000008004b000001c80000613d0000000003000415000000110330008a0000000503300210000000000007004b0000020b0000c13d00000000000a004b0000000002000019000000010200c0390000000503300270000000000302001f0000020b0000613d000000400100043d0000021e02000041000001d50000013d000000080000006b000001f20000c13d000000400100043d0000024a020000410000000000210435000002180010009c000002180100804100000040011002100000021f011001c70000085b000104300000000301000039000000000101041a000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000080210006c000002440000813d000002520100004100000000001004350000001101000039000000040010043f00000247010000410000085b000104300000000101000039000000000701041a000000400100043d00000008020000290000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f0000024b011001c70000800d0200003900000004030000390000024c040000410859084f0000040f0000000100200190000003bf0000613d00000008010000290000000102000039000000000012041b00000000010000190000085a0001042e000100000001001d000600000004001d000700000005001d000800000006001d000400000007001d000300000008001d000500000009001d00020000000a001d0859064f0000040f00000006010000290859064f0000040f00000007010000290859064f0000040f00000008010000290859064f0000040f0000000102000029000000800020043f0000000603000029000000a00030043f0000000705000029000000c00050043f00000001010000390000000204000029000000000041041b00000002010000390000000304000029000000000041041b00000003010000390000000404000029000000000041041b00000004010000390000000504000029000000000041041b0000000804000029000000e00040043f0000014000000443000001600020044300000020020000390000018000200443000001a0003004430000004003000039000001c000300443000001e000500443000000600300003900000200003004430000022000400443000001000020044300000120001004430000021d010000410000085a0001042e0000024f010000410000000000120435000002180020009c000002180200804100000040012002100000021f011001c70000085b000104300000000201000039000000000101041a000000000001004b0000000003000019000002510000c13d000002430230012a000000000012001a000001ec0000413d000000000112001a000000400400043d0000025e0000c13d0000000001000019000001870000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000002490000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000002490000013d000600000001001d0000024001000041000800000004001d0000000001140436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000003860000c13d0000000003000031000000200030008c00000020040000390000000004034019000003b20000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000002950000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000002910000c13d000000000005004b000002a40000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003560000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000002420010009c000004c40000213d0000000100200190000004c40000c13d000000400010043f000000200030008c000003bf0000413d0000000301000039000000000101041a000700000001001d00000008010000290000000001010433000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000070210006c0000000606000029000001ec0000413d0000000201000039000000000101041a000000000001004b00000000030000190000042c0000c13d000002430230012a000000000012001a000001ec0000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000001ec0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004390000c13d000000400100043d0000024802000041000001d50000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000080a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000002fe0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002fa0000c13d000000000005004b0000030d0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003650000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002420020009c000004c40000213d0000000100100190000004c40000c13d000000400020043f000000200030008c000003bf0000413d000700000002001d00000000010a0433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000003c10000c13d000002500100004100000007020000290000000001120436000500000001001d0000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d00000007020000290000000402200039000000000101043b0000021a0110019700000000001204350000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000004910000c13d0000000003000031000000200030008c00000020040000390000000004034019000004bd0000013d000000400200043d0000001f0430018f0000000505300272000003620000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000035e0000c13d000000000004004b000003800000613d000003730000013d000000400200043d0000001f0430018f0000000505300272000003710000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000036d0000c13d000000000004004b000003800000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b000104300000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003a00000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000039c0000c13d000000000005004b000003af0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004170000613d0000001f01400039000000600110018f0000000804100029000000000014004b00000000010000190000000101004039000002420040009c000004c40000213d0000000100100190000004c40000c13d000000400040043f000000200030008c000004260000813d00000000010000190000085b000104300000000301000039000000000101041a000700000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000070210006c000001ec0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004ca0000c13d000002430230012a000000000012001a000001ec0000413d000700000012001d000000400200043d0000025001000041000500000002001d0000000001120436000400000001001d0000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d0000000100200190000005620000613d00000005020000290000000402200039000000000101043b0000021a0110019700000000001204350000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005080000c13d0000000003000031000000200030008c00000020040000390000000004034019000005340000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004230000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000041f0000c13d000000000004004b000003800000613d000003740000013d00000008010000290000000001010433000000060010006c00000000010000190000000101002039000001870000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000002ce0000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000002ce0000013d0000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000101043b000002440200004100000000002004390000021a01100197000800000001001d00000004001004430000000001000414000002180010009c0000021801008041000000c00110021000000245011001c70000800202000039085908540000040f0000000100200190000005620000613d000000000101043b000000000001004b000003bf0000613d000000400200043d0000024601000041000700000002001d00000000001204350000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d00000007020000290000000402200039000000000101043b0000021a01100197000000000012043500000000010004140000000802000029000000040020008c000004860000613d0000000702000029000002180020009c00000218020080410000004002200210000002180010009c0000021801008041000000c001100210000000000121019f00000247011001c700000008020000290859084f0000040f00000000030100190000006003300270000002180030019d0000000100200190000005c00000613d0000000701000029000002420010009c000004c40000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a00000000010004140000013d0000013d0000000703000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f00000247011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004ab0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004a70000c13d000000000005004b000004ba0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004f90000613d0000001f01400039000000600110018f00000007020000290000000001210019000500000001001d000002420010009c000004d70000a13d000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000003d70000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000003d70000013d0000000501000029000000400010043f000000200030008c000003bf0000413d0000000001020433000400000001001d000002510100004100000005020000290000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005630000c13d0000000003000031000000200030008c000000200400003900000000040340190000058f0000013d000000400200043d0000001f0430018f0000000505300272000005050000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005010000c13d000000000004004b000003800000613d000003730000013d0000000503000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f00000247011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005220000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b0000051e0000c13d000000000005004b000005310000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005a20000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002420020009c000004c40000213d0000000100100190000004c40000c13d0000000801000029000000400010043f000000200030008c000003bf0000413d00000005010000290000000001010433000400000001001d000002510100004100000008020000290000000001120436000500000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005d00000c13d0000000003000031000000200030008c00000020040000390000000004034019000005fc0000013d000000000001042f0000000503000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000057d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005790000c13d000000000005004b0000058c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005b10000613d0000001f01400039000000600110018f0000000501100029000002420010009c000004c40000213d000000400010043f000000200030008c000003bf0000413d00000005020000290000000003020433000000ff0030008c000003bf0000213d000000040200002900000008022000b9000000080000006b0000060f0000c13d0000004d0030008c000001ec0000213d000006140000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ae0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005aa0000c13d000000000004004b000003800000613d000003740000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005bd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005b90000c13d000000000004004b000003800000613d000003740000013d0000021803300197000000400200043d0000001f0430018f0000000505300272000005cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005c90000c13d000000000004004b000003800000613d000003730000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005ea0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005e60000c13d000000000005004b000005f90000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006280000613d0000001f01400039000000600110018f0000000801100029000002420010009c000004c40000213d000000400010043f000000200030008c000003bf0000413d00000008020000290000000003020433000000ff0030008c000003bf0000213d000000040200002900000007022000b9000000070000006b000006370000c13d0000004d0030008c000001ec0000213d0000063c0000013d0000004d0030008c000001ec0000213d00000008042000fa000000040040006c000001ec0000c13d000000000003004b0000063e0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006180000c13d000600000006001d000000000006004b0000063e0000c13d000002520100004100000000001004350000001201000039000000040010043f00000247010000410000085b00010430000000400200043d0000001f0430018f0000000505300272000006340000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006300000c13d000000000004004b000003800000613d000003730000013d0000004d0030008c000001ec0000213d00000007042000fa000000040040006c000001ec0000c13d000000000003004b000006450000c13d00000006022000fa0000000000210435000002180010009c0000021801008041000000400110021000000238011001c70000085a0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006470000c13d0000061f0000013d0000021a00100198000006520000613d000000000001042d000000400100043d00000253020000410000000000210435000002180010009c000002180100804100000040011002100000021f011001c70000085b000104300002000000000002000000400200043d0000024001000041000200000002001d0000000001120436000100000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000006b50000613d000000000201043b00000000010004140000021a02200197000000040020008c000006790000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006a60000013d0000000203000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000020a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006940000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006900000c13d000000000005004b000006a30000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006be0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002420010009c000006b60000213d0000000100200190000006b60000c13d000000400010043f0000001f0030008c000006bc0000a13d00000000010a0433000000000001042d000000000001042f000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b0001043000000000010000190000085b00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006ca0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006c60000c13d000000000004004b000006d80000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b0001043000010000000000020000000301000039000000000101041a000100000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000007110000613d000000000101043b000000010210006c0000070b0000413d0000000201000039000000000101041a000000000001004b000007000000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000070b0000c13d000000000004004b000007060000613d00000000032400a900000000044300d9000000000024004b000007010000613d0000070b0000013d0000000003000019000002430230012a000000000012001a0000070b0000413d0000000001120019000000000001042d0000000003000019000002430230012a000000000012001a0000070b0000413d000007040000013d000002520100004100000000001004350000001101000039000000040010043f00000247010000410000085b00010430000000000001042f0000000043010434000000000132043600000254063001970000001f0530018f000000000014004b000007280000813d000000000006004b000007240000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000071e0000c13d000000000005004b000007420000613d0000000007010019000007380000013d000000000006004b000007340000613d000000200760008a00000254077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007300000c13d000000000005004b000007420000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000254023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002550200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025404a001970000001f03a0018f0000006401500039000000000012004b0000076c0000813d000000000004004b000007680000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007620000c13d000000000003004b000007860000613d00000000050100190000077c0000013d000000000004004b000007780000613d000000200540008a0000025405500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007740000c13d000000000003004b000007860000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000023a01000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000007f00000613d000000000201043b00000000010004140000021a02200197000000040020008c000000040a000029000007a40000c13d0000000003000031000000200030008c00000020040000390000000004034019000007d80000013d00000002030000290000001f0330003900000254033001970000021800a0009c000002180400004100000000040a401900000040044002100000006403300039000002180030009c00000218030080410000006003300210000000000343019f000002180010009c0000021801008041000000c001100210000000000131019f085908540000040f000000040a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007c60000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007c20000c13d000000000005004b000007d50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008100000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002420040009c000007f10000213d0000000100100190000007f10000c13d000000400040043f0000001f0030008c000007ee0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000007ee0000c13d000000000001004b000007f70000613d000000000001042d00000000010000190000085b00010430000000000001042f000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025601000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d085907120000040f00000004020000290000000001210049000002180010009c0000021801008041000002180020009c000002180200804100000060011002100000004002200210000000000121019f0000085b00010430000000400200043d0000001f0430018f000000050530027200000005055002100000081c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008180000c13d000000000004004b0000082a0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b00010430000000000001042f00000000050100190000000000200439000000050030008c0000083f0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008370000413d000002180030009c000002180300804100000060013002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000257011001c70000000002050019085908540000040f00000001002001900000084e0000613d000000000101043b000000000001042d000000000001042f00000852002104210000000102000039000000000001042d0000000002000019000000000001042d00000857002104230000000102000039000000000001042d0000000002000019000000000001042d00000859000004320000085a0001042e0000085b00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000140000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d3000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000003ba0b9a9000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010002591f623af61607d81fe0b85a3b65f84fc4da3c007c065c9951b6d0dc51","factoryDependencies":{}}},"contracts/oracles/WeETHAccountantOracle.sol":{"WeETHAccountantOracle":{"abi":[{"inputs":[{"internalType":"address","name":"accountant","type":"address"},{"internalType":"address","name":"weethLRT","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ACCOUNTANT","outputs":[{"internalType":"contract IAccountant","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"weethLRT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ACCOUNTANT\",\"outputs\":[{\"internalType\":\"contract IAccountant\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of WETH\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WeETHAccountantOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"ACCOUNTANT()\":{\"notice\":\"Address of Accountant\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the WETH for 1 weETH LRT\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WeETHAccountantOracle.sol\":\"WeETHAccountantOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/IAccountant.sol\":{\"keccak256\":\"0x04672ffcad2a2f951d7afc7288a5875dc6e67d12445666c959ac64966102b06b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f034d1afbbe39db076d65058d9ab9d4b914f1c87908e72c2ab73aae86fe0d222\",\"dweb:/ipfs/QmXV1D3Ahzs6cCE8KWvqzGNnBsUt4q3bcTo8DyWzi4LWDS\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/WeETHAccountantOracle.sol\":{\"keccak256\":\"0x2294bc2982a57a72bcbb464aa73bb7ef063dc8dc729fddbeb13efc07fbd3d9c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://d3a25ee032f469e29b94407a2a9af15ab50559a3f43c3cb6e19ac818a30ad5c7\",\"dweb:/ipfs/QmWwkpo2spVBhdN5yAzAi88x9GWA8nSKAFCj9iCm41Gi8a\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount Amount of WETH"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"WeETHAccountantOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"ACCOUNTANT()":{"notice":"Address of Accountant"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the WETH for 1 weETH LRT"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of Ether.fi tokens based on an `Accountant` contract (i.e. weETHs and weETHk)","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/WeETHAccountantOracle.sol:WeETHAccountantOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/WeETHAccountantOracle.sol:WeETHAccountantOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/WeETHAccountantOracle.sol:WeETHAccountantOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/WeETHAccountantOracle.sol:WeETHAccountantOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/WeETHAccountantOracle.sol:WeETHAccountantOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200150000000000020000000003010019000000600330027000000220033001970000000100200190000000280000c13d0000008004000039000000400040043f000000040030008c000003df0000413d000000000201043b000000e002200270000002280020009c000000660000213d000002350020009c000000750000a13d000002360020009c000000970000a13d000002370020009c0000011b0000613d000002380020009c000001200000613d000002390020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001ce0000c13d000000010110018f0000000000140435000002200040009c0000022004008041000000400140021000000241011001c70000087b0001042e0000000002000416000000000002004b000003df0000c13d0000001f0230003900000221022001970000012002200039000000400020043f0000001f0230018f00000005043002720000003a0000613d000001200500003900000005064002100000012006600039000000000701034f000000007807043c0000000005850436000000000065004b000000360000c13d000000000002004b000000490000613d0000000504400210000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001400030008c000003df0000413d000001200300043d000002220030009c000003df0000213d000001400100043d000002220010009c000003df0000213d000001600500043d000002220050009c000003df0000213d000001800700043d000002220070009c000003df0000213d000002200600043d000002220060009c000003df0000213d000002000800043d000001e00900043d000001c00b00043d000001a00400043d000002230240012a000002400a00043d000000000020041b000002240040009c000002000000213d00000000000b004b000002020000c13d0000020a0000013d000002290020009c000000860000a13d0000022a0020009c000000be0000a13d0000022b0020009c0000013c0000613d0000022c0020009c000001470000613d0000022d0020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d087a06ff0000040f000001400000013d0000023c0020009c000000cd0000213d0000023f0020009c0000014e0000613d000002400020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412001300000001001d001200200000003d000080050100003900000044030000390000000004000415000000130440008a000001950000013d000002300020009c0000010c0000213d000002330020009c000001530000613d000002340020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000f00000001001d000e00000000001d0000800501000039000000440300003900000000040004150000000f0440008a000001950000013d0000023a0020009c0000018b0000613d0000023b0020009c000003df0000c13d000000240030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000000401100370000000000101043b000900000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025601000041000000a00010043f0000008001000039087a07690000040f0000000401000039000000000501041a0000000001000414000002200010009c0000022001008041000000c00110021000000245011001c70000800d02000039000000030300003900000257040000410000000906000029087a08700000040f0000000100200190000003df0000613d00000009010000290000000402000039000000000012041b00000000010000190000087b0001042e0000022e0020009c0000019c0000613d0000022f0020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000b00000001001d000a00400000003d0000800501000039000000440300003900000000040004150000000b0440008a000001950000013d0000023d0020009c000001a10000613d0000023e0020009c000003df0000c13d000000240030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000000401100370000000000101043b000002220010009c000003df0000213d000900000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000101043b000000090110014f000000400200043d00000222001001980000025c0000c13d0000024901000041000900000002001d0000000001120436000800000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c0000029b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000090a000029000002c80000013d000002310020009c000001a90000613d000002320020009c000003df0000c13d0000000001000416000000000001004b000003df0000c13d0000000001000412000d00000001001d000c00800000003d0000800501000039000000440300003900000000040004150000000d0440008a000001950000013d0000000001000416000000000001004b000003df0000c13d0000000201000039000001a50000013d000000440030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025201000041000000a00010043f0000008001000039087a07690000040f0000000801000029000002230610012a000000000500041a000000000060041b000002240010009c000001e50000213d000000090000006b000001e70000613d000002020000013d0000000001000416000000000001004b000003df0000c13d087a067a0000040f000000400200043d0000000000120435000002200020009c0000022002008041000000400120021000000241011001c70000087b0001042e0000000001000416000000000001004b000003df0000c13d000000000100041a000000800010043f00000242010000410000087b0001042e0000000001000416000000000001004b000003df0000c13d0000000101000039000001a50000013d0000000001000416000000000001004b000003df0000c13d0000000301000039000000000101041a000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000301043b000000090130006c000001df0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008002000039000001cc0000813d000700000003001d000000400300043d0000024901000041000900000003001d0000000001130436000800000001001d000002430100004100000000001004390000000001000412000000040010044300000024002004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c0000030e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000033a0000013d0000000001000416000000000001004b000003df0000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a00000005044002100000024302000041087a08520000040f0000022201100197000000800010043f00000242010000410000087b0001042e0000000001000416000000000001004b000003df0000c13d0000000301000039000001a50000013d0000000001000416000000000001004b000003df0000c13d0000000401000039000000000101041a000000800010043f00000242010000410000087b0001042e000000440030008c000003df0000413d0000000002000416000000000002004b000003df0000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024401000041000000a00010043f0000008001000039087a07690000040f00000002010000390000000805000029000000000051041b00000003030000390000000906000029000000000063041b0000000001000414000002200010009c0000022001008041000000c00110021000000245011001c70000800d020000390000024604000041087a08700000040f0000000100200190000003df0000613d00000000010000190000087b0001042e0000000301000039000000000101041a000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000090210006c000002630000813d0000025b0100004100000000001004350000001101000039000000040010043f00000250010000410000087c00010430000000090000006b000002020000613d0000000101000039000000000701041a000000400100043d00000009020000290000000000210435000002200010009c000002200100804100000040011002100000000002000414000002200020009c0000022002008041000000c002200210000000000112019f00000254011001c70000800d0200003900000004030000390000025504000041087a08700000040f0000000100200190000003df0000613d00000009010000290000000102000039000000000012041b00000000010000190000087b0001042e00000000000b004b0000020a0000c13d000000400100043d00000253020000410000000000210435000002200010009c0000022001008041000000400110021000000227011001c70000087c000104300000000004000415000000150440008a0000000504400210000000000009004b000002140000613d0000000004000415000000140440008a0000000504400210000000000008004b0000021d0000c13d00000000000b004b0000000002000019000000010200c0390000000504400270000000000402001f0000021d0000613d000000400100043d0000022602000041000002040000013d000900000003001d000100000001001d000600000005001d000800000006001d000700000007001d000400000008001d000300000009001d00050000000a001d00020000000b001d087a066f0000040f0000000601000029087a066f0000040f0000000701000029087a066f0000040f0000000801000029087a066f0000040f0000000101000029000000800010043f0000000601000029000000a00010043f0000000701000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000801000029000000e00010043f0000000901000029087a066f0000040f0000000904000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d0000020000200443000002200030044300000080020000390000024000200443000002600040044300000100001004430000000501000039000001200010044300000225010000410000087b0001042e00000258010000410000000000120435000002200020009c0000022002008041000000400120021000000227011001c70000087c000104300000000201000039000000000101041a000000000001004b0000000003000019000002700000c13d0000024c0230012a000000000012001a000001df0000413d000000000112001a000000400400043d0000027d0000c13d0000000001000019000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000002680000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000002680000013d000700000001001d0000024901000041000900000004001d0000000001140436000800000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000003a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000003d20000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000090a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080b000029000002b60000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002b20000c13d000000000005004b000002c50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003760000613d0000001f01400039000000600110018f0000000002a10019000000000012004b000000000100001900000001010040390000024b0020009c000004e40000213d0000000100100190000004e40000c13d000000400020043f000000200030008c000003df0000413d000800000002001d00000000010a0433000900000001001d0000000101000039000700000001001d000000000101041a000000000001004b000003e10000c13d000002590100004100000008020000290000000001120436000600000001001d0000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d00000008020000290000000402200039000000000101043b000002220110019700000000001204350000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000004b10000c13d0000000003000031000000200030008c00000020040000390000000004034019000004dd0000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003280000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003240000c13d000000000005004b000003370000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003850000613d0000001f01400039000000600210018f0000000901200029000000000021004b000000000200001900000001020040390000024b0010009c000004e40000213d0000000100200190000004e40000c13d000000400010043f000000200030008c000003df0000413d0000000301000039000000000101041a000800000001001d00000009010000290000000001010433000900000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000080210006c0000000706000029000001df0000413d0000000201000039000000000101041a000000000001004b00000000030000190000044c0000c13d0000024c0230012a000000000012001a000001df0000413d0000000001120019000000090010006b000000000301001900000009030040290000000401000039000000000101041a0000000002030019000000000031001a000001df0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004590000c13d000000400100043d0000025102000041000002040000013d000000400200043d0000001f0430018f0000000505300272000003820000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000037e0000c13d000000000004004b000003930000c13d000003a00000013d000000400200043d0000001f0430018f0000000505300272000003910000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000038d0000c13d000000000004004b000003a00000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c000104300000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003c00000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003bc0000c13d000000000005004b000003cf0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004370000613d0000001f01400039000000600110018f0000000904100029000000000014004b000000000100001900000001010040390000024b0040009c000004e40000213d0000000100100190000004e40000c13d000000400040043f000000200030008c000004460000813d00000000010000190000087c000104300000000301000039000000000101041a000800000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000005820000613d000000000101043b000000080210006c000001df0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004ea0000c13d0000024c0230012a000000000012001a000001df0000413d000800000012001d000000400200043d0000025901000041000600000002001d0000000001120436000500000001001d0000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000806000029000000090060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000906006029000800000006001d0000000100200190000005820000613d00000006020000290000000402200039000000000101043b000002220110019700000000001204350000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005280000c13d0000000003000031000000200030008c00000020040000390000000004034019000005540000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004430000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000043f0000c13d000000000004004b000003a00000613d000003940000013d00000009010000290000000001010433000000070010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000003610000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000003610000013d0000024301000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000101043b0000024d0200004100000000002004390000022201100197000900000001001d00000004001004430000000001000414000002200010009c0000022001008041000000c0011002100000024e011001c70000800202000039087a08750000040f0000000100200190000005820000613d000000000101043b000000000001004b000003df0000613d000000400200043d0000024f01000041000800000002001d00000000001204350000024301000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d00000008020000290000000402200039000000000101043b0000022201100197000000000012043500000000010004140000000902000029000000040020008c000004a60000613d0000000802000029000002200020009c00000220020080410000004002200210000002200010009c0000022001008041000000c001100210000000000121019f00000250011001c70000000902000029087a08700000040f00000000030100190000006003300270000002200030019d0000000100200190000005e00000613d00000008010000290000024b0010009c000004e40000213d0000000801000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001c30000013d0000000803000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000250011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000004cb0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004c70000c13d000000000005004b000004da0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005190000613d0000001f01400039000000600110018f00000008020000290000000001210019000600000001001d0000024b0010009c000004f70000a13d0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001df0000c13d000000000004004b0000000003000019000003f70000613d00000000032400a900000000044300d9000000000024004b000001df0000c13d000003f70000013d0000000601000029000000400010043f000000200030008c000003df0000413d0000000001020433000500000001001d0000025a0100004100000006020000290000000001120436000800000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005830000c13d0000000003000031000000200030008c00000020040000390000000004034019000005af0000013d000000400200043d0000001f0430018f0000000505300272000005250000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005210000c13d000000000004004b000003a00000613d000003930000013d0000000603000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000250011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005420000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b0000053e0000c13d000000000005004b000005510000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005c20000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000900000002001d0000024b0020009c000004e40000213d0000000100100190000004e40000c13d0000000901000029000000400010043f000000200030008c000003df0000413d00000006010000290000000001010433000500000001001d0000025a0100004100000009020000290000000001120436000600000001001d000002430100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000005820000613d000000000201043b00000000010004140000022202200197000000040020008c000005f00000c13d0000000003000031000000200030008c000000200400003900000000040340190000061c0000013d000000000001042f0000000603000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a0000290000059d0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005990000c13d000000000005004b000005ac0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005d10000613d0000001f01400039000000600110018f00000006011000290000024b0010009c000004e40000213d000000400010043f000000200030008c000003df0000413d00000006020000290000000003020433000000ff0030008c000003df0000213d000000050200002900000009022000b9000000090000006b0000062f0000c13d0000004d0030008c000001df0000213d000006340000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ce0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ca0000c13d000000000004004b000003a00000613d000003940000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005dd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d90000c13d000000000004004b000003a00000613d000003940000013d0000022003300197000000400200043d0000001f0430018f0000000505300272000005ed0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e90000c13d000000000004004b000003a00000613d000003930000013d0000000903000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a0000290000060a0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006060000c13d000000000005004b000006190000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006480000613d0000001f01400039000000600110018f00000009011000290000024b0010009c000004e40000213d000000400010043f000000200030008c000003df0000413d00000009020000290000000003020433000000ff0030008c000003df0000213d000000050200002900000008022000b9000000080000006b000006570000c13d0000004d0030008c000001df0000213d0000065c0000013d0000004d0030008c000001df0000213d00000009042000fa000000050040006c000001df0000c13d000000000003004b0000065e0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006380000c13d000700000006001d000000000006004b0000065e0000c13d0000025b0100004100000000001004350000001201000039000000040010043f00000250010000410000087c00010430000000400200043d0000001f0430018f0000000505300272000006540000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006500000c13d000000000004004b000003a00000613d000003930000013d0000004d0030008c000001df0000213d00000008042000fa000000050040006c000001df0000c13d000000000003004b000006650000c13d00000007022000fa0000000000210435000002200010009c0000022001008041000000400110021000000241011001c70000087b0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006670000c13d0000063f0000013d0000022200100198000006720000613d000000000001042d000000400100043d0000025c020000410000000000210435000002200010009c0000022001008041000000400110021000000227011001c70000087c000104300002000000000002000000400200043d0000024901000041000200000002001d0000000001120436000100000001001d0000024301000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000006d60000613d000000000201043b00000000010004140000022202200197000000040020008c0000069a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006c70000013d0000000203000029000002200030009c00000220030080410000004003300210000002200010009c0000022001008041000000c001100210000000000131019f00000227011001c7087a08750000040f000000020a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006b50000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006b10000c13d000000000005004b000006c40000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006df0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000024b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f0000001f0030008c000006dd0000a13d00000000010a0433000000000001042d000000000001042f0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c0001043000000000010000190000087c00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006eb0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006e70000c13d000000000004004b000006f90000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c0001043000010000000000020000000301000039000000000101041a000100000001001d000002470100004100000000001004390000000001000414000002200010009c0000022001008041000000c00110021000000248011001c70000800b02000039087a08750000040f0000000100200190000007320000613d000000000101043b000000010210006c0000072c0000413d0000000201000039000000000101041a000000000001004b000007210000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000072c0000c13d000000000004004b000007270000613d00000000032400a900000000044300d9000000000024004b000007220000613d0000072c0000013d00000000030000190000024c0230012a000000000012001a0000072c0000413d0000000001120019000000000001042d00000000030000190000024c0230012a000000000012001a0000072c0000413d000007250000013d0000025b0100004100000000001004350000001101000039000000040010043f00000250010000410000087c00010430000000000001042f000000004301043400000000013204360000025d063001970000001f0530018f000000000014004b000007490000813d000000000006004b000007450000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000073f0000c13d000000000005004b000007630000613d0000000007010019000007590000013d000000000006004b000007550000613d000000200760008a0000025d077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007510000c13d000000000005004b000007630000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f033000390000025d023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d0000002403500039000000400200003900000000002304350000025e0200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025d04a001970000001f03a0018f0000006401500039000000000012004b0000078d0000813d000000000004004b000007890000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007830000c13d000000000003004b000007a70000613d00000000050100190000079d0000013d000000000004004b000007990000613d000000200540008a0000025d05500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007950000c13d000000000003004b000007a70000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024301000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002200010009c0000022001008041000000c0011002100000024a011001c70000800502000039087a08750000040f0000000100200190000008110000613d000000000201043b00000000010004140000022202200197000000040020008c000000040a000029000007c50000c13d0000000003000031000000200030008c00000020040000390000000004034019000007f90000013d00000002030000290000001f033000390000025d033001970000022000a0009c000002200400004100000000040a401900000040044002100000006403300039000002200030009c00000220030080410000006003300210000000000343019f000002200010009c0000022001008041000000c001100210000000000131019f087a08750000040f000000040a000029000000000301001900000060033002700000022003300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007e70000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007e30000c13d000000000005004b000007f60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008310000613d0000001f01400039000000600110018f0000000004a10019000000000014004b000000000100001900000001010040390000024b0040009c000008120000213d0000000100100190000008120000c13d000000400040043f0000001f0030008c0000080f0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000080f0000c13d000000000001004b000008180000613d000000000001042d00000000010000190000087c00010430000000000001042f0000025b0100004100000000001004350000004101000039000000040010043f00000250010000410000087c000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025f01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d087a07330000040f00000004020000290000000001210049000002200010009c0000022001008041000002200020009c000002200200804100000060011002100000004002200210000000000121019f0000087c00010430000000400200043d0000001f0430018f000000050530027200000005055002100000083d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008390000c13d000000000004004b0000084b0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002200020009c00000220020080410000004002200210000000000112019f0000087c00010430000000000001042f00000000050100190000000000200439000000050030008c000008600000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008580000413d000002200030009c000002200300804100000060013002100000000002000414000002200020009c0000022002008041000000c002200210000000000112019f00000260011001c70000000002050019087a08750000040f00000001002001900000086f0000613d000000000101043b000000000001042d000000000001042f00000873002104210000000102000039000000000001042d0000000002000019000000000001042d00000878002104230000000102000039000000000001042d0000000002000019000000000001042d0000087a000004320000087b0001042e0000087c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000180000001000000000000000000b8a5589b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000069240425000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000008b9d294000000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000282a8700000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","ACCOUNTANT()":"8b9d2940","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100026180b0bca9cc715633bbc6c6a4236eb0ac7941d55807320ff14b17d8d0","factoryDependencies":{}}},"contracts/oracles/WeETHOracle.sol":{"WeETHOracle":{"abi":[{"inputs":[{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"weETH","type":"address"},{"internalType":"address","name":"eETH","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_POOL","outputs":[{"internalType":"contract IEtherFiLiquidityPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityPool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"weETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"eETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_POOL\",\"outputs\":[{\"internalType\":\"contract IEtherFiLiquidityPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of eETH\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WeETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"LIQUIDITY_POOL()\":{\"notice\":\"Address of Liqiudity pool\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the eETH for 1 weETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of weETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WeETHOracle.sol\":\"WeETHOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IEtherFiLiquidityPool.sol\":{\"keccak256\":\"0xce3955be63e9f3787e90573c72c119238d2e63712c1a828b874145b1f91761d6\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://861adbf644c2884b4c55ac4d3ae94eabb917a3dfd184cda2356b09a5c301ffe8\",\"dweb:/ipfs/QmTxe6CuC4nT1su9FM84KQYxLTXfwzEa2ov5uzUnCWTzU5\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/WeETHOracle.sol\":{\"keccak256\":\"0xc583612fabdf801e09f4121c1cb8352fe3cc3fdf1c843aea2dcff8d2a3095587\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://abd4e281ea82ffc73fe6e093a76ed1e355f3cbb1613ce0831ec0df2e6ade557e\",\"dweb:/ipfs/QmUkBDyZmsJFGz4vzBRPYeKL2hfeE9AkRx84b1m6EaM7X3\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount Amount of eETH"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"WeETHOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"LIQUIDITY_POOL()":{"notice":"Address of Liqiudity pool"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the eETH for 1 weETH"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of weETH","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/WeETHOracle.sol:WeETHOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/WeETHOracle.sol:WeETHOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/WeETHOracle.sol:WeETHOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/WeETHOracle.sol:WeETHOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/WeETHOracle.sol:WeETHOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200150000000000020000000003010019000000600330027000000223033001970000000100200190000000350000c13d0000008004000039000000400040043f000000040030008c000003e80000413d000000000201043b000000e0022002700000022b0020009c000000720000213d000002380020009c000000810000a13d000002390020009c000000d30000a13d0000023a0020009c000001230000613d0000023b0020009c000001460000613d0000023c0020009c000003e80000c13d000000440030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025501000041000000a00010043f0000008001000039088607750000040f0000000801000029000002260610012a000000000500041a000000000060041b000002270010009c000001d30000213d000000090000006b000001d50000613d000002070000013d0000000002000416000000000002004b000003e80000c13d0000001f0230003900000224022001970000012002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000470000613d00000120050000390000012006400039000000000701034f000000007807043c0000000005850436000000000065004b000000430000c13d000000000002004b000000550000613d000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001400030008c000003e80000413d000001200300043d000002250030009c000003e80000213d000001400100043d000002250010009c000003e80000213d000001600500043d000002250050009c000003e80000213d000001800700043d000002250070009c000003e80000213d000002200600043d000002250060009c000003e80000213d000002000800043d000001e00900043d000001c00b00043d000001a00400043d000002260240012a000002400a00043d000000000020041b000002270040009c000002050000213d00000000000b004b000002070000c13d0000020f0000013d0000022c0020009c000000920000a13d0000022d0020009c000000e20000a13d0000022e0020009c0000014b0000613d0000022f0020009c000001560000613d000002300020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0886070b0000040f0000014f0000013d0000023f0020009c000000f10000213d000002420020009c0000015d0000613d000002430020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412001300000001001d001200200000003d000080050100003900000044030000390000000004000415000000130440008a000001cc0000013d000002330020009c000000fa0000213d000002360020009c000001620000613d000002370020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000301000039000000000101041a000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000301043b000000090130006c000001ff0000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008004000039000001210000813d000700000003001d000000400200043d0000024c010000410000000001120436000800000001001d000900000002001d00000004012000390000024d020000410000000000210435000002460100004100000000001004390000000001000412000000040010044300000024004004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000002a40000c13d0000000003000031000000200030008c00000020040000390000000004034019000002d00000013d0000023d0020009c000001710000613d0000023e0020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412000f00000001001d000e00600000003d0000800501000039000000440300003900000000040004150000000f0440008a000001cc0000013d000002310020009c000001af0000613d000002320020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412000b00000001001d000a00400000003d0000800501000039000000440300003900000000040004150000000b0440008a000001cc0000013d000002400020009c000001b70000613d000002410020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000401000039000001b30000013d000002340020009c000001c20000613d000002350020009c000003e80000c13d000000440030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024701000041000000a00010043f0000008001000039088607750000040f00000002010000390000000805000029000000000051041b00000003030000390000000906000029000000000063041b0000000001000414000002230010009c0000022301008041000000c00110021000000248011001c70000800d0200003900000249040000410886087c0000040f0000000100200190000003e80000613d0000000001000019000008870001042e000000240030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000000401100370000000000101043b000900000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025901000041000000a00010043f0000008001000039088607750000040f0000000401000039000000000501041a0000000001000414000002230010009c0000022301008041000000c00110021000000248011001c70000800d0200003900000003030000390000025a0400004100000009060000290886087c0000040f0000000100200190000003e80000613d00000009010000290000000402000039000000000012041b0000000001000019000008870001042e0000000001000416000000000001004b000003e80000c13d0000000201000039000001b30000013d0000000001000416000000000001004b000003e80000c13d088606830000040f000000400200043d0000000000120435000002230020009c0000022302008041000000400120021000000244011001c7000008870001042e0000000001000416000000000001004b000003e80000c13d000000000100041a000000800010043f0000024501000041000008870001042e0000000001000416000000000001004b000003e80000c13d0000000101000039000001b30000013d0000000001000416000000000001004b000003e80000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001ee0000c13d000000010110018f0000000000140435000002230040009c0000022304008041000000400140021000000244011001c7000008870001042e000000240030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000000401100370000000000101043b000002250010009c000003e80000213d000900000001001d000002460100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000101043b000000090110014f000000400200043d0000022500100198000002610000c13d0000024c010000410000000001120436000800000001001d000900000002001d00000004012000390000024d0200004100000000002104350000024601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c0000030c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000000090a000029000003390000013d0000000001000416000000000001004b000003e80000c13d0000000301000039000000000101041a000000800010043f0000024501000041000008870001042e0000000001000416000000000001004b000003e80000c13d0000000001000412001100000001001d001000800000003d000080050100003900000044030000390000000004000415000000110440008a000001cc0000013d0000000001000416000000000001004b000003e80000c13d0000000001000412000d00000001001d000c00000000001d0000800501000039000000440300003900000000040004150000000d0440008a000000050440021000000246020000410886085e0000040f0000022501100197000000800010043f0000024501000041000008870001042e000000090000006b000002070000613d0000000101000039000000000701041a000000400100043d00000009020000290000000000210435000002230010009c000002230100804100000040011002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000257011001c70000800d02000039000000040300003900000258040000410886087c0000040f0000000100200190000003e80000613d00000009010000290000000102000039000000000012041b0000000001000019000008870001042e0000000301000039000000000101041a000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000090210006c000002680000813d0000025e0100004100000000001004350000001101000039000000040010043f0000024f01000041000008880001043000000000000b004b0000020f0000c13d000000400100043d00000256020000410000000000210435000002230010009c000002230100804100000040011002100000022a011001c700000888000104300000000004000415000000150440008a0000000504400210000000000009004b000002190000613d0000000004000415000000140440008a0000000504400210000000000008004b000002220000c13d00000000000b004b0000000002000019000000010200c0390000000504400270000000000402001f000002220000613d000000400100043d0000022902000041000002090000013d000900000003001d000100000001001d000600000005001d000800000006001d000700000007001d000400000008001d000300000009001d00050000000a001d00020000000b001d088606780000040f0000000601000029088606780000040f0000000701000029088606780000040f0000000801000029088606780000040f0000000101000029000000800010043f0000000601000029000000a00010043f0000000701000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000801000029000000e00010043f0000000901000029088606780000040f0000000904000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000022801000041000008870001042e0000025b010000410000000000120435000002230020009c000002230200804100000040012002100000022a011001c700000888000104300000000201000039000000000101041a000000000001004b0000000003000019000002760000c13d0000024d0230012a000000000012001a000001ff0000413d000000000112001a000000400200043d000002830000c13d000000000402001900000000010000190000016a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b00000000030000190000026d0000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d0000026d0000013d000700000001001d0000024c010000410000000001120436000800000001001d000900000002001d00000004012000390000024d0200004100000000002104350000024601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000003af0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003db0000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000002be0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000002ba0000c13d000000000005004b000002cd0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000037f0000613d0000001f01400039000000600210018f0000000901200029000000000021004b00000000020000190000000102004039000002500010009c000004ed0000213d0000000100200190000004ed0000c13d000000400010043f000000200030008c000003e80000413d0000000301000039000000000101041a000800000001001d00000009010000290000000001010433000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000080210006c0000000706000029000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004550000c13d0000024d0230012a000000000012001a000001ff0000413d0000000001120019000000090010006b000000000301001900000009030040290000000401000039000000000101041a0000000002030019000000000031001a000001ff0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004620000c13d000000400100043d0000025402000041000002090000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000090a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080b000029000003270000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000003230000c13d000000000005004b000003360000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000038e0000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002500020009c000004ed0000213d0000000100100190000004ed0000c13d000000400020043f000000200030008c000003e80000413d000800000002001d00000000010a0433000900000001001d0000000101000039000700000001001d000000000101041a000000000001004b000003ea0000c13d0000025c0100004100000008020000290000000001120436000600000001001d0000024601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d00000008020000290000000402200039000000000101043b000002250110019700000000001204350000024601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000004ba0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004e60000013d000000400200043d0000001f0430018f00000005053002720000038b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b000003a90000613d0000039c0000013d000000400200043d0000001f0430018f00000005053002720000039a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003960000c13d000000000004004b000003a90000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f00000888000104300000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003c90000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003c50000c13d000000000005004b000003d80000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004400000613d0000001f01400039000000600110018f0000000904100029000000000014004b00000000010000190000000101004039000002500040009c000004ed0000213d0000000100100190000004ed0000c13d000000400040043f000000200030008c0000044f0000813d000000000100001900000888000104300000000301000039000000000101041a000800000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000080210006c000001ff0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004f30000c13d0000024d0230012a000000000012001a000001ff0000413d000800000012001d000000400200043d0000025c01000041000600000002001d0000000001120436000500000001001d0000024601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f0000000806000029000000090060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000906006029000800000006001d00000001002001900000058b0000613d00000006020000290000000402200039000000000101043b000002250110019700000000001204350000024601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000005310000c13d0000000003000031000000200030008c000000200400003900000000040340190000055d0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000044c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004480000c13d000000000004004b000003a90000613d0000039d0000013d00000009010000290000000001010433000000070010006c000000000100001900000001010020390000016a0000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000002f70000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000002f70000013d0000024601000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000101043b000002510200004100000000002004390000022501100197000900000001001d00000004001004430000000001000414000002230010009c0000022301008041000000c00110021000000252011001c70000800202000039088608810000040f00000001002001900000058b0000613d000000000101043b000000000001004b000003e80000613d000000400200043d0000025301000041000800000002001d00000000001204350000024601000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d00000008020000290000000402200039000000000101043b0000022501100197000000000012043500000000010004140000000902000029000000040020008c000004af0000613d0000000802000029000002230020009c00000223020080410000004002200210000002230010009c0000022301008041000000c001100210000000000121019f0000024f011001c700000009020000290886087c0000040f00000000030100190000006003300270000002230030019d0000000100200190000005e90000613d0000000801000029000002500010009c000004ed0000213d0000000801000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001180000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000004d40000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004d00000c13d000000000005004b000004e30000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005220000613d0000001f01400039000000600110018f00000008020000290000000001210019000600000001001d000002500010009c000005000000a13d0000025e0100004100000000001004350000004101000039000000040010043f0000024f010000410000088800010430000000000300041a00000000041300a900000000051400d9000000000035004b000001ff0000c13d000000000004004b0000000003000019000004000000613d00000000032400a900000000044300d9000000000024004b000001ff0000c13d000004000000013d0000000601000029000000400010043f000000200030008c000003e80000413d0000000001020433000500000001001d0000025d0100004100000006020000290000000001120436000800000001001d000002460100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c0000058c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005b80000013d000000400200043d0000001f0430018f00000005053002720000052e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000052a0000c13d000000000004004b000003a90000613d0000039c0000013d0000000603000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a0000290000054b0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005470000c13d000000000005004b0000055a0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005cb0000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000900000002001d000002500020009c000004ed0000213d0000000100100190000004ed0000c13d0000000901000029000000400010043f000000200030008c000003e80000413d00000006010000290000000001010433000500000001001d0000025d0100004100000009020000290000000001120436000600000001001d000002460100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000005f90000c13d0000000003000031000000200030008c00000020040000390000000004034019000006250000013d000000000001042f0000000603000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022a011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000005a60000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005a20000c13d000000000005004b000005b50000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005da0000613d0000001f01400039000000600110018f0000000601100029000002500010009c000004ed0000213d000000400010043f000000200030008c000003e80000413d00000006020000290000000003020433000000ff0030008c000003e80000213d000000050200002900000009022000b9000000090000006b000006380000c13d0000004d0030008c000001ff0000213d0000063d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005d70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d30000c13d000000000004004b000003a90000613d0000039d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005e60000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e20000c13d000000000004004b000003a90000613d0000039d0000013d0000022303300197000000400200043d0000001f0430018f0000000505300272000005f60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f20000c13d000000000004004b000003a90000613d0000039c0000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022a011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000006130000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b0000060f0000c13d000000000005004b000006220000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006510000613d0000001f01400039000000600110018f0000000901100029000002500010009c000004ed0000213d000000400010043f000000200030008c000003e80000413d00000009020000290000000003020433000000ff0030008c000003e80000213d000000050200002900000008022000b9000000080000006b000006600000c13d0000004d0030008c000001ff0000213d000006650000013d0000004d0030008c000001ff0000213d00000009042000fa000000050040006c000001ff0000c13d000000000003004b000006670000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006410000c13d000700000006001d000000000006004b000006670000c13d0000025e0100004100000000001004350000001201000039000000040010043f0000024f010000410000088800010430000000400200043d0000001f0430018f00000005053002720000065d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006590000c13d000000000004004b000003a90000613d0000039c0000013d0000004d0030008c000001ff0000213d00000008042000fa000000050040006c000001ff0000c13d000000000003004b0000066e0000c13d00000007022000fa0000000000210435000002230010009c0000022301008041000000400110021000000244011001c7000008870001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006700000c13d000006480000013d00000225001001980000067b0000613d000000000001042d000000400100043d0000025f020000410000000000210435000002230010009c000002230100804100000040011002100000022a011001c700000888000104300002000000000002000000400200043d0000024c010000410000000001120436000100000001001d000200000002001d00000004012000390000024d0200004100000000002104350000024601000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f0000000100200190000006e20000613d000000000201043b00000000010004140000022502200197000000040020008c000006a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006d30000013d0000000203000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000020a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006c10000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006bd0000c13d000000000005004b000006d00000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006eb0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002500010009c000006e30000213d0000000100200190000006e30000c13d000000400010043f0000001f0030008c000006e90000a13d00000000010a0433000000000001042d000000000001042f0000025e0100004100000000001004350000004101000039000000040010043f0000024f01000041000008880001043000000000010000190000088800010430000000400200043d0000001f0430018f00000005053002720000000505500210000006f70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006f30000c13d000000000004004b000007050000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f000008880001043000010000000000020000000301000039000000000101041a000100000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000073e0000613d000000000101043b000000010210006c000007380000413d0000000201000039000000000101041a000000000001004b0000072d0000613d000000000300041a00000000041300a900000000051400d9000000000035004b000007380000c13d000000000004004b000007330000613d00000000032400a900000000044300d9000000000024004b0000072e0000613d000007380000013d00000000030000190000024d0230012a000000000012001a000007380000413d0000000001120019000000000001042d00000000030000190000024d0230012a000000000012001a000007380000413d000007310000013d0000025e0100004100000000001004350000001101000039000000040010043f0000024f010000410000088800010430000000000001042f0000000043010434000000000132043600000260063001970000001f0530018f000000000014004b000007550000813d000000000006004b000007510000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000074b0000c13d000000000005004b0000076f0000613d0000000007010019000007650000013d000000000006004b000007610000613d000000200760008a00000260077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000075d0000c13d000000000005004b0000076f0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000260023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002610200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000026004a001970000001f03a0018f0000006401500039000000000012004b000007990000813d000000000004004b000007950000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000078f0000c13d000000000003004b000007b30000613d0000000005010019000007a90000013d000000000004004b000007a50000613d000000200540008a0000026005500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007a10000c13d000000000003004b000007b30000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024601000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000081d0000613d000000000201043b00000000010004140000022502200197000000040020008c000000040a000029000007d10000c13d0000000003000031000000200030008c00000020040000390000000004034019000008050000013d00000002030000290000001f0330003900000260033001970000022300a0009c000002230400004100000000040a401900000040044002100000006403300039000002230030009c00000223030080410000006003300210000000000343019f000002230010009c0000022301008041000000c001100210000000000131019f088608810000040f000000040a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007f30000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007ef0000c13d000000000005004b000008020000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000083d0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002500040009c0000081e0000213d00000001001001900000081e0000c13d000000400040043f0000001f0030008c0000081b0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000081b0000c13d000000000001004b000008240000613d000000000001042d00000000010000190000088800010430000000000001042f0000025e0100004100000000001004350000004101000039000000040010043f0000024f0100004100000888000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000026201000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d0886073f0000040f00000004020000290000000001210049000002230010009c0000022301008041000002230020009c000002230200804100000060011002100000004002200210000000000121019f0000088800010430000000400200043d0000001f0430018f00000005053002720000000505500210000008490000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008450000c13d000000000004004b000008570000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088800010430000000000001042f00000000050100190000000000200439000000050030008c0000086c0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008640000413d000002230030009c000002230300804100000060013002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000263011001c70000000002050019088608810000040f00000001002001900000087b0000613d000000000101043b000000000001042d000000000001042f0000087f002104210000000102000039000000000001042d0000000002000019000000000001042d00000884002104230000000102000039000000000001042d0000000002000019000000000001042d0000088600000432000008870001042e000008880001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000180000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d3000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000041976e08000000000000000000000000000000000000000000000000000000005213f9c7000000000000000000000000000000000000000000000000000000005213f9c800000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000002cca9dfc000000000000000000000000000000000000000000000000000000002cca9dfd000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000561bddf8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","LIQUIDITY_POOL()":"2cca9dfd","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010002652d9a2e330419f9a9bc5f32e9dda5873b83868d5c648dba82697d161b","factoryDependencies":{}}},"contracts/oracles/WstETHOracle.sol":{"WstETHOracle":{"abi":[{"inputs":[{"internalType":"address","name":"wstETHAddress","type":"address"},{"internalType":"address","name":"wETHAddress","type":"address"},{"internalType":"address","name":"stETHAddress","type":"address"},{"internalType":"address","name":"resilientOracleAddress","type":"address"},{"internalType":"bool","name":"assumeEquivalence","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"inputs":[],"name":"ASSUME_STETH_ETH_EQUIVALENCE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract OracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STETH","outputs":[{"internalType":"contract IStETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WSTETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wstETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stETHAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracleAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"assumeEquivalence\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ASSUME_STETH_ETH_EQUIVALENCE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract OracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getPrice(address)\":{\"details\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH      or the price of stETH/USD (secondary market price) is obtained from the oracle\",\"params\":{\"asset\":\"Address of wstETH\"},\"returns\":{\"_0\":\"wstETH Price in USD scaled by 1e18\"}}},\"stateVariables\":{\"ASSUME_STETH_ETH_EQUIVALENCE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"RESILIENT_ORACLE\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"STETH\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"WSTETH_ADDRESS\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"WstETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"kind\":\"user\",\"methods\":{\"ASSUME_STETH_ETH_EQUIVALENCE()\":{\"notice\":\"A flag assuming 1:1 price equivalence between stETH/ETH\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"WETH_ADDRESS()\":{\"notice\":\"Address of WETH\"},\"WSTETH_ADDRESS()\":{\"notice\":\"Address of wstETH\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getPrice(address)\":{\"notice\":\"Gets the USD price of wstETH asset\"}},\"notice\":\"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH         or the price of stETH/USD (secondary market price) is obtained from the oracle.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracle.sol\":\"WstETHOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/IStETH.sol\":{\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://58ac15ad672bb5b2c4eaf5141df686b39a462d9f8a5ad1e7859999547ad25ea3\",\"dweb:/ipfs/Qmdjvm4qUr3Uy6kTFkbGZeRjk645FT2g36Pq7fxHafhvxf\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/WstETHOracle.sol\":{\"keccak256\":\"0x3b6d494a7ec633d4b17afa53de270701bea1c4107f5955d449e0f4a619418638\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://b894fa12a0d3f17f0395495093481260b65c300f5b49dfaec00846435123fb15\",\"dweb:/ipfs/QmV1bk6a5iqVwWukB6wVqbXmeTsRrkXBwLbPDxECvf7rkg\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getPrice(address)":{"details":"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH      or the price of stETH/USD (secondary market price) is obtained from the oracle","params":{"asset":"Address of wstETH"},"returns":{"_0":"wstETH Price in USD scaled by 1e18"}}},"stateVariables":{"ASSUME_STETH_ETH_EQUIVALENCE":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"RESILIENT_ORACLE":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"STETH":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"WETH_ADDRESS":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"},"WSTETH_ADDRESS":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"title":"WstETHOracle","version":1},"userdoc":{"errors":{"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"kind":"user","methods":{"ASSUME_STETH_ETH_EQUIVALENCE()":{"notice":"A flag assuming 1:1 price equivalence between stETH/ETH"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"STETH()":{"notice":"Address of stETH"},"WETH_ADDRESS()":{"notice":"Address of WETH"},"WSTETH_ADDRESS()":{"notice":"Address of wstETH"},"constructor":{"notice":"Constructor for the implementation contract."},"getPrice(address)":{"notice":"Gets the USD price of wstETH asset"}},"notice":"Depending on the equivalence flag price is either based on assumption that 1 stETH = 1 ETH         or the price of stETH/USD (secondary market price) is obtained from the oracle.","version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0001000000000002000f000000000002000000000301001900000060033002700000008c033001970000000100200190000000510000c13d0000008002000039000000400020043f000000040030008c0000013c0000413d000000000201043b000000e002200270000000900020009c000000ae0000213d000000940020009c000000c40000613d000000950020009c000000cd0000613d000000960020009c0000013c0000c13d000000240030008c0000013c0000413d0000000002000416000000000002004b0000013c0000c13d0000000401100370000000000101043b0000008e0010009c0000013c0000213d000500000001001d00000098010000410000000000100439000000000100041200000004001004430000004001000039000000240010044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000001a40000613d000000000101043b000000050110014f0000008e00100198000000ed0000c13d00000098010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000001a40000613d000000000201043b000000400a00043d0000009d0100004100000000041a04360000000401a000390000009e03000041000000000031043500000000010004140000008e02200197000000040020008c000000fe0000c13d0000000003000031000000200030008c000000200400003900000000040340190000012f0000013d0000000002000416000000000002004b0000013c0000c13d0000001f023000390000008d022001970000012002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000630000613d00000120050000390000012006400039000000000701034f000000007807043c0000000005850436000000000065004b0000005f0000c13d000000000002004b000000710000613d000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000a00030008c0000013c0000413d000001200100043d0000008e0010009c0000013c0000213d000001400300043d0000008e0030009c0000013c0000213d000001600500043d0000008e0050009c0000013c0000213d000001800400043d0000008e0040009c0000013c0000213d000001a00600043d000000000006004b0000000002000019000000010200c039000000000026004b0000013c0000c13d000100000001001d000300000003001d000500000004001d000400000005001d000200000006001d022c02080000040f0000000301000029022c02080000040f0000000401000029022c02080000040f0000000501000029022c02080000040f0000000105000029000000c00050043f0000000304000029000000e00040043f0000000402000029000000a00020043f0000000503000029000001000030043f0000000201000029000000800010043f0000014000000443000001600010044300000020010000390000018000100443000001a0002004430000004002000039000001c000200443000001e0005004430000006002000039000002000020044300000220004004430000008002000039000002400020044300000260003004430000010000100443000000050100003900000120001004430000008f010000410000022d0001042e000000910020009c000000d60000613d000000920020009c000000df0000613d000000930020009c0000013c0000c13d0000000001000416000000000001004b0000013c0000c13d0000000001000412000700000001001d000600000000001d0000000001000415000000070110008a0000000501100210022c02140000040f000000000001004b0000000001000019000000010100c039000000800010043f00000097010000410000022d0001042e0000000001000416000000000001004b0000013c0000c13d0000000001000412000f00000001001d000e00600000003d00000000010004150000000f0110008a000000e70000013d0000000001000416000000000001004b0000013c0000c13d0000000001000412000d00000001001d000c00400000003d00000000010004150000000d0110008a000000e70000013d0000000001000416000000000001004b0000013c0000c13d0000000001000412000b00000001001d000a00800000003d00000000010004150000000b0110008a000000e70000013d0000000001000416000000000001004b0000013c0000c13d0000000001000412000900000001001d000800200000003d0000000001000415000000090110008a0000000501100210022c02140000040f0000008e01100197000000800010043f00000097010000410000022d0001042e000000400100043d00000044021000390000009a0300004100000000003204350000002402100039000000140300003900000000003204350000009b0200004100000000002104350000000402100039000000200300003900000000003204350000008c0010009c0000008c0100804100000040011002100000009c011001c70000022e000104300000008c00a0009c0000008c0300004100000000030a401900000040033002100000008c0010009c0000008c01008041000000c001100210000000000131019f0000009f011001c7000500000002001d00040000000a001d000300000004001d022c02270000040f000000030b000029000000040a000029000000000301001900000060033002700000008c03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000011c0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000001180000c13d000000000005004b0000012b0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000013e0000613d00000005020000290000001f01400039000000600410018f0000000001a40019000000000041004b00000000040000190000000104004039000000a00010009c000001ed0000213d0000000100400190000001ed0000c13d000000400010043f000000200030008c0000015f0000813d00000000010000190000022e00010430000000400200043d0000001f0430018f00000005053002720000014a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000001460000c13d000000000004004b000001590000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000008c0020009c0000008c020080410000004002200210000000000112019f0000022e00010430000500000002001d00000000010a0433000400000001001d0000009801000041000000000010043900000000010004120000000400100443000000240000044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000001a40000613d000000000101043b000000000001004b000001840000613d00000098010000410000000000100439000000000100041200000004001004430000006001000039000000240010044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000001a40000613d000000000101043b0005008e0010019b000000400200043d000000a1010000410000000001120436000200000001001d000300000002001d00000004012000390000000502000029000000000021043500000098010000410000000000100439000000000100041200000004001004430000008001000039000000240010044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000001a40000613d000000000201043b00000000010004140000008e02200197000000040020008c000001a50000c13d0000000004000031000000200040008c0000002004008039000001d10000013d000000000001042f00000003030000290000008c0030009c0000008c0300804100000040033002100000008c0010009c0000008c01008041000000c001100210000000000131019f0000009f011001c7022c02270000040f000000000301001900000060033002700000008c03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000001bf0000613d000000000701034f0000000308000029000000007907043c00000000089804360000000000a8004b000001bb0000c13d000000000005004b000001ce0000613d0000000506600210000000000761034f00000003066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000001f30000613d0000001f01400039000000600210018f0000000301200029000000000021004b00000000020000190000000102004039000000a00010009c000001ed0000213d0000000100200190000001ed0000c13d000000400010043f000000200040008c0000013c0000413d0000000302000029000000000302043300000004023000b9000000040000006b000001e60000613d00000004042000fa000000000043004b000002020000c13d0000009e0220012a00000000002104350000008c0010009c0000008c010080410000004001100210000000a3011001c70000022d0001042e000000a20100004100000000001004350000004101000039000000040010043f0000009f010000410000022e00010430000000400200043d0000001f0430018f00000005053002720000000505500210000001ff0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000001fb0000c13d000000000004004b000001590000613d0000014d0000013d000000a20100004100000000001004350000001101000039000000040010043f0000009f010000410000022e000104300000008e001001980000020b0000613d000000000001042d000000400100043d000000a40200004100000000002104350000008c0010009c0000008c010080410000004001100210000000a5011001c70000022e00010430000000000001042f000000980200004100000000002004390000000501100270000000000201003100000004002004430000000101010031000000240010044300000000010004140000008c0010009c0000008c01008041000000c00110021000000099011001c70000800502000039022c02270000040f0000000100200190000002260000613d000000000101043b000000000001042d000000000001042f0000022a002104230000000102000039000000000001042d0000000002000019000000000001042d0000022c000004320000022d0001042e0000022e00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000020000000000000000000000000000018000000100000000000000000000000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000e00bfe5000000000000000000000000000000000000000000000000000000000ed0142b700000000000000000000000000000000000000000000000000000000040141e50000000000000000000000000000000000000000000000000000000036e6372f0000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e020000020000000000000000000000000000004400000000000000000000000077726f6e6720777374455448206164647265737300000000000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000007a28fb88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff41976e09000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000008579befe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ASSUME_STETH_ETH_EQUIVALENCE()":"ed0142b7","RESILIENT_ORACLE()":"a4edcd4c","STETH()":"e00bfe50","WETH_ADDRESS()":"040141e5","WSTETH_ADDRESS()":"36e6372f","getPrice(address)":"41976e09"}},"hash":"010000a76974b7984f3c2a93e9fab620e21862889430d8fe24dd1ee49a102c16","factoryDependencies":{}}},"contracts/oracles/WstETHOracleV2.sol":{"WstETHOracleV2":{"abi":[{"inputs":[{"internalType":"address","name":"stETH","type":"address"},{"internalType":"address","name":"wstETH","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STETH","outputs":[{"internalType":"contract IStETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"contract IStETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of underlyingToken\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"WstETHOracleV2\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"STETH()\":{\"notice\":\"Address of stETH\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of wstETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/WstETHOracleV2.sol\":\"WstETHOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IStETH.sol\":{\"keccak256\":\"0x9e7ee12d63a84081722469719e046d6791a087f33ab40804ff1ff40ab859d4d3\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://58ac15ad672bb5b2c4eaf5141df686b39a462d9f8a5ad1e7859999547ad25ea3\",\"dweb:/ipfs/Qmdjvm4qUr3Uy6kTFkbGZeRjk645FT2g36Pq7fxHafhvxf\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/WstETHOracleV2.sol\":{\"keccak256\":\"0xafa20a802d782e7dbc09351314e7ced484e3685b10a4b7d4e2bf10e57b534806\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://fcbc91e33cb4a8c6967b8cfd3000a5c19f8ae78ca2413b10e08ae8944215d9ff\",\"dweb:/ipfs/QmPScYeAmHk4gwwmFviP4xBkreZTnTDikb9sYx1QpbkHY6\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"constructor":{"details":"The underlyingToken must be correlated so that 1 underlyingToken is equal to 1 stETH, because getUnderlyingAmount() implicitly assumes that"},"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount Amount of underlyingToken"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"WstETHOracleV2","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"STETH()":{"notice":"Address of stETH"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the amount of underlyingToken for 1 wstETH, assuming that 1 underlyingToken is equivalent to 1 stETH"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of wstETH","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/WstETHOracleV2.sol:WstETHOracleV2","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200150000000000020000000003010019000000600330027000000223033001970000000100200190000000280000c13d0000008004000039000000400040043f000000040030008c000003e80000413d000000000201043b000000e0022002700000022b0020009c000000660000213d000002380020009c0000007b0000a13d000002390020009c0000009d0000a13d0000023a0020009c000001180000613d0000023b0020009c0000011d0000613d0000023c0020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001d40000c13d000000010110018f0000000000140435000002230040009c0000022304008041000000400140021000000246011001c7000008870001042e0000000002000416000000000002004b000003e80000c13d0000001f0230003900000224022001970000012002200039000000400020043f0000001f0230018f00000005043002720000003a0000613d000001200500003900000005064002100000012006600039000000000701034f000000007807043c0000000005850436000000000065004b000000360000c13d000000000002004b000000490000613d0000000504400210000000000141034f00000003022002100000012004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001400030008c000003e80000413d000001200300043d000002250030009c000003e80000213d000001400100043d000002250010009c000003e80000213d000001600500043d000002250050009c000003e80000213d000001800700043d000002250070009c000003e80000213d000002200600043d000002250060009c000003e80000213d000002000800043d000001e00900043d000001c00b00043d000001a00400043d000002260240012a000002400a00043d000000000020041b000002270040009c000002060000213d00000000000b004b000002080000c13d000002100000013d0000022c0020009c0000008c0000a13d0000022d0020009c000000c40000a13d0000022e0020009c000001390000613d0000022f0020009c000001400000613d000002300020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412000b00000001001d000a00800000003d0000800501000039000000440300003900000000040004150000000b0440008a000001a00000013d0000023f0020009c000000cd0000213d000002420020009c0000014b0000613d000002430020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412001300000001001d001200200000003d000080050100003900000044030000390000000004000415000000130440008a000001a00000013d000002330020009c0000010f0000213d000002360020009c000001500000613d000002370020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000001000412000f00000001001d000e00000000001d0000800501000039000000440300003900000000040004150000000f0440008a000001a00000013d0000023d0020009c0000018b0000613d0000023e0020009c000003e80000c13d000000240030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000000401100370000000000101043b000900000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000025901000041000000a00010043f0000008001000039088607750000040f0000000401000039000000000501041a0000000001000414000002230010009c0000022301008041000000c00110021000000248011001c70000800d0200003900000003030000390000025a0400004100000009060000290886087c0000040f0000000100200190000003e80000613d00000009010000290000000402000039000000000012041b0000000001000019000008870001042e000002310020009c000001960000613d000002320020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d088606830000040f000001440000013d000002400020009c000001a70000613d000002410020009c000003e80000c13d000000240030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000000401100370000000000101043b000002250010009c000003e80000213d000900000001001d000002440100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000101043b000000090110014f000000400200043d0000022500100198000002620000c13d0000024c010000410000000001120436000800000001001d000900000002001d00000004012000390000024d0200004100000000002104350000024401000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000002a40000c13d0000000003000031000000200030008c00000020040000390000000004034019000000090a000029000002d10000013d000002340020009c000001af0000613d000002350020009c000003e80000c13d0000000001000416000000000001004b000003e80000c13d0000000301000039000001ab0000013d0000000001000416000000000001004b000003e80000c13d0000000201000039000001ab0000013d000000440030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000025501000041000000a00010043f0000008001000039088607750000040f0000000801000029000002260610012a000000000500041a000000000060041b000002270010009c000001eb0000213d000000090000006b000001ed0000613d000002080000013d0000000001000416000000000001004b000003e80000c13d000000000100041a000000800010043f0000024501000041000008870001042e0000000001000416000000000001004b000003e80000c13d0886070b0000040f000000400200043d0000000000120435000002230020009c0000022302008041000000400120021000000246011001c7000008870001042e0000000001000416000000000001004b000003e80000c13d0000000101000039000001ab0000013d0000000001000416000000000001004b000003e80000c13d0000000301000039000000000101041a000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000301043b000000090130006c000001e50000413d0000000102000039000000000202041a000000010220008a000000000012004b0000008004000039000001d20000813d000700000003001d000000400200043d0000024c010000410000000001120436000800000001001d000900000002001d00000004012000390000024d020000410000000000210435000002440100004100000000001004390000000001000412000000040010044300000024004004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000003170000c13d0000000003000031000000200030008c00000020040000390000000004034019000003430000013d0000000001000416000000000001004b000003e80000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a000001a00000013d0000000001000416000000000001004b000003e80000c13d0000000001000412000d00000001001d000c00400000003d0000800501000039000000440300003900000000040004150000000d0440008a000000050440021000000244020000410886085e0000040f0000022501100197000000800010043f0000024501000041000008870001042e0000000001000416000000000001004b000003e80000c13d0000000401000039000000000101041a000000800010043f0000024501000041000008870001042e000000440030008c000003e80000413d0000000002000416000000000002004b000003e80000c13d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000024701000041000000a00010043f0000008001000039088607750000040f00000002010000390000000805000029000000000051041b00000003030000390000000906000029000000000063041b0000000001000414000002230010009c0000022301008041000000c00110021000000248011001c70000800d0200003900000249040000410886087c0000040f0000000100200190000003e80000613d0000000001000019000008870001042e0000000301000039000000000101041a000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000090210006c000002690000813d0000025e0100004100000000001004350000001101000039000000040010043f0000024f010000410000088800010430000000090000006b000002080000613d0000000101000039000000000701041a000000400100043d00000009020000290000000000210435000002230010009c000002230100804100000040011002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000257011001c70000800d02000039000000040300003900000258040000410886087c0000040f0000000100200190000003e80000613d00000009010000290000000102000039000000000012041b0000000001000019000008870001042e00000000000b004b000002100000c13d000000400100043d00000256020000410000000000210435000002230010009c000002230100804100000040011002100000022a011001c700000888000104300000000004000415000000150440008a0000000504400210000000000009004b0000021a0000613d0000000004000415000000140440008a0000000504400210000000000008004b000002230000c13d00000000000b004b0000000002000019000000010200c0390000000504400270000000000402001f000002230000613d000000400100043d00000229020000410000020a0000013d000900000003001d000100000001001d000600000005001d000800000006001d000700000007001d000400000008001d000300000009001d00050000000a001d00020000000b001d088606780000040f0000000601000029088606780000040f0000000701000029088606780000040f0000000801000029088606780000040f0000000101000029000000800010043f0000000601000029000000a00010043f0000000701000029000000c00010043f00000001010000390000000202000029000000000021041b00000002010000390000000302000029000000000021041b00000003010000390000000402000029000000000021041b00000004010000390000000502000029000000000021041b0000000801000029000000e00010043f0000000901000029088606780000040f0000000904000029000001000040043f000000800100043d000001400000044300000160001004430000002001000039000000a00200043d0000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000002400020044300000260004004430000010000100443000000050100003900000120001004430000022801000041000008870001042e0000025b010000410000000000120435000002230020009c000002230200804100000040012002100000022a011001c700000888000104300000000201000039000000000101041a000000000001004b0000000003000019000002760000c13d0000024d0230012a000000000012001a000001e50000413d000000000112001a000000400400043d000002830000c13d0000000001000019000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001e50000c13d000000000004004b00000000030000190000026e0000613d00000000032400a900000000044300d9000000000024004b000001e50000c13d0000026e0000013d000700000001001d0000024c010000410000000001140436000800000001001d000900000004001d00000004014000390000024d0200004100000000002104350000024401000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000003af0000c13d0000000003000031000000200030008c00000020040000390000000004034019000003db0000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000090a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080b000029000002bf0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002bb0000c13d000000000005004b000002ce0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000037f0000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002500020009c000004ed0000213d0000000100100190000004ed0000c13d000000400020043f000000200030008c000003e80000413d000800000002001d00000000010a0433000900000001001d0000000101000039000700000001001d000000000101041a000000000001004b000003ea0000c13d0000025c0100004100000008020000290000000001120436000600000001001d0000024401000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d00000008020000290000000402200039000000000101043b000002250110019700000000001204350000024401000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000004ba0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004e60000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003310000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b0000032d0000c13d000000000005004b000003400000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000038e0000613d0000001f01400039000000600210018f0000000901200029000000000021004b00000000020000190000000102004039000002500010009c000004ed0000213d0000000100200190000004ed0000c13d000000400010043f000000200030008c000003e80000413d0000000301000039000000000101041a000800000001001d00000009010000290000000001010433000900000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000080210006c0000000706000029000001e50000413d0000000201000039000000000101041a000000000001004b0000000003000019000004550000c13d0000024d0230012a000000000012001a000001e50000413d0000000001120019000000090010006b000000000301001900000009030040290000000401000039000000000101041a0000000002030019000000000031001a000001e50000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004620000c13d000000400100043d00000254020000410000020a0000013d000000400200043d0000001f0430018f00000005053002720000038b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b0000039c0000c13d000003a90000013d000000400200043d0000001f0430018f00000005053002720000039a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003960000c13d000000000004004b000003a90000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f00000888000104300000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000003c90000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000003c50000c13d000000000005004b000003d80000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004400000613d0000001f01400039000000600110018f0000000904100029000000000014004b00000000010000190000000101004039000002500040009c000004ed0000213d0000000100100190000004ed0000c13d000000400040043f000000200030008c0000044f0000813d000000000100001900000888000104300000000301000039000000000101041a000800000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000058b0000613d000000000101043b000000080210006c000001e50000413d0000000201000039000000000101041a000000000001004b0000000003000019000004f30000c13d0000024d0230012a000000000012001a000001e50000413d000800000012001d000000400200043d0000025c01000041000600000002001d0000000001120436000500000001001d0000024401000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f0000000806000029000000090060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000906006029000800000006001d00000001002001900000058b0000613d00000006020000290000000402200039000000000101043b000002250110019700000000001204350000024401000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000005310000c13d0000000003000031000000200030008c000000200400003900000000040340190000055d0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000044c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004480000c13d000000000004004b000003a90000613d0000039d0000013d00000009010000290000000001010433000000070010006c00000000010000190000000101002039000000210000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001e50000c13d000000000004004b00000000030000190000036a0000613d00000000032400a900000000044300d9000000000024004b000001e50000c13d0000036a0000013d0000024401000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000101043b000002510200004100000000002004390000022501100197000900000001001d00000004001004430000000001000414000002230010009c0000022301008041000000c00110021000000252011001c70000800202000039088608810000040f00000001002001900000058b0000613d000000000101043b000000000001004b000003e80000613d000000400200043d0000025301000041000800000002001d00000000001204350000024401000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d00000008020000290000000402200039000000000101043b0000022501100197000000000012043500000000010004140000000902000029000000040020008c000004af0000613d0000000802000029000002230020009c00000223020080410000004002200210000002230010009c0000022301008041000000c001100210000000000121019f0000024f011001c700000009020000290886087c0000040f00000000030100190000006003300270000002230030019d0000000100200190000005e90000613d0000000801000029000002500010009c000004ed0000213d0000000801000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001c90000013d0000000803000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000004d40000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004d00000c13d000000000005004b000004e30000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005220000613d0000001f01400039000000600110018f00000008020000290000000001210019000600000001001d000002500010009c000005000000a13d0000025e0100004100000000001004350000004101000039000000040010043f0000024f010000410000088800010430000000000300041a00000000041300a900000000051400d9000000000035004b000001e50000c13d000000000004004b0000000003000019000004000000613d00000000032400a900000000044300d9000000000024004b000001e50000c13d000004000000013d0000000601000029000000400010043f000000200030008c000003e80000413d0000000001020433000500000001001d0000025d0100004100000006020000290000000001120436000800000001001d000002440100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c0000058c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005b80000013d000000400200043d0000001f0430018f00000005053002720000052e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000052a0000c13d000000000004004b000003a90000613d0000039c0000013d0000000603000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a0000290000054b0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005470000c13d000000000005004b0000055a0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005cb0000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000900000002001d000002500020009c000004ed0000213d0000000100100190000004ed0000c13d0000000901000029000000400010043f000000200030008c000003e80000413d00000006010000290000000001010433000500000001001d0000025d0100004100000009020000290000000001120436000600000001001d000002440100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000058b0000613d000000000201043b00000000010004140000022502200197000000040020008c000005f90000c13d0000000003000031000000200030008c00000020040000390000000004034019000006250000013d000000000001042f0000000603000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022a011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000005a60000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005a20000c13d000000000005004b000005b50000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005da0000613d0000001f01400039000000600110018f0000000601100029000002500010009c000004ed0000213d000000400010043f000000200030008c000003e80000413d00000006020000290000000003020433000000ff0030008c000003e80000213d000000050200002900000009022000b9000000090000006b000006380000c13d0000004d0030008c000001e50000213d0000063d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005d70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005d30000c13d000000000004004b000003a90000613d0000039d0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005e60000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005e20000c13d000000000004004b000003a90000613d0000039d0000013d0000022303300197000000400200043d0000001f0430018f0000000505300272000005f60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005f20000c13d000000000004004b000003a90000613d0000039c0000013d0000000903000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000022a011001c7088608810000040f000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000006130000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b0000060f0000c13d000000000005004b000006220000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006510000613d0000001f01400039000000600110018f0000000901100029000002500010009c000004ed0000213d000000400010043f000000200030008c000003e80000413d00000009020000290000000003020433000000ff0030008c000003e80000213d000000050200002900000008022000b9000000080000006b000006600000c13d0000004d0030008c000001e50000213d000006650000013d0000004d0030008c000001e50000213d00000009042000fa000000050040006c000001e50000c13d000000000003004b000006670000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006410000c13d000700000006001d000000000006004b000006670000c13d0000025e0100004100000000001004350000001201000039000000040010043f0000024f010000410000088800010430000000400200043d0000001f0430018f00000005053002720000065d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006590000c13d000000000004004b000003a90000613d0000039c0000013d0000004d0030008c000001e50000213d00000008042000fa000000050040006c000001e50000c13d000000000003004b0000066e0000c13d00000007022000fa0000000000210435000002230010009c0000022301008041000000400110021000000246011001c7000008870001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006700000c13d000006480000013d00000225001001980000067b0000613d000000000001042d000000400100043d0000025f020000410000000000210435000002230010009c000002230100804100000040011002100000022a011001c700000888000104300002000000000002000000400200043d0000024c010000410000000001120436000100000001001d000200000002001d00000004012000390000024d0200004100000000002104350000024401000041000000000010043900000000010004120000000400100443000000800100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f0000000100200190000006e20000613d000000000201043b00000000010004140000022502200197000000040020008c000006a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006d30000013d0000000203000029000002230030009c00000223030080410000004003300210000002230010009c0000022301008041000000c001100210000000000131019f0000024f011001c7088608810000040f000000020a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006c10000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006bd0000c13d000000000005004b000006d00000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006eb0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002500010009c000006e30000213d0000000100200190000006e30000c13d000000400010043f0000001f0030008c000006e90000a13d00000000010a0433000000000001042d000000000001042f0000025e0100004100000000001004350000004101000039000000040010043f0000024f01000041000008880001043000000000010000190000088800010430000000400200043d0000001f0430018f00000005053002720000000505500210000006f70000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006f30000c13d000000000004004b000007050000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f000008880001043000010000000000020000000301000039000000000101041a000100000001001d0000024a0100004100000000001004390000000001000414000002230010009c0000022301008041000000c0011002100000024b011001c70000800b02000039088608810000040f00000001002001900000073e0000613d000000000101043b000000010210006c000007380000413d0000000201000039000000000101041a000000000001004b0000072d0000613d000000000300041a00000000041300a900000000051400d9000000000035004b000007380000c13d000000000004004b000007330000613d00000000032400a900000000044300d9000000000024004b0000072e0000613d000007380000013d00000000030000190000024d0230012a000000000012001a000007380000413d0000000001120019000000000001042d00000000030000190000024d0230012a000000000012001a000007380000413d000007310000013d0000025e0100004100000000001004350000001101000039000000040010043f0000024f010000410000088800010430000000000001042f0000000043010434000000000132043600000260063001970000001f0530018f000000000014004b000007550000813d000000000006004b000007510000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000074b0000c13d000000000005004b0000076f0000613d0000000007010019000007650000013d000000000006004b000007610000613d000000200760008a00000260077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000075d0000c13d000000000005004b0000076f0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000260023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002610200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000026004a001970000001f03a0018f0000006401500039000000000012004b000007990000813d000000000004004b000007950000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000078f0000c13d000000000003004b000007b30000613d0000000005010019000007a90000013d000000000004004b000007a50000613d000000200540008a0000026005500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007a10000c13d000000000003004b000007b30000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000024401000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002230010009c0000022301008041000000c0011002100000024e011001c70000800502000039088608810000040f00000001002001900000081d0000613d000000000201043b00000000010004140000022502200197000000040020008c000000040a000029000007d10000c13d0000000003000031000000200030008c00000020040000390000000004034019000008050000013d00000002030000290000001f0330003900000260033001970000022300a0009c000002230400004100000000040a401900000040044002100000006403300039000002230030009c00000223030080410000006003300210000000000343019f000002230010009c0000022301008041000000c001100210000000000131019f088608810000040f000000040a000029000000000301001900000060033002700000022303300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007f30000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007ef0000c13d000000000005004b000008020000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000083d0000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002500040009c0000081e0000213d00000001001001900000081e0000c13d000000400040043f0000001f0030008c0000081b0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b0000081b0000c13d000000000001004b000008240000613d000000000001042d00000000010000190000088800010430000000000001042f0000025e0100004100000000001004350000004101000039000000040010043f0000024f0100004100000888000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000026201000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d0886073f0000040f00000004020000290000000001210049000002230010009c0000022301008041000002230020009c000002230200804100000060011002100000004002200210000000000121019f0000088800010430000000400200043d0000001f0430018f00000005053002720000000505500210000008490000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008450000c13d000000000004004b000008570000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002230020009c00000223020080410000004002200210000000000112019f0000088800010430000000000001042f00000000050100190000000000200439000000050030008c0000086c0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008640000413d000002230030009c000002230300804100000060013002100000000002000414000002230020009c0000022302008041000000c002200210000000000112019f00000263011001c70000000002050019088608810000040f00000001002001900000087b0000613d000000000101043b000000000001042d000000000001042f0000087f002104210000000102000039000000000001042d0000000002000019000000000001042d00000884002104230000000102000039000000000001042d0000000002000019000000000001042d0000088600000432000008870001042e000008880001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000180000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000ac5a693d00000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000e00bfe5000000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000abb85613000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a0000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be6310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e00000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000020000000000000000000000000736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000007a28fb88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","STETH()":"e00bfe50","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100026525c00fe5986bbba49b960549b24f6979732769ee5db0b9c0531ae6b7","factoryDependencies":{}}},"contracts/oracles/ZkETHOracle.sol":{"ZkETHOracle":{"abi":[{"inputs":[{"internalType":"address","name":"zkETH","type":"address"},{"internalType":"address","name":"rzkETH","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zkETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rzkETH\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"amount Amount of rzkETH\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"ZkETHOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the amount of rzkETH for 1 zkETH\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of zkETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/ZkETHOracle.sol\":\"ZkETHOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/IZkETH.sol\":{\"keccak256\":\"0xdf8e9d184e0a855a710971f53e61604f4131b6250986982bfaf036689b9622a7\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://986714076bead8cd5f5eb9a2d4b83270df73056dec6101024d93501e2cce4ffa\",\"dweb:/ipfs/QmUdBoG2yKEpTUNrVHA5eJJEK1D8P7iLp9Rkt9xvKrwMbK\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/ZkETHOracle.sol\":{\"keccak256\":\"0xf97c0627f01407f59814aab61d346c9b08057830b981d05c9e4bf6a9c0ab0151\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c991bbfe5ce54a67f8436268bc33d26270473ad6efb3d8adc3a826fa253c5163\",\"dweb:/ipfs/QmPgULxYYsewqgmTYRUh9CygyGvFYYFusL3o3MAgghrwgP\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"author":"Venus","kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"amount Amount of rzkETH"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"ZkETHOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the amount of rzkETH for 1 zkETH"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of zkETH","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/ZkETHOracle.sol:ZkETHOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/ZkETHOracle.sol:ZkETHOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/ZkETHOracle.sol:ZkETHOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/ZkETHOracle.sol:ZkETHOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/ZkETHOracle.sol:ZkETHOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001200000000000200000000030100190000006003300270000002180330019700000001002001900000001e0000c13d0000008004000039000000400040043f000000040030008c000003bf0000413d000000000201043b000000e002200270000002200020009c000000590000a13d000002210020009c0000006c0000a13d000002220020009c000000d20000a13d000002230020009c000001680000613d000002240020009c000001730000613d000002250020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d085906de0000040f0000016c0000013d0000000002000416000000000002004b000003bf0000c13d0000001f0230003900000219022001970000010002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000001000500003900000005064002100000010006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003bf0000413d000001000100043d0000021a0010009c000003bf0000213d000001200400043d0000021a0040009c000003bf0000213d000001400500043d0000021a0050009c000003bf0000213d000001e00600043d0000021a0060009c000003bf0000213d000001c00700043d000001a00800043d000001800a00043d000001600300043d0000021b0230012a000002000900043d000000000020041b0000021c0030009c000001bc0000213d00000000000a004b000001be0000613d000001d30000013d0000022d0020009c000000a90000213d000002330020009c000000e10000213d000002360020009c0000017a0000613d000002370020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000001000412001000000001001d000f00200000003d000080050100003900000044030000390000000004000415000000100440008a000001ad0000013d000002280020009c0000011f0000213d0000022b0020009c0000017f0000613d0000022c0020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000301000039000000000101041a000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000301043b000000080130006c000001ec0000413d0000000102000039000000000202041a000000010220008a000000000012004b000001460000813d000600000003001d000000400200043d0000024001000041000800000002001d0000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c0000027b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002a70000013d0000022e0020009c000001480000213d000002310020009c0000018e0000613d000002320020009c000003bf0000c13d000000240030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f0000024d01000041000000a00010043f0000008001000039085907480000040f0000000401000039000000000501041a0000000001000414000002180010009c0000021801008041000000c0011002100000023c011001c70000800d0200003900000003030000390000024e0400004100000008060000290859084f0000040f0000000100200190000003bf0000613d00000008010000290000000402000039000000000012041b00000000010000190000085a0001042e000002260020009c000001990000613d000002270020009c000003bf0000c13d0000000001000416000000000001004b000003bf0000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a000001ad0000013d000002340020009c0000019e0000613d000002350020009c000003bf0000c13d000000240030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000000401100370000000000101043b0000021a0010009c000003bf0000213d000800000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000101043b000000080110014f000000400200043d0000021a001001980000023d0000c13d0000024001000041000800000002001d0000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000002e30000c13d0000000003000031000000200030008c00000020040000390000000004034019000000080a000029000003100000013d000002290020009c000001a30000613d0000022a0020009c000003bf0000c13d000000440030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f0000023b01000041000000a00010043f0000008001000039085907480000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000002180010009c0000021801008041000000c0011002100000023c011001c70000800d020000390000023d040000410859084f0000040f0000000100200190000003bf0000613d00000000010000190000085a0001042e0000022f0020009c000001b40000613d000002300020009c000003bf0000c13d000000440030008c000003bf0000413d0000000002000416000000000002004b000003bf0000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f0000024901000041000000a00010043f0000008001000039085907480000040f00000007010000290000021b0610012a000000000500041a000000000060041b0000021c0010009c000001d10000213d000000080000006b000001d30000c13d000001f20000013d0000000001000416000000000001004b000003bf0000c13d0859065a0000040f000000400200043d0000000000120435000002180020009c0000021802008041000000400120021000000238011001c70000085a0001042e0000000001000416000000000001004b000003bf0000c13d000000000100041a000000800010043f00000239010000410000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000101000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000101000039000000000101041a000000000001004b0000000001000019000001db0000c13d000000010110018f0000000000140435000002180040009c0000021804008041000000400140021000000238011001c70000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001ad0000013d0000000001000416000000000001004b000003bf0000c13d0000000301000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000401000039000001b80000013d0000000001000416000000000001004b000003bf0000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a00000005044002100000023a02000041085908310000040f0000021a01100197000000800010043f00000239010000410000085a0001042e0000000001000416000000000001004b000003bf0000c13d0000000201000039000000000101041a000000800010043f00000239010000410000085a0001042e00000000000a004b000001d30000613d0000000003000415000000120330008a0000000503300210000000000008004b000001c80000613d0000000003000415000000110330008a0000000503300210000000000007004b0000020b0000c13d00000000000a004b0000000002000019000000010200c0390000000503300270000000000302001f0000020b0000613d000000400100043d0000021e02000041000001d50000013d000000080000006b000001f20000c13d000000400100043d0000024a020000410000000000210435000002180010009c000002180100804100000040011002100000021f011001c70000085b000104300000000301000039000000000101041a000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000080210006c000002440000813d000002520100004100000000001004350000001101000039000000040010043f00000247010000410000085b000104300000000101000039000000000701041a000000400100043d00000008020000290000000000210435000002180010009c000002180100804100000040011002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f0000024b011001c70000800d0200003900000004030000390000024c040000410859084f0000040f0000000100200190000003bf0000613d00000008010000290000000102000039000000000012041b00000000010000190000085a0001042e000100000001001d000600000004001d000700000005001d000800000006001d000400000007001d000300000008001d000500000009001d00020000000a001d0859064f0000040f00000006010000290859064f0000040f00000007010000290859064f0000040f00000008010000290859064f0000040f0000000102000029000000800020043f0000000603000029000000a00030043f0000000705000029000000c00050043f00000001010000390000000204000029000000000041041b00000002010000390000000304000029000000000041041b00000003010000390000000404000029000000000041041b00000004010000390000000504000029000000000041041b0000000804000029000000e00040043f0000014000000443000001600020044300000020020000390000018000200443000001a0003004430000004003000039000001c000300443000001e000500443000000600300003900000200003004430000022000400443000001000020044300000120001004430000021d010000410000085a0001042e0000024f010000410000000000120435000002180020009c000002180200804100000040012002100000021f011001c70000085b000104300000000201000039000000000101041a000000000001004b0000000003000019000002510000c13d000002430230012a000000000012001a000001ec0000413d000000000112001a000000400400043d0000025e0000c13d0000000001000019000001870000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000002490000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000002490000013d000600000001001d0000024001000041000800000004001d0000000001140436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000003860000c13d0000000003000031000000200030008c00000020040000390000000004034019000003b20000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000002950000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000002910000c13d000000000005004b000002a40000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003560000613d0000001f01400039000000600210018f0000000801200029000000000021004b00000000020000190000000102004039000002420010009c000004c40000213d0000000100200190000004c40000c13d000000400010043f000000200030008c000003bf0000413d0000000301000039000000000101041a000700000001001d00000008010000290000000001010433000800000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000070210006c0000000606000029000001ec0000413d0000000201000039000000000101041a000000000001004b00000000030000190000042c0000c13d000002430230012a000000000012001a000001ec0000413d0000000001120019000000080010006b000000000301001900000008030040290000000401000039000000000101041a0000000002030019000000000031001a000001ec0000413d000000000121001a0000000202000039000000000012041b0000000301000039000000000061041b000004390000c13d000000400100043d0000024802000041000001d50000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000080a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070b000029000002fe0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000002fa0000c13d000000000005004b0000030d0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003650000613d0000001f01400039000000600110018f0000000002a10019000000000012004b00000000010000190000000101004039000002420020009c000004c40000213d0000000100100190000004c40000c13d000000400020043f000000200030008c000003bf0000413d000700000002001d00000000010a0433000800000001001d0000000101000039000600000001001d000000000101041a000000000001004b000003c10000c13d000002500100004100000007020000290000000001120436000500000001001d0000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d00000007020000290000000402200039000000000101043b0000021a0110019700000000001204350000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000004910000c13d0000000003000031000000200030008c00000020040000390000000004034019000004bd0000013d000000400200043d0000001f0430018f0000000505300272000003620000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000035e0000c13d000000000004004b000003800000613d000003730000013d000000400200043d0000001f0430018f0000000505300272000003710000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000036d0000c13d000000000004004b000003800000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b000104300000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000003a00000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b0000039c0000c13d000000000005004b000003af0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004170000613d0000001f01400039000000600110018f0000000804100029000000000014004b00000000010000190000000101004039000002420040009c000004c40000213d0000000100100190000004c40000c13d000000400040043f000000200030008c000004260000813d00000000010000190000085b000104300000000301000039000000000101041a000700000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000005620000613d000000000101043b000000070210006c000001ec0000413d0000000201000039000000000101041a000000000001004b0000000003000019000004ca0000c13d000002430230012a000000000012001a000001ec0000413d000700000012001d000000400200043d0000025001000041000500000002001d0000000001120436000400000001001d0000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000706000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000700000006001d0000000100200190000005620000613d00000005020000290000000402200039000000000101043b0000021a0110019700000000001204350000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005080000c13d0000000003000031000000200030008c00000020040000390000000004034019000005340000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004230000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000041f0000c13d000000000004004b000003800000613d000003740000013d00000008010000290000000001010433000000060010006c00000000010000190000000101002039000001870000013d000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000002ce0000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000002ce0000013d0000023a01000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000101043b000002440200004100000000002004390000021a01100197000800000001001d00000004001004430000000001000414000002180010009c0000021801008041000000c00110021000000245011001c70000800202000039085908540000040f0000000100200190000005620000613d000000000101043b000000000001004b000003bf0000613d000000400200043d0000024601000041000700000002001d00000000001204350000023a01000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d00000007020000290000000402200039000000000101043b0000021a01100197000000000012043500000000010004140000000802000029000000040020008c000004860000613d0000000702000029000002180020009c00000218020080410000004002200210000002180010009c0000021801008041000000c001100210000000000121019f00000247011001c700000008020000290859084f0000040f00000000030100190000006003300270000002180030019d0000000100200190000005c00000613d0000000701000029000002420010009c000004c40000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a00000000010004140000013d0000013d0000000703000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f00000247011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004ab0000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000004a70000c13d000000000005004b000004ba0000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004f90000613d0000001f01400039000000600110018f00000007020000290000000001210019000500000001001d000002420010009c000004d70000a13d000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b00010430000000000300041a00000000041300a900000000051400d9000000000035004b000001ec0000c13d000000000004004b0000000003000019000003d70000613d00000000032400a900000000044300d9000000000024004b000001ec0000c13d000003d70000013d0000000501000029000000400010043f000000200030008c000003bf0000413d0000000001020433000400000001001d000002510100004100000005020000290000000001120436000700000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005630000c13d0000000003000031000000200030008c000000200400003900000000040340190000058f0000013d000000400200043d0000001f0430018f0000000505300272000005050000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005010000c13d000000000004004b000003800000613d000003730000013d0000000503000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f00000247011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000005220000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b0000051e0000c13d000000000005004b000005310000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005a20000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000002420020009c000004c40000213d0000000100100190000004c40000c13d0000000801000029000000400010043f000000200030008c000003bf0000413d00000005010000290000000001010433000400000001001d000002510100004100000008020000290000000001120436000500000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000005620000613d000000000201043b00000000010004140000021a02200197000000040020008c000005d00000c13d0000000003000031000000200030008c00000020040000390000000004034019000005fc0000013d000000000001042f0000000503000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a0000290000057d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000005790000c13d000000000005004b0000058c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000005b10000613d0000001f01400039000000600110018f0000000501100029000002420010009c000004c40000213d000000400010043f000000200030008c000003bf0000413d00000005020000290000000003020433000000ff0030008c000003bf0000213d000000040200002900000008022000b9000000080000006b0000060f0000c13d0000004d0030008c000001ec0000213d000006140000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005ae0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005aa0000c13d000000000004004b000003800000613d000003740000013d000000400200043d0000001f0430018f00000005053002720000000505500210000005bd0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005b90000c13d000000000004004b000003800000613d000003740000013d0000021803300197000000400200043d0000001f0430018f0000000505300272000005cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005c90000c13d000000000004004b000003800000613d000003730000013d0000000803000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000005ea0000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005e60000c13d000000000005004b000005f90000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006280000613d0000001f01400039000000600110018f0000000801100029000002420010009c000004c40000213d000000400010043f000000200030008c000003bf0000413d00000008020000290000000003020433000000ff0030008c000003bf0000213d000000040200002900000007022000b9000000070000006b000006370000c13d0000004d0030008c000001ec0000213d0000063c0000013d0000004d0030008c000001ec0000213d00000008042000fa000000040040006c000001ec0000c13d000000000003004b0000063e0000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006180000c13d000600000006001d000000000006004b0000063e0000c13d000002520100004100000000001004350000001201000039000000040010043f00000247010000410000085b00010430000000400200043d0000001f0430018f0000000505300272000006340000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006300000c13d000000000004004b000003800000613d000003730000013d0000004d0030008c000001ec0000213d00000007042000fa000000040040006c000001ec0000c13d000000000003004b000006450000c13d00000006022000fa0000000000210435000002180010009c0000021801008041000000400110021000000238011001c70000085a0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000006470000c13d0000061f0000013d0000021a00100198000006520000613d000000000001042d000000400100043d00000253020000410000000000210435000002180010009c000002180100804100000040011002100000021f011001c70000085b000104300002000000000002000000400200043d0000024001000041000200000002001d0000000001120436000100000001001d0000023a0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000006b50000613d000000000201043b00000000010004140000021a02200197000000040020008c000006790000c13d0000000003000031000000200030008c00000020040000390000000004034019000000020a000029000006a60000013d0000000203000029000002180030009c00000218030080410000004003300210000002180010009c0000021801008041000000c001100210000000000131019f0000021f011001c7085908540000040f000000020a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010b000029000006940000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006900000c13d000000000005004b000006a30000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006be0000613d0000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000190000000102004039000002420010009c000006b60000213d0000000100200190000006b60000c13d000000400010043f0000001f0030008c000006bc0000a13d00000000010a0433000000000001042d000000000001042f000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b0001043000000000010000190000085b00010430000000400200043d0000001f0430018f00000005053002720000000505500210000006ca0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006c60000c13d000000000004004b000006d80000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b0001043000010000000000020000000301000039000000000101041a000100000001001d0000023e0100004100000000001004390000000001000414000002180010009c0000021801008041000000c0011002100000023f011001c70000800b02000039085908540000040f0000000100200190000007110000613d000000000101043b000000010210006c0000070b0000413d0000000201000039000000000101041a000000000001004b000007000000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000070b0000c13d000000000004004b000007060000613d00000000032400a900000000044300d9000000000024004b000007010000613d0000070b0000013d0000000003000019000002430230012a000000000012001a0000070b0000413d0000000001120019000000000001042d0000000003000019000002430230012a000000000012001a0000070b0000413d000007040000013d000002520100004100000000001004350000001101000039000000040010043f00000247010000410000085b00010430000000000001042f0000000043010434000000000132043600000254063001970000001f0530018f000000000014004b000007280000813d000000000006004b000007240000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000071e0000c13d000000000005004b000007420000613d0000000007010019000007380000013d000000000006004b000007340000613d000000200760008a00000254077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000007300000c13d000000000005004b000007420000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000254023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000002550200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a304350000025404a001970000001f03a0018f0000006401500039000000000012004b0000076c0000813d000000000004004b000007680000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000007620000c13d000000000003004b000007860000613d00000000050100190000077c0000013d000000000004004b000007780000613d000000200540008a0000025405500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000007740000c13d000000000003004b000007860000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a001900000000000104350000023a01000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000002180010009c0000021801008041000000c00110021000000241011001c70000800502000039085908540000040f0000000100200190000007f00000613d000000000201043b00000000010004140000021a02200197000000040020008c000000040a000029000007a40000c13d0000000003000031000000200030008c00000020040000390000000004034019000007d80000013d00000002030000290000001f0330003900000254033001970000021800a0009c000002180400004100000000040a401900000040044002100000006403300039000002180030009c00000218030080410000006003300210000000000343019f000002180010009c0000021801008041000000c001100210000000000131019f085908540000040f000000040a000029000000000301001900000060033002700000021803300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000007c60000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000007c20000c13d000000000005004b000007d50000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000008100000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000002420040009c000007f10000213d0000000100100190000007f10000c13d000000400040043f0000001f0030008c000007ee0000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000007ee0000c13d000000000001004b000007f70000613d000000000001042d00000000010000190000085b00010430000000000001042f000002520100004100000000001004350000004101000039000000040010043f00000247010000410000085b000104300000004401400039000000600200003900000000002104350000002401400039000000000200041000000000002104350000025601000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d085907120000040f00000004020000290000000001210049000002180010009c0000021801008041000002180020009c000002180200804100000060011002100000004002200210000000000121019f0000085b00010430000000400200043d0000001f0430018f000000050530027200000005055002100000081c0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008180000c13d000000000004004b0000082a0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002180020009c00000218020080410000004002200210000000000112019f0000085b00010430000000000001042f00000000050100190000000000200439000000050030008c0000083f0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000008370000413d000002180030009c000002180300804100000060013002100000000002000414000002180020009c0000021802008041000000c002200210000000000112019f00000257011001c70000000002050019085908540000040f00000001002001900000084e0000613d000000000101043b000000000001042d000000000001042f00000852002104210000000102000039000000000001042d0000000002000019000000000001042d00000857002104230000000102000039000000000001042d0000000002000019000000000001042d00000859000004320000085a0001042e0000085b00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000140000001000000000000000000b8a5589b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000671528d3000000000000000000000000000000000000000000000000000000009c43eb5300000000000000000000000000000000000000000000000000000000abb8561200000000000000000000000000000000000000000000000000000000abb8561300000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af2000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000a4edcd4c0000000000000000000000000000000000000000000000000000000069818a340000000000000000000000000000000000000000000000000000000069818a35000000000000000000000000000000000000000000000000000000007fc4e4a000000000000000000000000000000000000000000000000000000000671528d400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d0000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000039648e00000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000000000000de0b6b3a76400001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000005f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa2930000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"0100025927ea40cf2be3dea474a128cfe26f64f7b49f3f132b5ef8a33fd194c3","factoryDependencies":{}}},"contracts/oracles/common/CorrelatedTokenOracle.sol":{"CorrelatedTokenOracle":{"abi":[{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalidInvalidInitialSnapshot error is thrown if the initial snapshot values are invalid\"},\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"underlyingAmount Amount of underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"title\":\"CorrelatedTokenOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"constructor\":{\"notice\":\"Constructor for the implementation contract.\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the underlying amount for correlated token\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"notice\":\"This oracle fetches the price of a token that is correlated to another token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/common/CorrelatedTokenOracle.sol\":\"CorrelatedTokenOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{"constructor":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalidInvalidInitialSnapshot error is thrown if the initial snapshot values are invalid"},"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"underlyingAmount Amount of underlying token"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"title":"CorrelatedTokenOracle","version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"constructor":{"notice":"Constructor for the implementation contract."},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the underlying amount for correlated token"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"notice":"This oracle fetches the price of a token that is correlated to another token.","version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/oracles/common/CorrelatedTokenOracle.sol:CorrelatedTokenOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/oracles/common/CorrelatedTokenOracle.sol:CorrelatedTokenOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/oracles/common/CorrelatedTokenOracle.sol:CorrelatedTokenOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/oracles/common/CorrelatedTokenOracle.sol:CorrelatedTokenOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/oracles/common/CorrelatedTokenOracle.sol:CorrelatedTokenOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","setGrowthRate(uint256,uint256)":"643d813d","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}}}},"contracts/oracles/mocks/MockAccountant.sol":{"MockAccountant":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"getRateSafe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getRateSafe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockAccountant.sol\":\"MockAccountant\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IAccountant.sol\":{\"keccak256\":\"0x04672ffcad2a2f951d7afc7288a5875dc6e67d12445666c959ac64966102b06b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f034d1afbbe39db076d65058d9ab9d4b914f1c87908e72c2ab73aae86fe0d222\",\"dweb:/ipfs/QmXV1D3Ahzs6cCE8KWvqzGNnBsUt4q3bcTo8DyWzi4LWDS\"]},\"contracts/oracles/mocks/MockAccountant.sol\":{\"keccak256\":\"0x4469944d68e1ca6356bd8953876bbc3108a14d5a4cf21c0bffc973482eed73a0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://1b499875b90d4f7465ea90f42366dcaccf13c798e757677bc70100c5ba7c77d7\",\"dweb:/ipfs/QmcqHx3RsiPyotJcBag5nYLNRrVkwaoSPPUHuvk7or7Yed\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"contracts/oracles/mocks/MockAccountant.sol:MockAccountant","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":8621,"contract":"contracts/oracles/mocks/MockAccountant.sol:MockAccountant","label":"rate","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200000000000103550000008003000039000000400030043f0000000100200190000000220000c13d000000000201001900000060022002700000002f02200197000000040020008c0000009a0000413d000000000301043b000000e003300270000000350030009c0000003b0000213d000000390030009c0000005d0000613d0000003a0030009c0000005d0000613d0000003b0030009c0000009a0000c13d000000240020008c0000009a0000413d0000000001000416000000000001004b0000009a0000c13d00b7009c0000040f00000004010000390000000001100367000000000101043b0000000102000039000000000012041b0000000001000019000000b80001042e0000000001000416000000000001004b0000009a0000c13d000000000100041a00000030021001970000000006000411000000000262019f000000000020041b000000000200041400000031051001970000002f0020009c0000002f02008041000000c00120021000000032011001c70000800d020000390000000303000039000000330400004100b700b20000040f00000001002001900000009a0000613d0000002001000039000001000010044300000120000004430000003401000041000000b80001042e000000360030009c000000650000613d000000370030009c000000790000613d000000380030009c0000009a0000c13d000000240020008c0000009a0000413d0000000002000416000000000002004b0000009a0000c13d0000000401100370000000000101043b000000310010009c0000009a0000213d000000000200041a00000031032001970000000005000411000000000053004b000000810000c13d00000031061001980000008a0000c13d0000003c01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000003d01000041000000c40010043f0000003e01000041000000e40010043f0000003f01000041000000b9000104300000000001000416000000000001004b0000009a0000c13d0000000101000039000000000101041a000000800010043f0000004001000041000000b80001042e0000000001000416000000000001004b0000009a0000c13d000000000100041a00000031021001970000000005000411000000000052004b000000810000c13d0000003001100197000000000010041b00000000010004140000002f0010009c0000002f01008041000000c00110021000000032011001c70000800d02000039000000030300003900000033040000410000000006000019000000950000013d0000000001000416000000000001004b0000009a0000c13d000000000100041a0000003101100197000000800010043f0000004001000041000000b80001042e0000003c01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000004101000041000000c40010043f0000004201000041000000b9000104300000003001200197000000000161019f000000000010041b00000000010004140000002f0010009c0000002f01008041000000c00110021000000032011001c70000800d020000390000000303000039000000330400004100b700b20000040f00000001002001900000009a0000613d0000000001000019000000b80001042e0000000001000019000000b900010430000000000100041a00000031011001970000000002000411000000000021004b000000a20000c13d000000000001042d000000400100043d0000004402100039000000410300004100000000003204350000003c020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000002f0010009c0000002f01008041000000400110021000000043011001c7000000b900010430000000b5002104210000000102000039000000000001042d0000000002000019000000000001042d000000b700000432000000b80001042e000000b9000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000282a8700000000000000000000000000000000000000000000000000000000002c4e722e0000000000000000000000000000000000000000000000000000000034fcf43708c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000006400000080000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"getRateSafe()":"282a8700","owner()":"8da5cb5b","rate()":"2c4e722e","renounceOwnership()":"715018a6","setRate(uint256)":"34fcf437","transferOwnership(address)":"f2fde38b"}},"hash":"01000045488461d71b57bffd969c7df59620366766000efedca4bef3ff11fc11","factoryDependencies":{}}},"contracts/oracles/mocks/MockBinanceFeedRegistry.sol":{"MockBinanceFeedRegistry":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"decimalsByName","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"latestRoundDataByName","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setAssetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"assetPrices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"decimalsByName\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"latestRoundDataByName\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setAssetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockBinanceFeedRegistry.sol\":\"MockBinanceFeedRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/FeedRegistryInterface.sol\":{\"keccak256\":\"0xf57101e676f7d93b0714f5774a3111a80ce9df0bbaed6d5e78668293c11b04e8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ba65cef548fc89fc731345cc38656ca1a6ccb970657233588d8fb2eeec8aa8c7\",\"dweb:/ipfs/QmYYeoRENPKFPgztvrTU3V3SRpHjf5e1ctAQ6PtB2hp9wi\"]},\"contracts/oracles/mocks/MockBinanceFeedRegistry.sol\":{\"keccak256\":\"0x8062b9023d8acb1840fd75523b0687be2dde7e2481edc30e1bb5610fb4fe349b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://87591e4dd9b756da77cce77c24817c7dcfe07395da87c81b9c1e508dd7c2d349\",\"dweb:/ipfs/QmVPem7q82NSy7vCN8EmxQAboL4PzcP9XKH5Sxrvgr71Ec\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":8658,"contract":"contracts/oracles/mocks/MockBinanceFeedRegistry.sol:MockBinanceFeedRegistry","label":"assetPrices","offset":0,"slot":"0","type":"t_mapping(t_string_memory_ptr,t_uint256)"}],"types":{"t_mapping(t_string_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_string_memory_ptr","label":"mapping(string => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_memory_ptr":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002000100000000000200000000000103550000008003000039000000400030043f0000000100200190000000350000c13d00000000020100190000006002200270000000a502200197000000040020008c0000018e0000413d000000000301043b000000e003300270000000a70030009c0000003d0000213d000000aa0030009c000000620000613d000000ab0030009c0000018e0000c13d000000440020008c0000018e0000413d0000000003000416000000000003004b0000018e0000c13d0000000401100370000000000101043b000000ac0010009c0000018e0000213d0000000401100039028f01a20000040f0000000032010434000000b6052001970000001f0420018f000000400100043d000000000013004b000000860000813d000000000005004b000000310000613d00000000074300190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000002b0000c13d000000000004004b000000a00000613d0000000006010019000000960000013d0000000001000416000000000001004b0000018e0000c13d000000200100003900000100001004430000012000000443000000a601000041000002900001042e000000a80030009c000000690000613d000000a90030009c0000018e0000c13d000000240020008c0000018e0000413d0000000003000416000000000003004b0000018e0000c13d0000000401100370000000000101043b000000ac0010009c0000018e0000213d0000000401100039028f01a20000040f0000000032010434000000b6052001970000001f0420018f000000400100043d000000000013004b000000ac0000813d000000000005004b0000005e0000613d00000000074300190000000006410019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000000580000c13d000000000004004b000000c60000613d0000000006010019000000bc0000013d0000000001000416000000000001004b0000018e0000c13d0000000001020019028f01ee0000040f0000000801000039000000cb0000013d000000440020008c0000018e0000413d0000000003000416000000000003004b0000018e0000c13d0000000403100370000000000503043b000000ac0050009c0000018e0000213d0000002303500039000000000023004b0000018e0000813d0000000406500039000000000361034f000000000403043b000000ae0040009c000000800000813d0000001f07400039000000b6077001970000003f07700039000000b607700197000000af0070009c000000d20000a13d000000b40100004100000000001004350000004101000039000000040010043f000000b5010000410000029100010430000000000005004b000000920000613d000000200750008a000000b606700197000000000616001900000020066000390000000007030019000000000801001900000000790704340000000008980436000000000068004b0000008e0000c13d000000000004004b000000a00000613d000000000651001900000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000003120019000000000003043500000024030000390000000003300367000000000303043b000100000003001d0000002002200039028f02750000040f0000000102000029000000000021041b0000000001000019000002900001042e000000000005004b000000b80000613d000000200750008a000000b606700197000000000616001900000020066000390000000007030019000000000801001900000000790704340000000008980436000000000068004b000000b40000c13d000000000004004b000000c60000613d000000000651001900000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f0000000000360435000000000312001900000000000304350000002002200039028f02750000040f000000000101041a000000400200043d0000000000120435000000a50020009c000000a5020080410000004001200210000000ad011001c7000002900001042e0000008007700039000000400070043f000000800040043f00000000054500190000002405500039000000000025004b0000018e0000213d0000002005600039000000000551034f0000001f0640018f00000005074002720000000507700210000000e60000613d000000a008000039000000a009700039000000000a05034f00000000ab0a043c0000000008b80436000000000098004b000000e20000c13d000000000006004b000000f40000613d000000000575034f0000000306600210000000a007700039000000000807043300000000086801cf000000000868022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000585019f0000000000570435000000a00440003900000000000404350000002404100370000000000604043b000000ac0060009c0000018e0000213d0000002304600039000000000024004b0000018e0000813d0000000407600039000000000471034f000000000404043b000000ac0040009c000000800000213d0000001f05400039000000b6055001970000003f05500039000000b608500197000000400500043d0000000008850019000000000058004b00000000090000190000000109004039000000ac0080009c000000800000213d0000000100900190000000800000c13d000000400080043f000000000545043600000000064600190000002406600039000000000026004b0000018e0000213d0000002002700039000000000221034f0000001f0140018f0000000506400272000001220000613d00000005076002100000000007750019000000000802034f0000000009050019000000008a08043c0000000009a90436000000000079004b0000011e0000c13d000000000001004b000001310000613d0000000506600210000000000262034f00000000066500190000000301100210000000000706043300000000071701cf000000000717022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000171019f000000000016043500000000014500190000000000010435000000800100043d000000b6051001970000001f0410018f000000400200043d000000a10020008c000001490000413d000000000005004b000001440000613d000000000642001900000080034001bf000000200660008a0000000007560019000000000853001900000000080804330000000000870435000000200550008c0000013e0000c13d000000000004004b000001630000613d000000a0050000390000000003020019000001590000013d000000000005004b000001550000613d000000200650008a000000b606600197000000a00300003900000000062600190000002006600039000000000702001900000000380304340000000007870436000000000067004b000001510000c13d000000000004004b000001630000613d0000000003520019000000a0055000390000000304400210000000000603043300000000064601cf000000000646022f00000000050504330000010004400089000000000545022f00000000044501cf000000000464019f000000000043043500000000032100190000000000030435000000a50020009c000000a50200804100000040022002100000002001100039000000a50010009c000000a5010080410000006001100210000000000121019f0000000002000414000000a50020009c000000a502008041000000c002200210000000000112019f000000b0011001c70000801002000039028f028a0000040f00000001002001900000018e0000613d000000000101043b000000000101041a000100000001001d000000b10100004100000000001004390000000001000414000000a50010009c000000a501008041000000c001100210000000b2011001c70000800b02000039028f028a0000040f0000000100200190000001900000613d000000000101043b000000090010008c000001910000213d000000b40100004100000000001004350000001101000039000000040010043f000000b501000041000002910001043000000000010000190000029100010430000000000001042f0000000a0110008a000000400200043d0000006003200039000000000013043500000020012000390000000103000029000000000031043500000080012000390000000000010435000000400120003900000000000104350000000000020435000000a50020009c000000a5020080410000004001200210000000b3011001c7000002900001042e00000000030100190000001f01300039000000000021004b0000000004000019000000b704004041000000b705200197000000b701100197000000000651013f000000000051004b0000000001000019000000b701002041000000b70060009c000000000104c019000000000001004b000001ec0000613d0000000006000367000000000136034f000000000401043b000000ae0040009c000001e60000813d0000001f01400039000000b6011001970000003f01100039000000b605100197000000400100043d0000000005510019000000000015004b00000000070000190000000107004039000000ac0050009c000001e60000213d0000000100700190000001e60000c13d000000400050043f000000000541043600000020033000390000000007430019000000000027004b000001ec0000213d000000000336034f0000001f0240018f00000005064002720000000506600210000001d50000613d0000000007650019000000000803034f0000000009050019000000008a08043c0000000009a90436000000000079004b000001d10000c13d000000000002004b000001e30000613d000000000363034f00000000066500190000000302200210000000000706043300000000072701cf000000000727022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000272019f000000000026043500000000024500190000000000020435000000000001042d000000b40100004100000000001004350000004101000039000000040010043f000000b501000041000002910001043000000000010000190000029100010430000000b80010009c0000026c0000213d000000430010008c0000026c0000a13d00000000020003670000000403200370000000000603043b000000ac0060009c0000026c0000213d0000002303600039000000000013004b0000026c0000813d0000000407600039000000000372034f000000000403043b000000ae0040009c0000026e0000813d0000001f05400039000000b6055001970000003f05500039000000b608500197000000400500043d0000000008850019000000000058004b00000000090000190000000109004039000000ac0080009c0000026e0000213d00000001009001900000026e0000c13d000000400080043f000000000545043600000000064600190000002406600039000000000016004b0000026c0000213d0000002006700039000000000762034f0000001f0640018f000000050840027200000005088002100000021f0000613d0000000009850019000000000a07034f000000000b05001900000000ac0a043c000000000bcb043600000000009b004b0000021b0000c13d000000000006004b0000022d0000613d000000000787034f00000000088500190000000306600210000000000908043300000000096901cf000000000969022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000696019f0000000000680435000000000445001900000000000404350000002404200370000000000504043b000000ac0050009c0000026c0000213d0000002304500039000000000014004b0000026c0000813d0000000406500039000000000462034f000000000404043b000000ac0040009c0000026e0000213d0000001f07400039000000b6077001970000003f07700039000000b607700197000000400300043d0000000007730019000000000037004b00000000080000190000000108004039000000ac0070009c0000026e0000213d00000001008001900000026e0000c13d000000400070043f000000000343043600000000054500190000002405500039000000000015004b0000026c0000213d0000002001600039000000000212034f0000001f0140018f000000050540027200000005055002100000025b0000613d0000000006530019000000000702034f0000000008030019000000007907043c0000000008980436000000000068004b000002570000c13d000000000001004b000002690000613d000000000252034f00000000055300190000000301100210000000000605043300000000061601cf000000000616022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000161019f000000000015043500000000014300190000000000010435000000000001042d00000000010000190000029100010430000000b40100004100000000001004350000004101000039000000040010043f000000b5010000410000029100010430000000000001042f000000a50010009c000000a5010080410000004001100210000000a50020009c000000a5020080410000006002200210000000000112019f0000000002000414000000a50020009c000000a502008041000000c002200210000000000112019f000000b0011001c70000801002000039028f028a0000040f0000000100200190000002880000613d000000000101043b000000000001042d000000000100001900000291000104300000028d002104230000000102000039000000000001042d0000000002000019000000000001042d0000028f00000432000002900001042e00000291000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000bfda5e7000000000000000000000000000000000000000000000000000000000bfda5e7100000000000000000000000000000000000000000000000000000000f9172888000000000000000000000000000000000000000000000000000000006e91995a00000000000000000000000000000000000000000000000000000000b78107ca000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0200000000000000000000000000000000000000000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"methodIdentifiers":{"assetPrices(string)":"f9172888","decimalsByName(string,string)":"6e91995a","latestRoundDataByName(string,string)":"bfda5e71","setAssetPrice(string,uint256)":"b78107ca"}},"hash":"010000b99f2197980715d4e47df0ff0d3ef4d78fbe50c50f252def833ce6ddbe","factoryDependencies":{}}},"contracts/oracles/mocks/MockBinanceOracle.sol":{"MockBinanceOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetPrices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockBinanceOracle.sol\":\"MockBinanceOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/mocks/MockBinanceOracle.sol\":{\"keccak256\":\"0x4c5697b6e22ec57c6e3d0a7ca2d3839c616811cf07866d619aa0c1f5310a0292\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://459c3dfd0cacdd2dd9a379c2c1778de031eb36e34f3d8f3fdc84b5343970b9ea\",\"dweb:/ipfs/QmPCiCdnj1hcbsYyWwbKwkjHwPa2mZRRry3GWzMkKXUin2\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":8736,"contract":"contracts/oracles/mocks/MockBinanceOracle.sol:MockBinanceOracle","label":"assetPrices","offset":0,"slot":"101","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"00050000000000020000008004000039000000400040043f0000000100200190000000360000c13d000000000201001900000060022002700000004902200197000000040020008c000001040000413d000000000301043b000000e0033002700000004b0030009c0000003e0000a13d0000004c0030009c0000004a0000213d0000004f0030009c0000006b0000613d000000500030009c000001040000c13d0000000001000416000000000001004b000001040000c13d0000000002000415000000050220008a0000000502200210000000000300041a0000ff0001300190000000bb0000c13d0000000002000415000000040220008a0000000502200210000000ff00300190000000bb0000c13d000000620130019700000001011001bf000000000010041b00000001030000390000000000340435000000490040009c000000490400804100000040014002100000000002000414000000490020009c0000004902008041000000c002200210000000000112019f00000063011001c70000800d020000390000006404000041011e01140000040f0000000100200190000000820000c13d000001040000013d0000000001000416000000000001004b000001040000c13d0000002001000039000001000010044300000120000004430000004a010000410000011f0001042e000000510030009c000000840000613d000000520030009c000000980000613d000000530030009c000001040000c13d000000240020008c000001040000413d0000000002000416000000000002004b000001040000c13d0000009d0000013d0000004d0030009c000000a90000613d0000004e0030009c000001040000c13d000000240020008c000001040000413d0000000002000416000000000002004b000001040000c13d0000000401100370000000000601043b000000540060009c000001040000213d0000003301000039000000000201041a00000054052001970000000003000411000000000035004b000000b20000c13d000000000006004b000000f60000c13d0000005801000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000005901000041000000c40010043f0000005a01000041000000e40010043f0000005b0100004100000120000104300000000001000416000000000001004b000001040000c13d0000003301000039000000000201041a00000054052001970000000003000411000000000035004b000000b20000c13d0000005502200197000000000021041b0000000001000414000000490010009c0000004901008041000000c00110021000000056011001c70000800d02000039000000030300003900000057040000410000000006000019011e01140000040f0000000100200190000001040000613d00000000010000190000011f0001042e000000440020008c000001040000413d0000000002000416000000000002004b000001040000c13d0000000402100370000000000202043b000000540020009c000001040000213d00000000002004350000006502000039000000200020043f0000002401100370000000000101043b000300000001001d011e01070000040f0000000302000029000000000021041b00000000010000190000011f0001042e000000240020008c000001040000413d0000000002000416000000000002004b000001040000c13d0000000401100370000000000101043b000000540010009c000001040000213d00000000001004350000006501000039000000200010043f011e01070000040f000000000101041a000000800010043f0000005c010000410000011f0001042e0000000001000416000000000001004b000001040000c13d0000003301000039000000000101041a0000005401100197000000800010043f0000005c010000410000011f0001042e0000005801000041000000800010043f0000002001000039000000840010043f000000a40010043f0000006501000041000000c40010043f00000066010000410000012000010430000300000002001d000100000001001d000200000003001d0000005d010000410000000000100439000000000100041000000004001004430000000001000414000000490010009c0000004901008041000000c0011002100000005e011001c70000800202000039011e01190000040f0000000100200190000000de0000613d000000000101043b000000000001004b000000df0000c13d0000000203000029000000ff0130018f000000010010008c0000000001000019000000010100603900000003020000290000000502200270000000000201001f000000e20000c13d000000670130019700000001011001bf000000000010041b000000010000006b000000820000c13d000000400400043d000000220000013d000000000001042f00000003010000290000000501100270000000000100001f000000400100043d00000064021000390000005f03000041000000000032043500000044021000390000006003000041000000000032043500000024021000390000002e03000039000000000032043500000058020000410000000000210435000000040210003900000020030000390000000000320435000000490010009c0000004901008041000000400110021000000061011001c700000120000104300000005502200197000000000262019f000000000021041b0000000001000414000000490010009c0000004901008041000000c00110021000000056011001c70000800d0200003900000003030000390000005704000041011e01140000040f0000000100200190000000820000c13d00000000010000190000012000010430000000000001042f0000000001000414000000490010009c0000004901008041000000c00110021000000068011001c70000801002000039011e01190000040f0000000100200190000001120000613d000000000101043b000000000001042d0000000001000019000001200001043000000117002104210000000102000039000000000001042d0000000002000019000000000001042d0000011c002104230000000102000039000000000001042d0000000002000019000000000001042d0000011e000004320000011f0001042e000001200001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a5000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008129fc1c0000000000000000000000000000000000000000000000000000000000e4768b0000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000005e9a523c000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e008c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024984f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000200000000000000000000000000000000000040000000000000000000000000"},"methodIdentifiers":{"assetPrices(address)":"5e9a523c","getPrice(address)":"41976e09","initialize()":"8129fc1c","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setPrice(address,uint256)":"00e4768b","transferOwnership(address)":"f2fde38b"}},"hash":"0100006969aff0452fed1191f3b970999263db8d6bd41aa7f09b3c40c3990461","factoryDependencies":{}}},"contracts/oracles/mocks/MockChainlinkOracle.sol":{"MockChainlinkOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetPrices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockChainlinkOracle.sol\":\"MockChainlinkOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e89863421b4014b96a4b62be76eb3b9f0a8afe9684664a6f389124c0964bfe5c\",\"dweb:/ipfs/Qmbk7xr1irpDuU1WdxXgxELBXxs61rHhCgod7heVcvFx16\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/mocks/MockChainlinkOracle.sol\":{\"keccak256\":\"0xb36fb8a2966b0f7ae27c38bcc958370edbc9516ec93bfa0ffa3b16de0886879f\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9f315493f148613e1829bf20ef748274b5f9767616bfcf5bd18b52f096c276e1\",\"dweb:/ipfs/Qmevx21eiWp46y839cN8L8WJrf8Fj25L34yzBL7Vt6fVnN\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":349,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":352,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1019,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":221,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":341,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":8787,"contract":"contracts/oracles/mocks/MockChainlinkOracle.sol:MockChainlinkOracle","label":"assetPrices","offset":0,"slot":"101","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"00050000000000020000008003000039000000400030043f0000000100200190000000320000c13d000000000201001900000060022002700000005502200197000000040020008c000000fc0000413d000000000301043b000000e003300270000000570030009c0000003a0000a13d000000580030009c000000460000213d0000005b0030009c000000670000613d0000005c0030009c000000fc0000c13d0000000001000416000000000001004b000000fc0000c13d0000000002000415000000050220008a0000000502200210000000000300041a0000ff0001300190000000ae0000c13d0000000002000415000000040220008a0000000502200210000000ff00300190000000ae0000c13d0000006b0130019700000101011001bf0000000002000019000000000010041b0000ff0000100190000000d20000c13d000000400100043d00000064021000390000007103000041000000000032043500000044021000390000007203000041000000000032043500000024021000390000002b03000039000001140000013d0000000001000416000000000001004b000000fc0000c13d0000002001000039000001000010044300000120000004430000005601000041000001500001042e0000005d0030009c000000800000613d0000005e0030009c000000940000613d0000005f0030009c000000fc0000c13d000000240020008c000000fc0000413d0000000002000416000000000002004b000000fc0000c13d000000990000013d000000590030009c000000a50000613d0000005a0030009c000000fc0000c13d000000240020008c000000fc0000413d0000000002000416000000000002004b000000fc0000c13d0000000401100370000000000101043b000000600010009c000000fc0000213d0000003302000039000000000202041a00000060022001970000000003000411000000000032004b000000fe0000c13d000000000001004b0000011f0000c13d0000006101000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000006201000041000000c40010043f0000006301000041000000e40010043f000000640100004100000151000104300000000001000416000000000001004b000000fc0000c13d0000003301000039000000000201041a00000060052001970000000003000411000000000035004b000000fe0000c13d0000006c02200197000000000021041b0000000001000414000000550010009c0000005501008041000000c0011002100000006d011001c70000800d0200003900000003030000390000006e040000410000000006000019014f01450000040f0000000100200190000000fc0000613d0000000001000019000001500001042e000000440020008c000000fc0000413d0000000002000416000000000002004b000000fc0000c13d0000000402100370000000000202043b000000600020009c000000fc0000213d00000000002004350000006502000039000000200020043f0000002401100370000000000101043b000300000001001d014f01380000040f0000000302000029000000000021041b0000000001000019000001500001042e000000240020008c000000fc0000413d0000000002000416000000000002004b000000fc0000c13d0000000401100370000000000101043b000000600010009c000000fc0000213d00000000001004350000006501000039000000200010043f014f01380000040f000000000101041a000000800010043f0000006501000041000001500001042e0000000001000416000000000001004b000000fc0000c13d0000003301000039000000000101041a0000006001100197000000800010043f0000006501000041000001500001042e000300000002001d000100000001001d000200000003001d00000066010000410000000000100439000000000100041000000004001004430000000001000414000000550010009c0000005501008041000000c00110021000000067011001c70000800202000039014f014a0000040f0000000100200190000001070000613d000000000101043b000000000001004b000001080000c13d0000000203000029000000ff0130018f000000010010008c0000000001000019000000010100603900000003020000290000000502200270000000000201001f0000010b0000c13d000000010000006b000000220000613d0000007501300197000000010200003900000001011001bf000000000010041b0000ff0000100190000000280000613d000300000002001d000000000100041100000060061001970000003301000039000000000201041a0000006c03200197000000000363019f000000000031041b00000000010004140000006005200197000000550010009c0000005501008041000000c0011002100000006d011001c70000800d0200003900000003030000390000006e04000041014f01450000040f0000000100200190000000fc0000613d000000030000006b0000007e0000c13d000000000200041a0000007601200197000000000010041b0000000103000039000000400100043d0000000000310435000000550010009c000000550100804100000040011002100000000002000414000000550020009c0000005502008041000000c002200210000000000112019f0000006f011001c70000800d020000390000007004000041014f01450000040f00000001002001900000007e0000c13d000000000100001900000151000104300000006101000041000000800010043f0000002001000039000000840010043f000000a40010043f0000007301000041000000c40010043f00000074010000410000015100010430000000000001042f00000003010000290000000501100270000000000100001f000000400100043d00000064021000390000006803000041000000000032043500000044021000390000006903000041000000000032043500000024021000390000002e03000039000000000032043500000061020000410000000000210435000000040210003900000020030000390000000000320435000000550010009c000000550100804100000040011002100000006a011001c70000015100010430014f01220000040f0000000001000019000001500001042e00000060061001970000003301000039000000000201041a0000006c03200197000000000363019f000000000031041b00000000010004140000006005200197000000550010009c0000005501008041000000c0011002100000006d011001c70000800d0200003900000003030000390000006e04000041014f01450000040f0000000100200190000001350000613d000000000001042d00000000010000190000015100010430000000000001042f0000000001000414000000550010009c0000005501008041000000c00110021000000077011001c70000801002000039014f014a0000040f0000000100200190000001430000613d000000000101043b000000000001042d0000000001000019000001510001043000000148002104210000000102000039000000000001042d0000000002000019000000000001042d0000014d002104230000000102000039000000000001042d0000000002000019000000000001042d0000014f00000432000001500001042e00000151000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a5000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008129fc1c0000000000000000000000000000000000000000000000000000000000e4768b0000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000000000000000000000000000000000005e9a523c000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff02000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"assetPrices(address)":"5e9a523c","getPrice(address)":"41976e09","initialize()":"8129fc1c","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setPrice(address,uint256)":"00e4768b","transferOwnership(address)":"f2fde38b"}},"hash":"01000079804565effe488824962fa22fccc9819fe019f76d6c286e326b91c1c2","factoryDependencies":{}}},"contracts/oracles/mocks/MockPendlePtOracle.sol":{"MockPendlePtOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"getOracleState","outputs":[{"internalType":"bool","name":"increaseCardinalityRequired","type":"bool"},{"internalType":"uint16","name":"cardinalityRequired","type":"uint16"},{"internalType":"bool","name":"oldestObservationSatisfied","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"getPtToAssetRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"getPtToSyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"ptToAssetRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"ptToSyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"},{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setPtToAssetRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint32","name":"duration","type":"uint32"},{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setPtToSyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"getOracleState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"increaseCardinalityRequired\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"cardinalityRequired\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"oldestObservationSatisfied\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"name\":\"getPtToAssetRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"name\":\"getPtToSyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"ptToAssetRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"ptToSyRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setPtToAssetRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setPtToSyRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockPendlePtOracle.sol\":\"MockPendlePtOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IPendlePtOracle.sol\":{\"keccak256\":\"0x14d96d7f75397e4291288ef6367053bd970d95fc0c3e2a028b077f6342e0160a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://20c6f0727f06025b7ecaf9613ba78ba44a2a6a305edf347d360bbaaa26288682\",\"dweb:/ipfs/Qma44fx2EGb3sfQRgw79gB5Yaykn1VhLf7wxKcfTvF3ZxF\"]},\"contracts/oracles/mocks/MockPendlePtOracle.sol\":{\"keccak256\":\"0x80d61dc9a3376c95bbba1a072ed917e914cc4f129dbb9c156070cb95c234a933\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://f2a0d94100bde697a64f6a1cffd5f537e3f19d107fbba907605f8570b262388a\",\"dweb:/ipfs/QmepuYvwxReXSYGZ1TiCXzCsiEvxLzAsVP82kmoatx1DTB\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"contracts/oracles/mocks/MockPendlePtOracle.sol:MockPendlePtOracle","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":8841,"contract":"contracts/oracles/mocks/MockPendlePtOracle.sol:MockPendlePtOracle","label":"ptToAssetRate","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_uint32,t_uint256))"},{"astId":8847,"contract":"contracts/oracles/mocks/MockPendlePtOracle.sol:MockPendlePtOracle","label":"ptToSyRate","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_uint32,t_uint256))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_uint32,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint32 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint32,t_uint256)"},"t_mapping(t_uint32,t_uint256)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"evm":{"bytecode":{"object":"0001000000000002000300000000000200000000000103550000008003000039000000400030043f0000000100200190000000260000c13d000000000201001900000060022002700000005402200197000000040020008c0000010a0000413d000000000301043b000000e0033002700000005a0030009c0000003f0000213d000000610030009c000000630000a13d000000620030009c000000890000613d000000630030009c0000009c0000613d000000640030009c0000010a0000c13d0000000001000416000000000001004b0000010a0000c13d0000000001020019014b010c0000040f000100000001001d000200000002001d000300000003001d014b011e0000040f0000000101000029000000560110019700000000001004350000000201000039000000bb0000013d0000000001000416000000000001004b0000010a0000c13d000000000100041a00000055021001970000000006000411000000000262019f000000000020041b00000000020004140000005605100197000000540020009c0000005402008041000000c00120021000000057011001c70000800d0200003900000003030000390000005804000041014b01410000040f00000001002001900000010a0000613d00000020010000390000010000100443000001200000044300000059010000410000014c0001042e0000005b0030009c0000007b0000a13d0000005c0030009c000000a40000613d0000005d0030009c000000ae0000613d0000005e0030009c0000010a0000c13d000000240020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000401100370000000000601043b000000560060009c0000010a0000213d000000000100041a00000056021001970000000005000411000000000052004b000000f10000c13d000000000006004b000000fa0000c13d0000006701000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000006801000041000000c40010043f0000006901000041000000e40010043f0000006a010000410000014d00010430000000650030009c000000c60000613d000000660030009c0000010a0000c13d0000000001000416000000000001004b0000010a0000c13d000000000100041a00000056021001970000000005000411000000000052004b000000f10000c13d0000005501100197000000000010041b0000000001000414000000540010009c0000005401008041000000c00110021000000057011001c70000800d02000039000000030300003900000058040000410000000006000019000001050000013d0000005f0030009c000000d70000613d000000600030009c0000010a0000c13d000000440020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000402100370000000000202043b000000560020009c0000010a0000213d000000cf0000013d000000440020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000402100370000000000202043b000000560020009c0000010a0000213d0000002401100370000000000101043b000000540010009c0000010a0000213d000000800000043f000000a00000043f0000000101000039000000c00010043f0000006c010000410000014c0001042e0000000001000416000000000001004b0000010a0000c13d000000000100041a0000005601100197000000800010043f0000006b010000410000014c0001042e000000440020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000402100370000000000202043b000000560020009c0000010a0000213d000000e00000013d0000000001000416000000000001004b0000010a0000c13d0000000001020019014b010c0000040f000100000001001d000200000002001d000300000003001d014b011e0000040f0000000101000029000000560110019700000000001004350000000101000039000000200010043f014b01340000040f000000020200002900000054022001970000000000200435000000200010043f014b01340000040f0000000302000029000000000021041b00000000010000190000014c0001042e000000440020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000402100370000000000202043b000000560020009c0000010a0000213d0000002401100370000000000101043b000000540010009c0000010a0000213d0000000000200435000300000001001d0000000101000039000000e70000013d000000440020008c0000010a0000413d0000000002000416000000000002004b0000010a0000c13d0000000402100370000000000202043b000000560020009c0000010a0000213d0000002401100370000000000101043b000000540010009c0000010a0000213d0000000000200435000300000001001d0000000201000039000000200010043f014b01340000040f00000003020000290000000000200435000000200010043f014b01340000040f000000000101041a000000800010043f0000006b010000410000014c0001042e0000006701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000006d01000041000000c40010043f0000006e010000410000014d000104300000005501100197000000000161019f000000000010041b0000000001000414000000540010009c0000005401008041000000c00110021000000057011001c70000800d0200003900000003030000390000005804000041014b01410000040f00000001002001900000010a0000613d00000000010000190000014c0001042e00000000010000190000014d000104300000006f0010009c0000011c0000213d000000630010008c0000011c0000a13d00000000030003670000000401300370000000000101043b000000560010009c0000011c0000213d0000002402300370000000000202043b000000540020009c0000011c0000213d0000004403300370000000000303043b000000000001042d00000000010000190000014d00010430000000000100041a00000056011001970000000002000411000000000021004b000001240000c13d000000000001042d000000400100043d00000044021000390000006d0300004100000000003204350000006702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000000540010009c0000005401008041000000400110021000000070011001c70000014d000104300000000001000414000000540010009c0000005401008041000000c00110021000000071011001c70000801002000039014b01460000040f00000001002001900000013f0000613d000000000101043b000000000001042d00000000010000190000014d0001043000000144002104210000000102000039000000000001042d0000000002000019000000000001042d00000149002104230000000102000039000000000001042d0000000002000019000000000001042d0000014b000004320000014c0001042e0000014d000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000a31426d000000000000000000000000000000000000000000000000000000000b151c07e00000000000000000000000000000000000000000000000000000000b151c07f00000000000000000000000000000000000000000000000000000000b861c67c00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000a31426d100000000000000000000000000000000000000000000000000000000abca0eab00000000000000000000000000000000000000000000000000000000873e95ff00000000000000000000000000000000000000000000000000000000873e9600000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000a109e12a000000000000000000000000000000000000000000000000000000006784827500000000000000000000000000000000000000000000000000000000715018a608c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000600000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000006400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"getOracleState(address,uint32)":"873e9600","getPtToAssetRate(address,uint32)":"abca0eab","getPtToSyRate(address,uint32)":"a31426d1","owner()":"8da5cb5b","ptToAssetRate(address,uint32)":"67848275","ptToSyRate(address,uint32)":"b151c07f","renounceOwnership()":"715018a6","setPtToAssetRate(address,uint32,uint256)":"b861c67c","setPtToSyRate(address,uint32,uint256)":"a109e12a","transferOwnership(address)":"f2fde38b"}},"hash":"01000073deaadffcf52dd40db9570912ee93eb1ac01e15693adc4f633bd407d6","factoryDependencies":{}}},"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol":{"MockSfrxEthFraxOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"getPrices","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBadData","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceHigh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceLow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isBadData","type":"bool"},{"internalType":"uint256","name":"_priceLow","type":"uint256"},{"internalType":"uint256","name":"_priceHigh","type":"uint256"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPrices\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBadData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceHigh\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceLow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isBadData\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_priceLow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_priceHigh\",\"type\":\"uint256\"}],\"name\":\"setPrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol\":\"MockSfrxEthFraxOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/ISfrxEthFraxOracle.sol\":{\"keccak256\":\"0x1444fbcfe658b985041e7ca5da6cce92fd143ca46d9793316ab2ef542fbde87a\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://267911fa7bdbc36b71265c3c42fc0b17aa6363dd9145696a1b155e086f19bd07\",\"dweb:/ipfs/QmbYVGQmGrGzWra9mqDbMe97V1HmR5JdmGtUrbsptnQQaj\"]},\"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol\":{\"keccak256\":\"0xe4f649d490f0db9a32355b6de0db20f23e4ee8b475e9bef78bb34ca48c2136af\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://344794a038dfa228a3f7e648a6d035fdeb58551e217758a70dfa93f82e1e9662\",\"dweb:/ipfs/QmUBfe1k56fwpDPNh3KeE8F3cyG7XYhPio2KVbTRyuRk31\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol:MockSfrxEthFraxOracle","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":8955,"contract":"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol:MockSfrxEthFraxOracle","label":"isBadData","offset":20,"slot":"0","type":"t_bool"},{"astId":8957,"contract":"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol:MockSfrxEthFraxOracle","label":"priceLow","offset":0,"slot":"1","type":"t_uint256"},{"astId":8959,"contract":"contracts/oracles/mocks/MockSFrxEthFraxOracle.sol:MockSfrxEthFraxOracle","label":"priceHigh","offset":0,"slot":"2","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002000100000000000200000000000103550000008003000039000000400030043f0000000100200190000000360000c13d000000000201001900000060022002700000003e02200197000000040020008c000000d50000413d000000000301043b000000e003300270000000440030009c0000004f0000213d0000004a0030009c000000650000213d0000004d0030009c0000009d0000613d0000004e0030009c000000d50000c13d000000640020008c000000d50000413d0000000002000416000000000002004b000000d50000c13d0000000401100370000000000201043b000000000002004b0000000001000019000000010100c039000000000012004b000000d50000c13d000100000002001d00f200d70000040f000000010000006b0000000001000019000000580100c041000000000200041a0000005902200197000000000112019f000000000010041b00000000010003670000002402100370000000000202043b0000000103000039000000000023041b0000004401100370000000000101043b0000000202000039000000000012041b0000000001000019000000f30001042e0000000001000416000000000001004b000000d50000c13d000000000100041a0000003f021001970000000006000411000000000262019f000000000020041b000000000200041400000040051001970000003e0020009c0000003e02008041000000c00120021000000041011001c70000800d020000390000000303000039000000420400004100f200ed0000040f0000000100200190000000d50000613d0000002001000039000001000010044300000120000004430000004301000041000000f30001042e000000450030009c0000007d0000213d000000480030009c000000a20000613d000000490030009c000000d50000c13d0000000001000416000000000001004b000000d50000c13d0000000201000039000000000101041a0000000102000039000000000202041a000000000300041a00000054003001980000000003000019000000010300c039000000800030043f000000a00020043f000000c00010043f0000005501000041000000f30001042e0000004b0030009c000000aa0000613d0000004c0030009c000000d50000c13d0000000001000416000000000001004b000000d50000c13d000000000100041a00000040021001970000000005000411000000000052004b000000bc0000c13d0000003f01100197000000000010041b00000000010004140000003e0010009c0000003e01008041000000c00110021000000041011001c70000800d02000039000000030300003900000042040000410000000006000019000000d00000013d000000460030009c000000b40000613d000000470030009c000000d50000c13d000000240020008c000000d50000413d0000000002000416000000000002004b000000d50000c13d0000000401100370000000000101043b000000400010009c000000d50000213d000000000200041a00000040032001970000000005000411000000000053004b000000bc0000c13d0000004006100198000000c50000c13d0000004f01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000005001000041000000c40010043f0000005101000041000000e40010043f0000005201000041000000f4000104300000000001000416000000000001004b000000d50000c13d0000000101000039000000b80000013d0000000001000416000000000001004b000000d50000c13d000000000100041a0000004001100197000000800010043f0000005301000041000000f30001042e0000000001000416000000000001004b000000d50000c13d000000000100041a00000054001001980000000001000019000000010100c039000000800010043f0000005301000041000000f30001042e0000000001000416000000000001004b000000d50000c13d0000000201000039000000000101041a000000800010043f0000005301000041000000f30001042e0000004f01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000005601000041000000c40010043f0000005701000041000000f4000104300000003f01200197000000000161019f000000000010041b00000000010004140000003e0010009c0000003e01008041000000c00110021000000041011001c70000800d020000390000000303000039000000420400004100f200ed0000040f0000000100200190000000d50000613d0000000001000019000000f30001042e0000000001000019000000f400010430000000000100041a00000040011001970000000002000411000000000021004b000000dd0000c13d000000000001042d000000400100043d0000004402100039000000560300004100000000003204350000004f020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000003e0010009c0000003e0100804100000040011002100000005a011001c7000000f400010430000000f0002104210000000102000039000000000001042d0000000002000019000000000001042d000000f200000432000000f30001042e000000f40001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000be00a66d00000000000000000000000000000000000000000000000000000000be00a66e00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000bd9a548b000000000000000000000000000000000000000000000000000000005648718a000000000000000000000000000000000000000000000000000000005648718b00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000000683e4ca000000000000000000000000000000000000000000000000000000002ade707e08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000000000000000000000600000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000000000000000000000000000010000000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000064000000000000000000000000"},"methodIdentifiers":{"getPrices()":"bd9a548b","isBadData()":"5648718b","owner()":"8da5cb5b","priceHigh()":"be00a66e","priceLow()":"0683e4ca","renounceOwnership()":"715018a6","setPrices(bool,uint256,uint256)":"2ade707e","transferOwnership(address)":"f2fde38b"}},"hash":"0100005b0f475e61e41e98a5b2b86e15fd4a1b529e576fb785eb42f59544c2a4","factoryDependencies":{}}},"contracts/test/BEP20Harness.sol":{"BEP20Harness":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalsInternal","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalsInternal\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/BEP20Harness.sol\":\"BEP20Harness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/test/BEP20Harness.sol\":{\"keccak256\":\"0xb4b7d79a2e90fdd03b321d83628154f566cd23d0287b205828c855933909c0c4\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://5267caaed8d44d6b3e884b6105d666380e998edac7768183e7fd8b4a4a1c7c9b\",\"dweb:/ipfs/QmdvBiq9u4DG1ub1asPaNqjhUZ4rem8bteLeSimPvUgjDh\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":9014,"contract":"contracts/test/BEP20Harness.sol:BEP20Harness","label":"decimalsInternal","offset":0,"slot":"5","type":"t_uint8"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0007000000000002000000000801034f0000008003000039000000400030043f0000000001080019000000600110027000000139011001970000000100200190000000560000c13d000000040010008c000000770000413d000000000208043b000000e0022002700000013f0020009c000000920000a13d000001400020009c0000009f0000a13d000001410020009c000000f10000213d000001440020009c000001420000613d000001450020009c000000770000c13d000000440010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000101043b000700000001001d000001500010009c000000770000213d0000002401800370000000000101043b000600000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d000000000101043b000000000101041a000000060310006c000000e60000813d000000400100043d00000064021000390000015403000041000000000032043500000044021000390000015503000041000000000032043500000024021000390000002503000039000000000032043500000156020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c0000013901008041000000400110021000000157011001c7000004df000104300000000002000416000000000002004b000000770000c13d0000001f021000390000013a022001970000008002200039000000400020043f0000001f0210018f00000005041002720000000504400210000000670000613d0000008005400039000000000608034f000000006706043c0000000003730436000000000053004b000000630000c13d000000000002004b000000750000613d000000000348034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000600010008c000000790000813d0000000001000019000004df00010430000000800400043d0000013b0040009c000000770000213d0000001f02400039000000000012004b00000000030000190000013c030080410000013c02200197000000000002004b00000000050000190000013c050040410000013c0020009c000000000503c019000000000005004b000000770000c13d000000800240003900000000030204330000013b0030009c0000011a0000a13d0000015d0100004100000000001004350000004101000039000000040010043f0000015e01000041000004df00010430000001490020009c000000b10000213d0000014d0020009c0000017c0000613d0000014e0020009c000001d40000613d0000014f0020009c000000770000c13d0000000001000416000000000001004b000000770000c13d00000002010000390000010d0000013d000001460020009c000001110000613d000001470020009c000001680000613d000001480020009c000000770000c13d000000240010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000101043b000001500010009c000000770000213d0000000000100435000000200000043f0000010b0000013d0000014a0020009c000001910000613d0000014b0020009c000001110000613d0000014c0020009c000000770000c13d000000440010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000101043b000700000001001d000001500010009c000000770000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c70000801002000039000600000008035304dd04d80000040f000000060300035f0000000100200190000000770000613d000000000101043b00000007020000290000000000200435000000200010043f0000002401300370000000000101043b000600000001001d0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d000000000101043b000000000101041a0000000602000029000000000021001a000003b90000413d00000000032100190000000001000411000000070200002904dd03f80000040f000000400100043d00000001020000390000000000210435000001390010009c0000013901008041000000400110021000000152011001c7000004de0001042e000001420020009c0000015a0000613d000001430020009c000000770000c13d000000440010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000101043b000001500010009c000000770000213d0000002402800370000000000202043b000001500020009c000000770000213d00000000001004350000000101000039000000200010043f0000004001000039000700000002001d04dd04c20000040f00000007020000290000000000200435000000200010043f000000400100003904dd04c20000040f000000000101041a000000800010043f0000015101000041000004de0001042e0000000001000416000000000001004b000000770000c13d0000000501000039000000000101041a000000ff0110018f000000800010043f0000015101000041000004de0001042e0000001f0230003900000162022001970000003f022000390000016202200197000000400c00043d00000000052c00190000000000c5004b000000000200001900000001020040390000013b0050009c0000008c0000213d00000001002001900000008c0000c13d0000008002100039000000400050043f000000000d3c0436000000a0044000390000000005430019000000000025004b000000770000213d00000162063001970000001f0530018f0000000000d4004b0000021e0000813d000000000006004b0000013e0000613d000000000854001900000000075d0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000001380000c13d000000000005004b000002380000613d00000000070d00190000022e0000013d0000000001000416000000000001004b000000770000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f00000001006001900000018b0000c13d000000800010043f000000000005004b000002740000c13d0000016301200197000000a00010043f000000000004004b000000c001000039000000a001006039000002880000013d000000440010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000201043b000001500020009c000000770000213d0000002401800370000000000301043b000000000100041104dd044f0000040f000001e10000013d000000240010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000401043b0000000003000411000000000003004b000001f20000c13d0000015601000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000015b01000041000000c40010043f0000015c01000041000004df000104300000000001000416000000000001004b000000770000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001e90000613d0000015d0100004100000000001004350000002201000039000000040010043f0000015e01000041000004df00010430000000640010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000301043b000001500030009c000000770000213d0000002401800370000000000101043b000700000001001d000001500010009c000000770000213d0000004401800370000000000101043b000500000001001d00000000003004350000000101000039000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c70000801002000039000600000003001d04dd04d80000040f0000000100200190000000770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f00000006040000290000000100200190000000770000613d000000000101043b000000000101041a000001640010009c000003100000613d000000050310006c0000030c0000813d000000400100043d00000044021000390000015f03000041000000000032043500000024021000390000001d03000039000000000032043500000156020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c0000013901008041000000400110021000000160011001c7000004df00010430000000440010008c000000770000413d0000000001000416000000000001004b000000770000c13d0000000401800370000000000201043b000001500020009c000000770000213d0000002401800370000000000301043b000000000100041104dd03f80000040f0000000101000039000000400200043d0000000000120435000001390020009c0000013902008041000000400120021000000152011001c7000004de0001042e000000800010043f000000000005004b000002780000c13d0000016301200197000000a00010043f000000000004004b000000c001000039000000a001006039000002940000013d0000000201000039000000000201041a000000000042001a000003b90000413d000700000004001d0000000002420019000000000021041b0000000000300435000000200000043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d000000000101043b000000000201041a00000007030000290000000002320019000000000021041b000000400100043d0000000000310435000001390010009c000001390100804100000040011002100000000002000414000001390020009c0000013902008041000000c002200210000000000112019f0000013d011001c70000800d0200003900000003030000390000015a040000410000000005000019000000000600041104dd04d30000040f0000000100200190000000770000613d0000000001000019000004de0001042e000000000006004b0000022a0000613d000000200760008a00000162077001970000000007d700190000002007700039000000000804001900000000090d0019000000008a0804340000000009a90436000000000079004b000002260000c13d000000000005004b000002380000613d00000000076d001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033d00190000000000030435000000a00300043d0000013b0030009c000000770000213d0000001f04300039000000000014004b00000000010000190000013c010080410000013c04400197000000000004004b00000000050000190000013c050040410000013c0040009c000000000501c019000000000005004b000000770000c13d000000800130003900000000010104330000013b0010009c0000008c0000213d0000001f0410003900000162044001970000003f044000390000016204400197000000400900043d0000000004490019000000000094004b000000000500001900000001050040390000013b0040009c0000008c0000213d00000001005001900000008c0000c13d000000400040043f000000000a190436000000a0033000390000000004310019000000000024004b000000770000213d00000162041001970000001f0210018f0000000000a3004b000002a70000813d000000000004004b000002700000613d000000000623001900000000052a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000026a0000c13d000000000002004b000002c10000613d00000000050a0019000002b70000013d0000000000300435000000020020008c0000027d0000813d0000027b0000013d0000000000300435000000020020008c000002890000813d0000002001000039000002980000013d000001580200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000027f0000413d000000c001300039000002940000013d000001610200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000028b0000413d000000c001300039000000610110008a0000016201100197000001590010009c0000008c0000213d0000008001100039000700000001001d000000400010043f000000800200003904dd03bf0000040f00000007020000290000000001210049000001390010009c00000139010080410000006001100210000001390020009c00000139020080410000004002200210000000000121019f000004de0001042e000000000004004b000002b30000613d000000200540008a00000162055001970000000005a500190000002005500039000000000603001900000000070a001900000000680604340000000007870436000000000057004b000002af0000c13d000000000002004b000002c10000613d00000000054a001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011a00190000000000010435000000c00300043d000000ff0030008c000000770000213d00000000010c04330000013b0010009c0000008c0000213d000700000001001d00050000000d001d00060000000c001d0000000301000039000000000101041a000000010210019000000001041002700000007f0440618f0000001f0040008c00000000010000190000000101002039000000000012004b0000018b0000c13d00010000000a001d000200000003001d000400000009001d000300000004001d000000200040008c000002f80000413d000000030100003900000000001004350000000001000414000001390010009c0000013901008041000000c0011002100000013d011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000003010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000002f80000813d000000000002041b0000000102200039000000000012004b000002f40000413d00000007010000290000001f0010008c000003150000a13d000000030100003900000000001004350000000001000414000001390010009c0000013901008041000000c0011002100000013d011001c7000080100200003904dd04d80000040f0000000100200190000000200200008a000000770000613d0000000702200180000000000101043b000003220000c13d00000020030000390000032f0000013d0000000001040019000000000200041104dd03f80000040f000000060400002900000000010400190000000702000029000000050300002904dd044f0000040f000000e90000013d000000070000006b00000000010000190000031a0000613d0000000501000029000000000101043300000007040000290000000302400210000001640220027f0000016402200167000000000121016f0000000102400210000000000121019f0000033d0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000060600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003280000c13d000000070020006c0000033a0000813d00000007020000290000000302200210000000f80220018f000001640220027f000001640220016700000006033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001011001bf0000000302000039000000000012041b00000004010000290000000001010433000700000001001d0000013b0010009c0000008c0000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000600000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000018b0000c13d0000000601000029000000200010008c0000036f0000413d000000040100003900000000001004350000000001000414000001390010009c0000013901008041000000c0011002100000013d011001c7000080100200003904dd04d80000040f0000000100200190000000770000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000006010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000036f0000813d000000000002041b0000000102200039000000000012004b0000036b0000413d00000007010000290000001f0010008c000003830000a13d000000040100003900000000001004350000000001000414000001390010009c0000013901008041000000c0011002100000013d011001c7000080100200003904dd04d80000040f0000000100200190000000200200008a000000770000613d0000000702200180000000000101043b0000038f0000c13d00000020030000390000039c0000013d000000070000006b0000000001000019000003880000613d0000000101000029000000000101043300000007040000290000000302400210000001640220027f0000016402200167000000000221016f0000000101400210000003aa0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000040600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003950000c13d000000070020006c000003a70000813d00000007020000290000000302200210000000f80220018f000001640220027f000001640220016700000004033000290000000003030433000000000223016f000000000021041b000000010100003900000007020000290000000102200210000000000112019f0000000402000039000000000012041b0000000501000039000000000201041a00000163022001970000000203000029000000ff0330018f000000000232019f000000000021041b0000002001000039000001000010044300000120000004430000013e01000041000004de0001042e0000015d0100004100000000001004350000001101000039000000040010043f0000015e01000041000004df00010430000000200300003900000000033104360000000042020434000000000023043500000162062001970000001f0520018f0000004001100039000000000014004b000003d80000813d000000000006004b000003d40000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003ce0000c13d000000000005004b000003f20000613d0000000007010019000003e80000013d000000000006004b000003e40000613d000000200760008a00000162077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000003e00000c13d000000000005004b000003f20000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f0220003900000162022001970000000001210019000000000001042d00030000000000020000015001100198000004310000613d000200000003001d000301500020019c0000043b0000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f000000010020019000000003030000290000042f0000613d000000000101043b0000000000300435000000200010043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f000000030600002900000001002001900000042f0000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001390010009c000001390100804100000040011002100000000002000414000001390020009c0000013902008041000000c002200210000000000112019f0000013d011001c70000800d0200003900000003030000390000016504000041000000010500002904dd04d30000040f00000001002001900000042f0000613d000000000001042d0000000001000019000004df00010430000000400100043d00000064021000390000016803000041000000000032043500000044021000390000016903000041000000000032043500000024021000390000002403000039000004440000013d000000400100043d00000064021000390000016603000041000000000032043500000044021000390000016703000041000000000032043500000024021000390000002203000039000000000032043500000156020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c0000013901008041000000400110021000000157011001c7000004df000104300004000000000002000400000003001d00000150011001980000049a0000613d000201500020019c000004a40000613d000300000001001d0000000000100435000000200000043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000004980000613d000000000101043b000000000101041a0001000400100074000004ae0000413d00000003010000290000000000100435000000200000043f0000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000004980000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001390010009c0000013901008041000000c00110021000000153011001c7000080100200003904dd04d80000040f0000000100200190000004980000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001390010009c000001390100804100000040011002100000000002000414000001390020009c0000013902008041000000c002200210000000000112019f0000013d011001c70000800d0200003900000003030000390000015a040000410000000305000029000000020600002904dd04d30000040f0000000100200190000004980000613d000000000001042d0000000001000019000004df00010430000000400100043d00000064021000390000016e03000041000000000032043500000044021000390000016f03000041000000000032043500000024021000390000002503000039000004b70000013d000000400100043d00000064021000390000016c03000041000000000032043500000044021000390000016d03000041000000000032043500000024021000390000002303000039000004b70000013d000000400100043d00000064021000390000016a03000041000000000032043500000044021000390000016b03000041000000000032043500000024021000390000002603000039000000000032043500000156020000410000000000210435000000040210003900000020030000390000000000320435000001390010009c0000013901008041000000400110021000000157011001c7000004df00010430000001390010009c000001390100804100000060011002100000000002000414000001390020009c0000013902008041000000c002200210000000000112019f00000170011001c7000080100200003904dd04d80000040f0000000100200190000004d10000613d000000000101043b000000000001042d0000000001000019000004df00010430000004d6002104210000000102000039000000000001042d0000000002000019000000000001042d000004db002104230000000102000039000000000001042d0000000002000019000000000001042d000004dd00000432000004de0001042e000004df00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000000000000000000000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000004511bf6a0000000000000000000000000000000000000000000000000000000095d89b4000000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e0000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a457c2d7000000000000000000000000000000000000000000000000000000004511bf6b00000000000000000000000000000000000000000000000000000000579158970000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000023b872dc0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000395093510000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7708c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f20616464726573730000000000000000000000000000000000000000640000008000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f2061640200000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decimalsInternal()":"4511bf6b","decreaseAllowance(address,uint256)":"a457c2d7","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"hash":"010001710fe4b534cc48f324469fe377db17d655812005c81deeca1838ce99fe","factoryDependencies":{}}},"contracts/test/MockAnkrBNB.sol":{"MockAnkrBNB":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSharesToBonds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sharesToBonds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setSharesToBonds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sharesToBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAnkrBNB.sol\":\"MockAnkrBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IAnkrBNB.sol\":{\"keccak256\":\"0x4e04d3cae00fc38b1f754cff9aa4054deea6e8a4d3fe80a1d8f0a54bbe73342e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://0d71b0f99ad632d1ff47444648989868e025044a88bb1344e1bcc9d9550b8755\",\"dweb:/ipfs/QmWi4ZVPWe6Bwb87Nffng2G8TTCQzsJdxTG7LUCsRup2Di\"]},\"contracts/test/MockAnkrBNB.sol\":{\"keccak256\":\"0x431bc5b6e869d88fe5a957b6a4fcbf274ec08157cc726b26290254015e749447\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c384099aa63f4a0ae5d92103d2ba92be3740e8cacb9c4f76efdfa1b5d6c0ad71\",\"dweb:/ipfs/QmRnwmJt7UK8FfEv9rvMNGJ83RJz5toHaDM1CMHDAVTKvX\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":1101,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"_owner","offset":0,"slot":"5","type":"t_address"},{"astId":9071,"contract":"contracts/test/MockAnkrBNB.sol:MockAnkrBNB","label":"exchangeRate","offset":0,"slot":"6","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020009000000000002000000000801034f000000000008035500000000010800190000006001100270000001750110019700000001002001900000002f0000c13d0000008002000039000000400020043f000000040010008c000003800000413d000000000208043b000000e0022002700000017f0020009c000000910000213d0000018c0020009c000000b80000a13d0000018d0020009c000000dd0000a13d0000018e0020009c000001480000613d0000018f0020009c0000017b0000613d000001900020009c000003800000c13d000000240010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000401043b0000000003000411000000000003004b000002cf0000c13d0000019801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001ab01000041000000c40010043f000001a501000041000005d200010430000000a002000039000000400020043f0000000003000416000000000003004b000003800000c13d0000001f031000390000017603300197000000a003300039000000400030043f0000001f0310018f0000000504100272000000420000613d0000000505400210000000a005500039000000000608034f000000006706043c0000000002720436000000000052004b0000003e0000c13d000000000003004b000000510000613d0000000502400210000000000428034f0000000303300210000000a002200039000000000502043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f0000000000320435000000600010008c000003800000413d000000a00400043d000001770040009c000003800000213d0000001f02400039000000000012004b000000000300001900000178030080410000017802200197000000000002004b00000000050000190000017805004041000001780020009c000000000503c019000000000005004b000003800000c13d000000a0024000390000000003020433000001770030009c000003380000213d0000001f02300039000001af022001970000003f02200039000001af02200197000000400600043d0000000005260019000000000065004b00000000020000190000000102004039000001770050009c000003380000213d0000000100200190000003380000c13d000000a002100039000000400050043f000600000006001d0000000005360436000700000005001d000000c0044000390000000005430019000000000025004b000003800000213d000001af063001970000001f0530018f000000070b0000290000000000b4004b000002760000813d000000000006004b0000008d0000613d000000000854001900000000075b0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000870000c13d000000000005004b000002900000613d00000000070b0019000002860000013d000001800020009c000000cb0000a13d000001810020009c000000ef0000a13d000001820020009c000001800000613d000001830020009c0000018e0000613d000001840020009c000003800000c13d000000240010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000601043b0000017b0060009c000003800000213d0000000501000039000000000201041a0000017b032001970000000005000411000000000053004b0000026d0000c13d000000000006004b000003190000c13d0000019801000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000019901000041000000c40010043f0000019a01000041000000e40010043f0000019b01000041000005d200010430000001930020009c000001320000213d000001960020009c000001aa0000613d000001970020009c000003800000c13d000000240010008c000003800000413d0000000001000416000000000001004b000003800000c13d05d004c00000040f00000004010000390000000001100367000000000101043b0000000602000039000000000012041b0000000001000019000005d10001042e000001870020009c0000013b0000213d0000018a0020009c000001c20000613d0000018b0020009c000003800000c13d000000240010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000101043b0000017b0010009c000003800000213d0000000000100435000000200000043f000001a40000013d000001910020009c000001eb0000613d000001920020009c000003800000c13d0000000001000416000000000001004b000003800000c13d0000000001000412000900000001001d000800000000001d0000000001000415000000090110008a000000050110021005d005b30000040f000000ff0110018f000000800010043f0000019c01000041000005d10001042e000001850020009c0000022e0000613d000001860020009c000003800000c13d000000440010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000101043b000700000001001d0000017b0010009c000003800000213d0000002401800370000000000101043b000600000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b000000000101041a000000060310006c000001770000813d000000400100043d00000064021000390000019f0300004100000000003204350000004402100039000001a003000041000000000032043500000024021000390000002503000039000000000032043500000198020000410000000000210435000000040210003900000020030000390000000000320435000001750010009c00000175010080410000004001100210000001a1011001c7000005d200010430000001940020009c000002430000613d000001950020009c000003800000c13d0000000001000416000000000001004b000003800000c13d0000000201000039000001a60000013d000001880020009c000002580000613d000001890020009c000003800000c13d0000000001000416000000000001004b000003800000c13d0000000501000039000000000101041a0000017b01100197000000800010043f0000019c01000041000005d10001042e000000440010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000101043b000700000001001d0000017b0010009c000003800000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c70000801002000039000600000008035305d005cb0000040f000000060300035f0000000100200190000003800000613d000000000101043b00000007020000290000000000200435000000200010043f0000002401300370000000000101043b000600000001001d0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b000000000101041a0000000602000029000000000021001a000001e50000413d00000000032100190000000001000411000000070200002905d004d70000040f000003cb0000013d0000000001000416000000000001004b000003800000c13d0000000601000039000001a60000013d000000440010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000201043b0000017b0020009c000003800000213d0000002401800370000000000301043b000000000100041105d0052e0000040f000002500000013d000000440010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000101043b0000017b0010009c000003800000213d0000002402800370000000000202043b000700000002001d0000017b0020009c000003800000213d00000000001004350000000101000039000000200010043f000000400100003905d005a20000040f00000007020000290000000000200435000000200010043f000000400100003905d005a20000040f000000000101041a000000800010043f0000019c01000041000005d10001042e0000000001000416000000000001004b000003800000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f00000001006001900000023d0000c13d000000800010043f000000000005004b000003010000c13d000001b001200197000000a00010043f000000000004004b000000c001000039000000a001006039000003340000013d000000240010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000601000039000000000101041a0000000402800370000000000202043b00000000032100a9000000000002004b000001d10000613d00000000022300d9000000000021004b000001e50000c13d000700000003001d000001a60100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001750010009c0000017501008041000000c001100210000001a7011001c7000080050200003905d005cb0000040f0000000100200190000003000000613d000000000101043b000000ff0210018f0000004d0020008c0000000705000029000003150000a13d000001a80100004100000000001004350000001101000039000000040010043f000001a901000041000005d200010430000000640010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000101043b000700000001001d0000017b0010009c000003800000213d0000002401800370000000000101043b000600000001001d0000017b0010009c000003800000213d0000004401800370000000000101043b000500000001001d000000070100002900000000001004350000000101000039000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b000000000101041a000001b10010009c000003c70000613d000000050310006c000003c40000813d000000400100043d0000004402100039000001ac03000041000000000032043500000024021000390000001d03000039000000000032043500000198020000410000000000210435000000040210003900000020030000390000000000320435000001750010009c00000175010080410000004001100210000001ad011001c7000005d2000104300000000001000416000000000001004b000003800000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000002f70000613d000001a80100004100000000001004350000002201000039000000040010043f000001a901000041000005d200010430000000440010008c000003800000413d0000000001000416000000000001004b000003800000c13d0000000401800370000000000201043b0000017b0020009c000003800000213d0000002401800370000000000301043b000000000100041105d004d70000040f0000000101000039000000400200043d0000000000120435000001750020009c000001750200804100000040012002100000019d011001c7000005d10001042e0000000001000416000000000001004b000003800000c13d0000000501000039000000000201041a0000017b032001970000000005000411000000000053004b0000026d0000c13d0000017a02200197000000000021041b0000000001000414000001750010009c0000017501008041000000c0011002100000017c011001c70000800d0200003900000003030000390000017d040000410000000006000019000003240000013d0000019801000041000000800010043f0000002001000039000000840010043f000000a40010043f000001a401000041000000c40010043f000001a501000041000005d200010430000000000006004b000002820000613d000000200760008a000001af077001970000000007b700190000002007700039000000000804001900000000090b0019000000008a0804340000000009a90436000000000079004b0000027e0000c13d000000000005004b000002900000613d00000000076b001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033b00190000000000030435000000c00300043d000001770030009c000003800000213d0000001f04300039000000000014004b000000000100001900000178010080410000017804400197000000000004004b00000000050000190000017805004041000001780040009c000000000501c019000000000005004b000003800000c13d000000a0013000390000000001010433000001770010009c000003380000213d0000001f04100039000001af044001970000003f04400039000001af04400197000000400600043d0000000004460019000000000064004b00000000050000190000000105004039000001770040009c000003380000213d0000000100500190000003380000c13d000000400040043f000400000006001d0000000004160436000500000004001d000000c0033000390000000004310019000000000024004b000003800000213d000001af041001970000001f0210018f0000000509000029000000000093004b000003600000813d000000000004004b000002cb0000613d00000000062300190000000005290019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002c50000c13d000000000002004b0000037a0000613d0000000005090019000003700000013d0000000201000039000000000201041a000000000042001a000001e50000413d000700000004001d0000000002420019000000000021041b0000000000300435000000200000043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000000101043b000000000201041a00000007030000290000000002320019000000000021041b000000400100043d0000000000310435000001750010009c000001750100804100000040011002100000000002000414000001750020009c0000017502008041000000c002200210000000000112019f00000179011001c70000800d020000390000000303000039000001aa0400004100000000050000190000000006000411000003240000013d000000800010043f000000000005004b000003100000c13d000001b001200197000000a00010043f000000000004004b000000c001000039000000a001006039000003340000013d000000000001042f0000000000300435000000020020008c000003130000413d000001ae0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000003060000413d000000c001300039000003340000013d0000000000300435000000020020008c000003290000813d00000020010000390000033e0000013d000000000002004b0000034d0000c13d000000010150011a000002510000013d0000017a02200197000000000262019f000000000021041b0000000001000414000001750010009c0000017501008041000000c0011002100000017c011001c70000800d0200003900000003030000390000017d0400004105d005c60000040f0000000100200190000003800000613d0000000001000019000005d10001042e000001a20200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000032b0000413d000000c001300039000000610110008a000001af01100197000001a30010009c0000033e0000a13d000001a80100004100000000001004350000004101000039000000040010043f000001a901000041000005d2000104300000008001100039000700000001001d000000400010043f000000800200003905d004870000040f00000007020000290000000001210049000001750010009c00000175010080410000006001100210000001750020009c00000175020080410000004002200210000000000121019f000005d10001042e0000000a030000390000000101000039000000010020019000000000043300a9000000010300603900000000011300a9000000010220027200000000030400190000034f0000c13d000000000001004b0000035e0000c13d000001a80100004100000000001004350000001201000039000000040010043f000001a901000041000005d20001043000000000011500d9000002510000013d000000000004004b0000036c0000613d000000200540008a000001af05500197000000000595001900000020055000390000000006030019000000000709001900000000680604340000000007870436000000000057004b000003680000c13d000000000002004b0000037a0000613d000000000549001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011900190000000000010435000000e00100043d000300000001001d000000ff0010008c000003820000a13d0000000001000019000005d20001043000000006010000290000000001010433000001770010009c000003380000213d000200000001001d0000000301000039000000000101041a000000010210019000000001031002700000007f0330618f0000001f0030008c00000000010000190000000101002039000000000012004b0000023d0000c13d000100000003001d000000200030008c000003b00000413d000000030100003900000000001004350000000001000414000001750010009c0000017501008041000000c00110021000000179011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d00000002030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003b00000813d000000000002041b0000000102200039000000000012004b000003ac0000413d00000002010000290000001f0010008c000003d30000a13d000000030100003900000000001004350000000001000414000001750010009c0000017501008041000000c00110021000000179011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000200200008a0000000202200180000000000101043b000003e00000c13d0000002003000039000003ed0000013d0000000701000029000000000200041105d004d70000040f00000007010000290000000602000029000000050300002905d0052e0000040f000000400100043d00000001020000390000000000210435000001750010009c000001750100804100000040011002100000019d011001c7000005d10001042e000000020000006b0000000001000019000003d80000613d0000000701000029000000000101043300000002040000290000000302400210000001b10220027f000001b102200167000000000121016f0000000102400210000000000121019f000003fb0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000060600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003e60000c13d000000020020006c000003f80000813d00000002020000290000000302200210000000f80220018f000001b10220027f000001b10220016700000006033000290000000003030433000000000223016f000000000021041b0000000201000029000000010110021000000001011001bf0000000302000039000000000012041b00000004010000290000000001010433000700000001001d000001770010009c000003380000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000600000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000023d0000c13d0000000601000029000000200010008c0000042d0000413d000000040100003900000000001004350000000001000414000001750010009c0000017501008041000000c00110021000000179011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000006010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000042d0000813d000000000002041b0000000102200039000000000012004b000004290000413d00000007010000290000001f0010008c000004410000a13d000000040100003900000000001004350000000001000414000001750010009c0000017501008041000000c00110021000000179011001c7000080100200003905d005cb0000040f0000000100200190000003800000613d000000200200008a0000000702200180000000000101043b0000044e0000c13d00000020030000390000045b0000013d000000070000006b0000000001000019000004460000613d0000000501000029000000000101043300000007040000290000000302400210000001b10220027f000001b102200167000000000121016f0000000102400210000000000121019f000004690000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000040600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000004540000c13d000000070020006c000004660000813d00000007020000290000000302200210000000f80220018f000001b10220027f000001b10220016700000004033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001011001bf0000000402000039000000000012041b0000000501000039000000000201041a0000017a032001970000000006000411000000000363019f000000000031041b00000000010004140000017b05200197000001750010009c0000017501008041000000c0011002100000017c011001c70000800d0200003900000003030000390000017d0400004105d005c60000040f0000000100200190000003800000613d0000000301000029000000800010043f0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000017e01000041000005d10001042e0000002003000039000000000331043600000000420204340000000000230435000001af062001970000001f0520018f0000004001100039000000000014004b000004a00000813d000000000006004b0000049c0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000004960000c13d000000000005004b000004ba0000613d0000000007010019000004b00000013d000000000006004b000004ac0000613d000000200760008a000001af077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000004a80000c13d000000000005004b000004ba0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f02200039000001af022001970000000001210019000000000001042d0000000501000039000000000101041a0000017b011001970000000002000411000000000021004b000004c70000c13d000000000001042d000000400100043d0000004402100039000001a40300004100000000003204350000019802000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001750010009c00000175010080410000004001100210000001ad011001c7000005d20001043000030000000000020000017b01100198000005100000613d000200000003001d0003017b0020019c0000051a0000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f000000010020019000000003030000290000050e0000613d000000000101043b0000000000300435000000200010043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f000000030600002900000001002001900000050e0000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001750010009c000001750100804100000040011002100000000002000414000001750020009c0000017502008041000000c002200210000000000112019f00000179011001c70000800d020000390000000303000039000001b204000041000000010500002905d005c60000040f00000001002001900000050e0000613d000000000001042d0000000001000019000005d200010430000000400100043d0000006402100039000001b50300004100000000003204350000004402100039000001b603000041000000000032043500000024021000390000002403000039000005230000013d000000400100043d0000006402100039000001b30300004100000000003204350000004402100039000001b403000041000000000032043500000024021000390000002203000039000000000032043500000198020000410000000000210435000000040210003900000020030000390000000000320435000001750010009c00000175010080410000004001100210000001a1011001c7000005d2000104300004000000000002000400000003001d0000017b01100198000005790000613d0002017b0020019c000005830000613d000300000001001d0000000000100435000000200000043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000005770000613d000000000101043b000000000101041a00010004001000740000058d0000413d00000003010000290000000000100435000000200000043f0000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000005770000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001750010009c0000017501008041000000c0011002100000019e011001c7000080100200003905d005cb0000040f0000000100200190000005770000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001750010009c000001750100804100000040011002100000000002000414000001750020009c0000017502008041000000c002200210000000000112019f00000179011001c70000800d020000390000000303000039000001aa040000410000000305000029000000020600002905d005c60000040f0000000100200190000005770000613d000000000001042d0000000001000019000005d200010430000000400100043d0000006402100039000001bb0300004100000000003204350000004402100039000001bc03000041000000000032043500000024021000390000002503000039000005960000013d000000400100043d0000006402100039000001b90300004100000000003204350000004402100039000001ba03000041000000000032043500000024021000390000002303000039000005960000013d000000400100043d0000006402100039000001b70300004100000000003204350000004402100039000001b803000041000000000032043500000024021000390000002603000039000000000032043500000198020000410000000000210435000000040210003900000020030000390000000000320435000001750010009c00000175010080410000004001100210000001a1011001c7000005d200010430000000000001042f000001750010009c000001750100804100000060011002100000000002000414000001750020009c0000017502008041000000c002200210000000000112019f0000017c011001c7000080100200003905d005cb0000040f0000000100200190000005b10000613d000000000101043b000000000001042d0000000001000019000005d200010430000001a6020000410000000000200439000000050110027000000000020100310000000400200443000000010101003100000024001004430000000001000414000001750010009c0000017501008041000000c001100210000001a7011001c7000080050200003905d005cb0000040f0000000100200190000005c50000613d000000000101043b000000000001042d000000000001042f000005c9002104210000000102000039000000000001042d0000000002000019000000000001042d000005ce002104230000000102000039000000000001042d0000000002000019000000000001042d000005d000000432000005d10001042e000005d200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000080000001000000000000000000000000000000000000000000000000000000000000000000000000006c58d43c0000000000000000000000000000000000000000000000000000000095d89b4000000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000006c58d43d0000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000023b872dc00000000000000000000000000000000000000000000000000000000395093500000000000000000000000000000000000000000000000000000000039509351000000000000000000000000000000000000000000000000000000003ba0b9a900000000000000000000000000000000000000000000000000000000579158970000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000000904af8508c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7700000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f20616464726573730045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f206164"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","exchangeRate()":"3ba0b9a9","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setSharesToBonds(uint256)":"0904af85","sharesToBonds(uint256)":"6c58d43d","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"hash":"010001bd5dfb509ad6f3d90f7b5e5588d2fba994b6d1a13e3d250d24e4ebb9a8","factoryDependencies":{}}},"contracts/test/MockAsBNB.sol":{"MockAsBNB":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address","name":"minter_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"minter_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter_\",\"type\":\"address\"}],\"name\":\"setMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAsBNB.sol\":\"MockAsBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IAsBNB.sol\":{\"keccak256\":\"0x34a434d78d48a1c33f79740bab9454fb5eaf05eb38e3abddd3fe55e6f4b4c937\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://5b57d04ca188691bdf445954adbdb2c8dd49d10bd76a20e122c44e9287026277\",\"dweb:/ipfs/QmNwrVGU39FGACYUxxyXT48ugCufzv4SqEJUiosbf4XL2s\"]},\"contracts/test/MockAsBNB.sol\":{\"keccak256\":\"0x94527caf0d123d89f46bac6cb0784c1dea0fc6e60de9da4dcbb5ff8080a047cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3368d3ac8bbd9b5d77aa6ed11c72f3a5b27748d3f301e977fdd6da5991db6539\",\"dweb:/ipfs/QmP7XQB9dWt5KpJFUNagAYR3V34j9Uwhd4jezptW3rAhS7\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":1101,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"_owner","offset":0,"slot":"5","type":"t_address"},{"astId":9166,"contract":"contracts/test/MockAsBNB.sol:MockAsBNB","label":"minter","offset":0,"slot":"6","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000a000000000002000000000801034f000000000108001900000060011002700000016a0110019700000001002001900000002b0000c13d0000008002000039000000400020043f000000040010008c0000004e0000413d000000000208043b000000e002200270000001740020009c000000690000a13d000001750020009c000000760000a13d000001760020009c0000010d0000a13d000001770020009c000001ee0000613d000001780020009c000001340000613d000001790020009c0000004e0000c13d000000240010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b000800000001001d0000016e0010009c0000004e0000213d05a3055d0000040f0000000601000039000000000201041a000001700220019700000008022001af000000000021041b0000000001000019000005a40001042e000000a002000039000000400020043f0000000003000416000000000003004b0000004e0000c13d0000001f031000390000016b03300197000000a003300039000000400030043f0000001f0310018f000000050410027200000005044002100000003e0000613d000000a005400039000000000608034f000000006706043c0000000002720436000000000052004b0000003a0000c13d000000000003004b0000004c0000613d000000000248034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f0000000000240435000000800010008c000000500000813d0000000001000019000005a500010430000000a00400043d0000016c0040009c0000004e0000213d0000001f02400039000000000012004b00000000030000190000016d030080410000016d02200197000000000002004b00000000050000190000016d050040410000016d0020009c000000000503c019000000000005004b0000004e0000c13d000000a00240003900000000030204330000016c0030009c000000a50000a13d0000019c0100004100000000001004350000004101000039000000040010043f0000019d01000041000005a500010430000001810020009c000000910000213d000001870020009c000000ec0000213d0000018a0020009c000001510000613d0000018b0020009c0000004e0000c13d0000000001000416000000000001004b0000004e0000c13d00000006010000390000012f0000013d0000017c0020009c000000d00000213d0000017f0020009c0000011f0000613d000001800020009c0000004e0000c13d0000000001000416000000000001004b0000004e0000c13d0000000501000039000000000201041a0000016e032001970000000005000411000000000053004b000002490000c13d0000017002200197000000000021041b00000000010004140000016a0010009c0000016a01008041000000c00110021000000171011001c70000800d02000039000000030300003900000172040000410000000006000019000003070000013d000001820020009c000000f50000213d000001850020009c000001660000613d000001860020009c0000004e0000c13d0000000001000416000000000001004b0000004e0000c13d0000000001000412000a00000001001d000900000000001d00000000010004150000000a0110008a000000050110021005a305860000040f000000ff0110018f000000800010043f0000019001000041000005a40001042e0000001f02300039000001a1022001970000003f02200039000001a102200197000000400600043d0000000005260019000000000065004b000000000200001900000001020040390000016c0050009c000000630000213d0000000100200190000000630000c13d000000a002100039000000400050043f000700000006001d0000000005360436000800000005001d000000c0044000390000000005430019000000000025004b0000004e0000213d000001a1063001970000001f0530018f000000080b0000290000000000b4004b000002520000813d000000000006004b000000cc0000613d000000000854001900000000075b0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000c60000c13d000000000005004b0000026c0000613d00000000070b0019000002620000013d0000017d0020009c0000012b0000613d0000017e0020009c0000004e0000c13d0000000001000416000000000001004b0000004e0000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001600000c13d000000800010043f000000000005004b000002dc0000c13d000001a201200197000000a00010043f000000000004004b000000c001000039000000a001006039000002fb0000013d000001880020009c000001a90000613d000001890020009c0000004e0000c13d0000000001000416000000000001004b0000004e0000c13d0000000201000039000002060000013d000001830020009c000001be0000613d000001840020009c0000004e0000c13d000000240010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000401043b0000000003000411000000000003004b000002b40000c13d0000018c01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000019b01000041000000c40010043f0000019901000041000005a5000104300000017a0020009c0000020a0000613d0000017b0020009c0000004e0000c13d000000440010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000201043b0000016e0020009c0000004e0000213d0000002401800370000000000301043b000000000100041105a304ea0000040f000001b60000013d000000240010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b0000016e0010009c0000004e0000213d0000000000100435000000200000043f000002040000013d0000000001000416000000000001004b0000004e0000c13d0000000501000039000000000101041a0000016e01100197000000800010043f0000019001000041000005a40001042e000000240010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000601043b0000016e0060009c0000004e0000213d0000000501000039000000000201041a0000016e032001970000000005000411000000000053004b000002490000c13d000000000006004b000002fc0000c13d0000018c01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000018d01000041000000c40010043f0000018e01000041000000e40010043f0000018f01000041000005a5000104300000000001000416000000000001004b0000004e0000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000002ab0000613d0000019c0100004100000000001004350000002201000039000000040010043f0000019d01000041000005a500010430000000640010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b000800000001001d0000016e0010009c0000004e0000213d0000002401800370000000000101043b000700000001001d0000016e0010009c0000004e0000213d0000004401800370000000000101043b000600000001001d000000080100002900000000001004350000000101000039000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b000000000101041a000001a30010009c000003940000613d000000060310006c000003910000813d000000400100043d00000044021000390000019e03000041000000000032043500000024021000390000001d0300003900000000003204350000018c0200004100000000002104350000000402100039000000200300003900000000003204350000016a0010009c0000016a0100804100000040011002100000019f011001c7000005a500010430000000440010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000201043b0000016e0020009c0000004e0000213d0000002401800370000000000301043b000000000100041105a304930000040f0000000101000039000000400200043d00000000001204350000016a0020009c0000016a02008041000000400120021000000191011001c7000005a40001042e000000440010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b000800000001001d0000016e0010009c0000004e0000213d000000000100041100000000001004350000000101000039000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c70000801002000039000700000008035305a3059e0000040f000000070300035f00000001002001900000004e0000613d000000000101043b00000008020000290000000000200435000000200010043f0000002401300370000000000101043b000700000001001d00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b000000000101041a0000000702000029000000000021001a000004540000413d0000000003210019000002e50000013d000000440010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b0000016e0010009c0000004e0000213d0000002402800370000000000202043b000800000002001d0000016e0020009c0000004e0000213d00000000001004350000000101000039000000200010043f000000400100003905a305750000040f00000008020000290000000000200435000000200010043f000000400100003905a305750000040f000000000101041a000000800010043f0000019001000041000005a40001042e000000440010008c0000004e0000413d0000000001000416000000000001004b0000004e0000c13d0000000401800370000000000101043b000800000001001d0000016e0010009c0000004e0000213d0000002401800370000000000101043b000700000001001d000000000100041100000000001004350000000101000039000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b000000000101041a000000070310006c000002e50000813d000000400100043d0000006402100039000001930300004100000000003204350000004402100039000001940300004100000000003204350000002402100039000000250300003900000000003204350000018c0200004100000000002104350000000402100039000000200300003900000000003204350000016a0010009c0000016a01008041000000400110021000000195011001c7000005a5000104300000018c01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000019801000041000000c40010043f0000019901000041000005a500010430000000000006004b0000025e0000613d000000200760008a000001a1077001970000000007b700190000002007700039000000000804001900000000090b0019000000008a0804340000000009a90436000000000079004b0000025a0000c13d000000000005004b0000026c0000613d00000000076b001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033b00190000000000030435000000c00300043d0000016c0030009c0000004e0000213d0000001f04300039000000000014004b00000000010000190000016d010080410000016d04400197000000000004004b00000000050000190000016d050040410000016d0040009c000000000501c019000000000005004b0000004e0000c13d000000a00130003900000000010104330000016c0010009c000000630000213d0000001f04100039000001a1044001970000003f04400039000001a104400197000000400600043d0000000004460019000000000064004b000000000500001900000001050040390000016c0040009c000000630000213d0000000100500190000000630000c13d000000400040043f000500000006001d0000000004160436000600000004001d000000c0033000390000000004310019000000000024004b0000004e0000213d000001a1041001970000001f0210018f0000000609000029000000000093004b0000032a0000813d000000000004004b000002a70000613d00000000062300190000000005290019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002a10000c13d000000000002004b000003440000613d00000000050900190000033a0000013d000000800010043f000000000005004b000002e00000c13d000001a201200197000000a00010043f000000000004004b000000c001000039000000a001006039000003170000013d0000000201000039000000000201041a000000000042001a000004540000413d000800000004001d0000000002420019000000000021041b0000000000300435000000200000043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000000101043b000000000201041a00000008030000290000000002320019000000000021041b000000400100043d00000000003104350000016a0010009c0000016a01008041000000400110021000000000020004140000016a0020009c0000016a02008041000000c002200210000000000112019f0000016f011001c70000800d0200003900000003030000390000019a0400004100000000050000190000000006000411000003070000013d0000000000300435000000020020008c000002f00000813d000002e30000013d0000000000300435000000020020008c0000030c0000813d00000020010000390000031b0000013d0000000001000411000000080200002905a304930000040f000000400100043d000000010200003900000000002104350000016a0010009c0000016a01008041000000400110021000000191011001c7000005a40001042e000001960200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002f20000413d000000c001300039000003170000013d0000017002200197000000000262019f000000000021041b00000000010004140000016a0010009c0000016a01008041000000c00110021000000171011001c70000800d020000390000000303000039000001720400004105a305990000040f00000001002001900000004e0000613d0000000001000019000005a40001042e000001a00200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000030e0000413d000000c001300039000000610110008a000001a101100197000001970010009c000000630000213d0000008001100039000800000001001d000000400010043f000000800200003905a3045a0000040f000000080200002900000000012100490000016a0010009c0000016a0100804100000060011002100000016a0020009c0000016a020080410000004002200210000000000121019f000005a40001042e000000000004004b000003360000613d000000200540008a000001a105500197000000000595001900000020055000390000000006030019000000000709001900000000680604340000000007870436000000000057004b000003320000c13d000000000002004b000003440000613d000000000549001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011900190000000000010435000000e00100043d000400000001001d000000ff0010008c0000004e0000213d000001000100043d000300000001001d0000016e0010009c0000004e0000213d00000007010000290000000001010433000200000001001d0000016c0010009c000000630000213d0000000301000039000000000101041a000000010210019000000001011002700000007f0110618f000100000001001d0000001f0010008c00000000010000190000000101002039000000000012004b000001600000c13d0000000101000029000000200010008c0000037d0000413d0000000301000039000000000010043500000000010004140000016a0010009c0000016a01008041000000c0011002100000016f011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d00000002030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000037d0000813d000000000002041b0000000102200039000000000012004b000003790000413d00000002010000290000001f0010008c000003990000a13d0000000301000039000000000010043500000000010004140000016a0010009c0000016a01008041000000c0011002100000016f011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000200200008a0000000202200180000000000101043b000003a60000c13d0000002003000039000003b30000013d0000000801000029000000000200041105a304930000040f00000008010000290000000702000029000000060300002905a304ea0000040f000002e80000013d000000020000006b00000000010000190000039e0000613d0000000801000029000000000101043300000002040000290000000302400210000001a30220027f000001a302200167000000000121016f0000000102400210000000000121019f000003c10000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000070600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003ac0000c13d000000020020006c000003be0000813d00000002020000290000000302200210000000f80220018f000001a30220027f000001a30220016700000007033000290000000003030433000000000223016f000000000021041b0000000201000029000000010110021000000001011001bf0000000302000039000000000012041b00000005010000290000000001010433000800000001001d0000016c0010009c000000630000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000700000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000001600000c13d0000000701000029000000200010008c000003f30000413d0000000401000039000000000010043500000000010004140000016a0010009c0000016a01008041000000c0011002100000016f011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d00000008030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000007010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003f30000813d000000000002041b0000000102200039000000000012004b000003ef0000413d00000008010000290000001f0010008c000004070000a13d0000000401000039000000000010043500000000010004140000016a0010009c0000016a01008041000000c0011002100000016f011001c7000080100200003905a3059e0000040f00000001002001900000004e0000613d000000200200008a0000000802200180000000000101043b000004140000c13d0000002003000039000004210000013d000000080000006b00000000010000190000040c0000613d0000000601000029000000000101043300000008040000290000000302400210000001a30220027f000001a302200167000000000121016f0000000102400210000000000121019f0000042f0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000050600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000041a0000c13d000000080020006c0000042c0000813d00000008020000290000000302200210000000f80220018f000001a30220027f000001a30220016700000005033000290000000003030433000000000223016f000000000021041b0000000801000029000000010110021000000001011001bf0000000402000039000000000012041b0000000501000039000000000201041a00000170032001970000000006000411000000000363019f000000000031041b00000000010004140000016e052001970000016a0010009c0000016a01008041000000c00110021000000171011001c70000800d020000390000000303000039000001720400004105a305990000040f00000001002001900000004e0000613d0000000404000029000000800040043f00000003010000290000016e011001970000000602000039000000000302041a0000017003300197000000000113019f000000000012041b0000014000000443000001600040044300000020010000390000010000100443000000010100003900000120001004430000017301000041000005a40001042e0000019c0100004100000000001004350000001101000039000000040010043f0000019d01000041000005a5000104300000002003000039000000000331043600000000420204340000000000230435000001a1062001970000001f0520018f0000004001100039000000000014004b000004730000813d000000000006004b0000046f0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000004690000c13d000000000005004b0000048d0000613d0000000007010019000004830000013d000000000006004b0000047f0000613d000000200760008a000001a1077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000047b0000c13d000000000005004b0000048d0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f02200039000001a1022001970000000001210019000000000001042d00030000000000020000016e01100198000004cc0000613d000200000003001d0003016e0020019c000004d60000613d000100000001001d00000000001004350000000101000039000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000001002001900000000303000029000004ca0000613d000000000101043b0000000000300435000000200010043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f00000003060000290000000100200190000004ca0000613d000000000101043b0000000202000029000000000021041b000000400100043d00000000002104350000016a0010009c0000016a01008041000000400110021000000000020004140000016a0020009c0000016a02008041000000c002200210000000000112019f0000016f011001c70000800d020000390000000303000039000001a404000041000000010500002905a305990000040f0000000100200190000004ca0000613d000000000001042d0000000001000019000005a500010430000000400100043d0000006402100039000001a70300004100000000003204350000004402100039000001a803000041000000000032043500000024021000390000002403000039000004df0000013d000000400100043d0000006402100039000001a50300004100000000003204350000004402100039000001a60300004100000000003204350000002402100039000000220300003900000000003204350000018c0200004100000000002104350000000402100039000000200300003900000000003204350000016a0010009c0000016a01008041000000400110021000000195011001c7000005a5000104300004000000000002000400000003001d0000016e01100198000005350000613d0002016e0020019c0000053f0000613d000300000001001d0000000000100435000000200000043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f0000000100200190000005330000613d000000000101043b000000000101041a0001000400100074000005490000413d00000003010000290000000000100435000000200000043f00000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f0000000100200190000005330000613d000000000101043b0000000102000029000000000021041b0000000201000029000000000010043500000000010004140000016a0010009c0000016a01008041000000c00110021000000192011001c7000080100200003905a3059e0000040f0000000100200190000005330000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000016a0010009c0000016a01008041000000400110021000000000020004140000016a0020009c0000016a02008041000000c002200210000000000112019f0000016f011001c70000800d0200003900000003030000390000019a040000410000000305000029000000020600002905a305990000040f0000000100200190000005330000613d000000000001042d0000000001000019000005a500010430000000400100043d0000006402100039000001ad0300004100000000003204350000004402100039000001ae03000041000000000032043500000024021000390000002503000039000005520000013d000000400100043d0000006402100039000001ab0300004100000000003204350000004402100039000001ac03000041000000000032043500000024021000390000002303000039000005520000013d000000400100043d0000006402100039000001a90300004100000000003204350000004402100039000001aa0300004100000000003204350000002402100039000000260300003900000000003204350000018c0200004100000000002104350000000402100039000000200300003900000000003204350000016a0010009c0000016a01008041000000400110021000000195011001c7000005a5000104300000000501000039000000000101041a0000016e011001970000000002000411000000000021004b000005640000c13d000000000001042d000000400100043d0000004402100039000001980300004100000000003204350000018c020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000016a0010009c0000016a0100804100000040011002100000019f011001c7000005a500010430000000000001042f0000016a0010009c0000016a01008041000000600110021000000000020004140000016a0020009c0000016a02008041000000c002200210000000000112019f00000171011001c7000080100200003905a3059e0000040f0000000100200190000005840000613d000000000101043b000000000001042d0000000001000019000005a500010430000001af0200004100000000002004390000000501100270000000000201003100000004002004430000000101010031000000240010044300000000010004140000016a0010009c0000016a01008041000000c001100210000001b0011001c7000080050200003905a3059e0000040f0000000100200190000005980000613d000000000101043b000000000001042d000000000001042f0000059c002104210000000102000039000000000001042d0000000002000019000000000001042d000005a1002104230000000102000039000000000001042d0000000002000019000000000001042d000005a300000432000005a40001042e000005a5000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000002000000000000000000000000000000800000010000000000000000000000000000000000000000000000000000000000000000000000000070a0823000000000000000000000000000000000000000000000000000000000a457c2d600000000000000000000000000000000000000000000000000000000dd62ed3d00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fca3b5aa00000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000023b872dc0000000000000000000000000000000000000000000000000000000039509350000000000000000000000000000000000000000000000000000000003950935100000000000000000000000000000000000000000000000000000000579158970000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000000754617208c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7700000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f2061646472657373004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f206164310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","minter()":"07546172","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setMinter(address)":"fca3b5aa","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"hash":"010001b11e73466f9266afd10af3e20cdb8e5ad2d34f5f9025c6b424d4b943bd","factoryDependencies":{}}},"contracts/test/MockAsBNBMinter.sol":{"MockAsBNBMinter":{"abi":[{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"convertToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAsBNBMinter.sol\":\"MockAsBNBMinter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAsBNBMinter.sol\":{\"keccak256\":\"0x3cf93eddba855443b20f0dcfd7938448c9b44caa866403f53b6cd5bcf4ec1003\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e18d57275418d11e020c30f1e15c8f702ab3c9387b690e37c1ddd55236f91854\",\"dweb:/ipfs/QmdwsZM4rEACUhfD8z8KJAbi7WpxNp57HxrHnrMssXVgPi\"]},\"contracts/test/MockAsBNBMinter.sol\":{\"keccak256\":\"0x482bd87ace143267e000e3638fa5e55d963d31559acbe7ad4e7ed7fb09818a62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9200edc4042bd871305003896e266864441371bf8f9c0bb75a52e24487bdb4c5\",\"dweb:/ipfs/QmSccs1XY7YEUkRQFb89UBn9Njk2nTFSQn7ZB51MDLkqjc\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0000008003000039000000400030043f0000000100200190000000170000c13d000000000201001900000060022002700000000a02200197000000040020008c0000001f0000413d000000000301043b0000000c033001970000000d0030009c0000001f0000c13d000000240020008c0000001f0000413d0000000002000416000000000002004b0000001f0000c13d0000000401100370000000000101043b000000800010043f0000000e01000041000000220001042e0000000001000416000000000001004b0000001f0000c13d0000002001000039000001000010044300000120000004430000000b01000041000000220001042e000000000100001900000023000104300000002100000432000000220001042e0000002300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000085906256000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000800000000000000000"},"methodIdentifiers":{"convertToTokens(uint256)":"85906256"}},"hash":"0100000fde6e203c6991432d089a49fee4a40351fa7da471a137d4f1ad595274","factoryDependencies":{}}},"contracts/test/MockCallPrice.sol":{"CorrelatedTokenOracleInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockCallPrice.sol\":\"CorrelatedTokenOracleInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/test/MockCallPrice.sol\":{\"keccak256\":\"0x499db17c0c6973ae037972f11f567aba531944f1c27f99b9775dda5685888b62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://832c9e71f0db58a33646e618c73556365f62fa27892fcc3ba4674e63bbe6ce4c\",\"dweb:/ipfs/QmNUzqwAms2BBkoHGtkXdVdpaKFFGToxecDx9N2ComeMVo\"]}},\"version\":1}","devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"getPrice(address)":"41976e09","updateSnapshot()":"69240426"}}},"MockCallPrice":{"abi":[{"inputs":[{"internalType":"contract ResilientOracleInterface","name":"oracle","type":"address"},{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetPriceResilientOracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract CorrelatedTokenOracleInterface","name":"oracle","type":"address"},{"internalType":"address","name":"asset","type":"address"}],"name":"getMultiPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ResilientOracleInterface","name":"oracle","type":"address"},{"internalType":"address","name":"vToken","type":"address"}],"name":"getUnderlyingPriceResilientOracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getAssetPriceResilientOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract CorrelatedTokenOracleInterface\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getMultiPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPriceResilientOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockCallPrice.sol\":\"MockCallPrice\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/test/MockCallPrice.sol\":{\"keccak256\":\"0x499db17c0c6973ae037972f11f567aba531944f1c27f99b9775dda5685888b62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://832c9e71f0db58a33646e618c73556365f62fa27892fcc3ba4674e63bbe6ce4c\",\"dweb:/ipfs/QmNUzqwAms2BBkoHGtkXdVdpaKFFGToxecDx9N2ComeMVo\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"000100000000000200060000000000020000008003000039000000400030043f00000001002001900000006c0000c13d00000000020100190000006002200270000000eb02200197000000040020008c000000e10000413d000000000301043b000000e003300270000000ed0030009c000000740000613d000000ee0030009c000000c10000613d000000ef0030009c000000e10000c13d000000440020008c000000e10000413d0000000002000416000000000002004b000000e10000c13d0000000402100370000000000202043b000000f00020009c000000e10000213d0000002401100370000000000101043b000000f00010009c000000e10000213d000500000001001d000000f1010000410000000000100439000600000002001d00000004002004430000000001000414000000eb0010009c000000eb01008041000000c001100210000000f2011001c7000080020200003903a503a00000040f0000000100200190000001270000613d000000000101043b000000000001004b000000060400002900000005020000290000008005000039000000e10000613d000000fb01000041000000800010043f000000840020043f0000000001000414000000040040008c000000470000613d000000eb0010009c000000eb01008041000000c001100210000000fc011001c7000000000204001903a5039b0000040f0000008005000039000000060400002900000000030100190000006003300270000000eb0030019d0000000100200190000001280000613d000000400050043f000000f101000041000000000010043900000004004004430000000001000414000000eb0010009c000000eb01008041000000c001100210000000f2011001c7000080020200003903a503a00000040f0000000100200190000001270000613d000000000101043b000000000001004b00000006020000290000000505000029000000e10000613d000000400600043d000000fb010000410000000003160436000000040460003900000000005404350000000001000414000000040020008c000001e30000c13d000000f50060009c0000018f0000213d000000400060043f000000f601000041000000000016043500000000005404350000000003000031000000200030008c000000200400003900000000040340190000022b0000013d0000000001000416000000000001004b000000e10000c13d000000200100003900000100001004430000012000000443000000ec01000041000003a60001042e000000440020008c000000e10000413d0000000002000416000000000002004b000000e10000c13d0000000402100370000000000202043b000000f00020009c000000e10000213d0000002401100370000000000101043b000000f00010009c000000e10000213d000600000001001d000000f002200197000000f1010000410000000000100439000500000002001d00000004002004430000000001000414000000eb0010009c000000eb01008041000000c001100210000000f2011001c7000080020200003903a503a00000040f0000000100200190000001270000613d000000000101043b000000000001004b0000000606000029000000e10000613d000000400a00043d000000f30100004100000000051a043600000000010004140000000504000029000000040040008c000000b10000613d000000eb00a0009c000000eb0200004100000000020a40190000004002200210000000eb0010009c000000eb01008041000000c001100210000000000121019f000000f4011001c7000000000204001900040000000a001d000300000005001d03a5039b0000040f00000006060000290000000305000029000000040a000029000000050400002900000000030100190000006003300270000000eb0030019d0000000100200190000001380000613d000000f500a0009c0000018f0000213d000000f0066001970000004000a0043f000000f60100004100000000001a04350000000401a0003900000000006104350000000001000414000000040040008c000001580000c13d0000000003000031000000200030008c000000200400003900000000040340190000018a0000013d000000440020008c000000e10000413d0000000002000416000000000002004b000000e10000c13d0000000402100370000000000202043b000000f00020009c000000e10000213d0000002401100370000000000101043b000000f00010009c000000e10000213d000500000001001d000000f1010000410000000000100439000600000002001d00000004002004430000000001000414000000eb0010009c000000eb01008041000000c001100210000000f2011001c7000080020200003903a503a00000040f0000000100200190000001270000613d000000000101043b000000000001004b00000006040000290000000502000029000000e30000c13d0000000001000019000003a700010430000000400500043d000000f9010000410000000000150435000000040150003900000000002104350000000001000414000000040040008c000000fe0000613d000000eb0050009c000000eb0200004100000000020540190000004002200210000000eb0010009c000000eb01008041000000c001100210000000000121019f000000f7011001c70000000002040019000400000005001d03a5039b0000040f0000000405000029000000060400002900000000030100190000006003300270000000eb0030019d0000000100200190000001480000613d000000f50050009c0000018f0000213d000000400050043f000000f101000041000000000010043900000004004004430000000001000414000000eb0010009c000000eb01008041000000c001100210000000f2011001c7000080020200003903a503a00000040f0000000100200190000001270000613d000000000101043b000000000001004b00000006020000290000000503000029000000e10000613d000000400400043d000000f9010000410000000001140436000300000001001d000000040540003900000000003504350000000001000414000000040020008c000002860000c13d000000f50040009c0000018f0000213d000000400040043f000000fa01000041000400000004001d000000000014043500000000003504350000000003000031000000200030008c00000020040000390000000004034019000002ca0000013d000000000001042f000000eb03300197000000400200043d0000001f0430018f00000005053002720000000505500210000001350000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000001310000c13d000000000004004b000003790000c13d000003850000013d000000eb03300197000000400200043d0000001f0430018f00000005053002720000000505500210000001450000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000001410000c13d000000000004004b000003850000613d000003790000013d000000eb03300197000000400200043d0000001f0430018f00000005053002720000000505500210000001550000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000001510000c13d000000000004004b000003850000613d000003790000013d000600000006001d000000eb00a0009c000000eb0200004100000000020a40190000004002200210000000eb0010009c000000eb01008041000000c001100210000000000121019f000000f7011001c7000000000204001900040000000a001d000300000005001d03a503a00000040f000000030b000029000000040a00002900000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001770000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000001730000c13d000000000005004b000001860000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000002770000613d00000006060000290000001f01400039000000600110018f0000000005a10019000000f50050009c000001950000a13d000000fe0100004100000000001004350000004101000039000000040010043f000000f701000041000003a700010430000000400050043f000000200030008c000000e10000413d00000000020a0433000300000002001d000000f6020000410000000002250436000600000002001d0000000402500039000000000062043500000000040004140000000502000029000000040020008c000001d30000613d000000eb0050009c000400000005001d000000eb0100004100000000010540190000004001100210000000eb0040009c000000eb04008041000000c003400210000000000113019f000000f7011001c703a503a00000040f00000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000001be0000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000001ba0000c13d000000000005004b000001cd0000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000033d0000613d0000001f01400039000000600110018f00000004050000290000000001510019000000f50010009c0000018f0000213d000000400010043f000000200030008c000000e10000413d00000000020504330000002003100039000000000023043500000003020000290000000000210435000000eb0010009c000000eb010080410000004001100210000000f8011001c7000003a60001042e000300000004001d000200000003001d000000eb0060009c000000eb0300004100000000030640190001004000300218000000eb0010009c000000eb01008041000000c00110021000000001011001af000000f7011001c7000400000006001d03a5039b0000040f00000000030100190000006003300270000000eb0030019d00000001002001900000031d0000613d0000000404000029000000fd0040009c0000000602000029000000050300002900000003050000290000018f0000813d000000400040043f000000f601000041000000000014043500000000003504350000000001000414000000eb0010009c000000eb01008041000000c00110021000000001011001af000000f7011001c703a503a00000040f00000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000020a000029000002160000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000002120000c13d000000000005004b000002250000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000034c0000613d0000000602000029000000050500002900000004060000290000001f01400039000000600110018f0000000004610019000000f50040009c0000018f0000213d000500000004001d000000400040043f000000200030008c000000e10000413d0000000004060433000300000004001d000000f60400004100000005060000290000000004460436000400000004001d000000040460003900000000005404350000000004000414000000040020008c0000026e0000613d0000000501000029000000eb0010009c000000eb010080410000004001100210000000eb0040009c000000eb04008041000000c002400210000000000112019f000000f7011001c7000000060200002903a503a00000040f00000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a0000290000025a0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000002560000c13d000000000005004b000002690000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000036a0000613d0000001f01400039000000600110018f0000000501100029000000f50010009c0000018f0000213d000000400010043f000000200030008c000000e10000413d00000005020000290000000002020433000001da0000013d000000400200043d0000001f0430018f0000000505300272000002830000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000027f0000c13d000000000004004b000003850000613d000003780000013d000200000005001d000000eb0040009c000000eb0300004100000000030440190001004000300218000000eb0010009c000000eb01008041000000c00110021000000001011001af000000f7011001c7000400000004001d03a5039b0000040f00000000030100190000006003300270000000eb0030019d00000001002001900000032d0000613d0000000404000029000000f50040009c0000000602000029000000050300002900000002050000290000018f0000213d000000400040043f000000fa01000041000000000014043500000000003504350000000001000414000000eb0010009c000000eb01008041000000c00110021000000001011001af000000f7011001c703a503a00000040f00000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030a000029000002b80000613d000000000701034f0000000408000029000000007907043c00000000089804360000000000a8004b000002b40000c13d000000000005004b000002c70000613d0000000506600210000000000761034f00000004066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000035b0000613d0000001f01400039000000600110018f00000004020000290000000004210019000300000004001d000000f50040009c000000060400002900000005050000290000018f0000213d0000000306000029000000400060043f000000200030008c000000e10000413d0000000002020433000200000002001d000000fa0200004100000003060000290000000002260436000400000002001d000000040260003900000000005204350000000002000414000000040040008c000003110000613d0000000301000029000000eb0010009c000000eb010080410000004001100210000000eb0020009c000000eb02008041000000c002200210000000000112019f000000f7011001c7000000060200002903a503a00000040f00000000030100190000006003300270000000eb03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000002fd0000613d000000000701034f0000000308000029000000007907043c00000000089804360000000000a8004b000002f90000c13d000000000005004b0000030c0000613d0000000506600210000000000761034f00000003066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000038b0000613d0000001f01400039000000600110018f0000000301100029000000f50010009c0000018f0000213d000000400010043f000000200030008c000000e10000413d00000003020000290000000002020433000000200310003900000000002304350000000202000029000001dd0000013d000000eb03300197000000400200043d0000001f0430018f00000005053002720000032a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003260000c13d000000000004004b000003780000c13d000003850000013d000000eb03300197000000400200043d0000001f0430018f000000050530027200000005055002100000033a0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003360000c13d000000000004004b000003850000613d000003790000013d000000400200043d0000001f0430018f0000000505300272000003490000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003450000c13d000000000004004b000003850000613d000003780000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003580000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003540000c13d000000000004004b000003850000613d000003790000013d000000400200043d0000001f0430018f0000000505300272000003670000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003630000c13d000000000004004b000003850000613d000003780000013d000000400200043d0000001f0430018f0000000505300272000003760000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003720000c13d000000000004004b000003850000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000000eb0020009c000000eb020080410000004002200210000000000112019f000003a700010430000000400200043d0000001f0430018f00000005053002720000000505500210000003970000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003930000c13d000000000004004b000003850000613d000003790000013d000000000001042f0000039e002104210000000102000039000000000001042d0000000002000019000000000001042d000003a3002104230000000102000039000000000001042d0000000002000019000000000001042d000003a500000432000003a60001042e000003a700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000002cf689b4000000000000000000000000000000000000000000000000000000002bd6ec3e000000000000000000000000000000000000000000000000000000000ddd2e27000000000000000000000000ffffffffffffffffffffffffffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000069240426000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff41976e09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004000000000000000000000000096e85ced00000000000000000000000000000000000000000000000000000000fc57d4df00000000000000000000000000000000000000000000000000000000b62cad6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000080000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"getAssetPriceResilientOracle(address,address)":"0ddd2e27","getMultiPrice(address,address)":"2cf689b4","getUnderlyingPriceResilientOracle(address,address)":"2bd6ec3e"}},"hash":"010000ffeb27433eed6e150a32ca9ad8580502cd2995185a8f3b2d3d7a77bbc7","factoryDependencies":{}}},"contracts/test/MockEtherFiLiquidityPool.sol":{"MockEtherFiLiquidityPool":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"amountForShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountPerShare","type":"uint256"}],"name":"setAmountPerShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_share\",\"type\":\"uint256\"}],\"name\":\"amountForShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"amountPerShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountPerShare\",\"type\":\"uint256\"}],\"name\":\"setAmountPerShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"amountPerShare()\":{\"notice\":\"The amount of eETH per weETH scaled by 1e18\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockEtherFiLiquidityPool.sol\":\"MockEtherFiLiquidityPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IEtherFiLiquidityPool.sol\":{\"keccak256\":\"0xce3955be63e9f3787e90573c72c119238d2e63712c1a828b874145b1f91761d6\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://861adbf644c2884b4c55ac4d3ae94eabb917a3dfd184cda2356b09a5c301ffe8\",\"dweb:/ipfs/QmTxe6CuC4nT1su9FM84KQYxLTXfwzEa2ov5uzUnCWTzU5\"]},\"contracts/test/MockEtherFiLiquidityPool.sol\":{\"keccak256\":\"0x7546c418d5ce4bc5a9467d6cd2be25ad3113a9341d5970b4c7c62d6daaf5db79\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a7488deecfb21008023d3e609d5b3b174cbfcc746c0b1a00771014eb10bdcdaa\",\"dweb:/ipfs/QmNfbH3PNBPnfXEdHJeJ85Fjs1zkzVgkDh4pRBY1LqHuei\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"amountPerShare()":{"notice":"The amount of eETH per weETH scaled by 1e18"}},"version":1},"storageLayout":{"storage":[{"astId":1101,"contract":"contracts/test/MockEtherFiLiquidityPool.sol:MockEtherFiLiquidityPool","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":9372,"contract":"contracts/test/MockEtherFiLiquidityPool.sol:MockEtherFiLiquidityPool","label":"amountPerShare","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"000100000000000200000000000103550000008003000039000000400030043f00000001002001900000001d0000c13d000000000201001900000060022002700000003502200197000000040020008c000000b30000413d000000000301043b000000e0033002700000003b0030009c000000360000213d0000003f0030009c000000580000613d000000400030009c0000006b0000613d000000410030009c000000b30000c13d0000000001000416000000000001004b000000b30000c13d0000000101000039000000000101041a000000800010043f0000004601000041000000d10001042e0000000001000416000000000001004b000000b30000c13d000000000100041a00000036021001970000000006000411000000000262019f000000000020041b00000000020004140000003705100197000000350020009c0000003502008041000000c00120021000000038011001c70000800d020000390000000303000039000000390400004100d000cb0000040f0000000100200190000000b30000613d0000002001000039000001000010044300000120000004430000003a01000041000000d10001042e0000003c0030009c0000007f0000613d0000003d0030009c000000870000613d0000003e0030009c000000b30000c13d000000240020008c000000b30000413d0000000002000416000000000002004b000000b30000c13d0000000401100370000000000101043b000000370010009c000000b30000213d000000000200041a00000037032001970000000005000411000000000053004b000000940000c13d0000003706100198000000a30000c13d0000004201000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000004301000041000000c40010043f0000004401000041000000e40010043f0000004501000041000000d200010430000000240020008c000000b30000413d0000000002000416000000000002004b000000b30000c13d0000000102000039000000000202041a0000000401100370000000000301043b00000000013200a9000000000003004b000000670000613d00000000033100d9000000000032004b0000009d0000c13d0000004b0110012a000000800010043f0000004601000041000000d10001042e0000000001000416000000000001004b000000b30000c13d000000000100041a00000037021001970000000005000411000000000052004b000000940000c13d0000003601100197000000000010041b0000000001000414000000350010009c0000003501008041000000c00110021000000038011001c70000800d02000039000000030300003900000039040000410000000006000019000000ae0000013d0000000001000416000000000001004b000000b30000c13d000000000100041a0000003701100197000000800010043f0000004601000041000000d10001042e000000240020008c000000b30000413d0000000001000416000000000001004b000000b30000c13d00d000b50000040f00000004010000390000000001100367000000000101043b0000000102000039000000000012041b0000000001000019000000d10001042e0000004201000041000000800010043f0000002001000039000000840010043f000000a40010043f0000004701000041000000c40010043f0000004801000041000000d200010430000000490100004100000000001004350000001101000039000000040010043f0000004a01000041000000d2000104300000003601200197000000000161019f000000000010041b0000000001000414000000350010009c0000003501008041000000c00110021000000038011001c70000800d020000390000000303000039000000390400004100d000cb0000040f0000000100200190000000b30000613d0000000001000019000000d10001042e0000000001000019000000d200010430000000000100041a00000037011001970000000002000411000000000021004b000000bb0000c13d000000000001042d000000400100043d0000004402100039000000470300004100000000003204350000004202000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000000350010009c000000350100804100000040011002100000004c011001c7000000d200010430000000ce002104210000000102000039000000000001042d0000000002000019000000000001042d000000d000000432000000d10001042e000000d200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000b1ef362d00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000561bddf800000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000007c5a227c08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000008000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000064000000000000000000000000"},"methodIdentifiers":{"amountForShare(uint256)":"561bddf8","amountPerShare()":"7c5a227c","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setAmountPerShare(uint256)":"b1ef362d","transferOwnership(address)":"f2fde38b"}},"hash":"0100004d83870b4582583c3e1b335f895603f89c2f58eaa65d69306d589cf2a6","factoryDependencies":{}}},"contracts/test/MockSFrax.sol":{"MockSFrax":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockSFrax.sol\":\"MockSFrax\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/ISFrax.sol\":{\"keccak256\":\"0x478821eeeb2b7699442dc19b5029f918f650448cb0655b88348a167ea856efb8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://a995dfc29d1c157443f29c033087d3507491e1ddf8d5e47ca193bd316117e06b\",\"dweb:/ipfs/QmZUWhVMi71xkQeJFuvMjAsyt6vR6j98XxdsB94ApgBkVW\"]},\"contracts/test/MockSFrax.sol\":{\"keccak256\":\"0xd5e178328993353fecbf2dff7cb9b90fe32207d4b0bbceb9e29e75cb94acc200\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b34be057e2259a2d8e591cbb3e966f1fa075b489ea8a247aeaa3d4dce703249\",\"dweb:/ipfs/QmV8eNDrnsxGoePESXUi5JteAMd5hZMMPEQFwqR9f6Fgot\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":1101,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"_owner","offset":0,"slot":"5","type":"t_address"},{"astId":9424,"contract":"contracts/test/MockSFrax.sol:MockSFrax","label":"exchangeRate","offset":0,"slot":"6","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020009000000000002000000000801034f00000000000803550000000001080019000000600110027000000176011001970000000100200190000000200000c13d0000008002000039000000400020043f000000040010008c000003810000413d000000000208043b000000e002200270000001800020009c000000820000213d0000018d0020009c000000a90000a13d0000018e0020009c000000ea0000a13d0000018f0020009c000001550000613d000001900020009c000001620000613d000001910020009c000003810000c13d0000000001000416000000000001004b000003810000c13d0000000601000039000001bc0000013d000000a002000039000000400020043f0000000003000416000000000003004b000003810000c13d0000001f031000390000017703300197000000a003300039000000400030043f0000001f0310018f0000000504100272000000330000613d0000000505400210000000a005500039000000000608034f000000006706043c0000000002720436000000000052004b0000002f0000c13d000000000003004b000000420000613d0000000502400210000000000428034f0000000303300210000000a002200039000000000502043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f0000000000320435000000600010008c000003810000413d000000a00400043d000001780040009c000003810000213d0000001f02400039000000000012004b000000000300001900000179030080410000017902200197000000000002004b00000000050000190000017905004041000001790020009c000000000503c019000000000005004b000003810000c13d000000a0024000390000000003020433000001780030009c000003330000213d0000001f02300039000001b0022001970000003f02200039000001b002200197000000400600043d0000000005260019000000000065004b00000000020000190000000102004039000001780050009c000003330000213d0000000100200190000003330000c13d000000a002100039000000400050043f000600000006001d0000000005360436000700000005001d000000c0044000390000000005430019000000000025004b000003810000213d000001b0063001970000001f0530018f000000070b0000290000000000b4004b000002710000813d000000000006004b0000007e0000613d000000000854001900000000075b0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000780000c13d000000000005004b0000028b0000613d00000000070b0019000002810000013d000001810020009c000000d80000a13d000001820020009c000000fc0000a13d000001830020009c000001950000613d000001840020009c000001a40000613d000001850020009c000003810000c13d000000240010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000601043b0000017c0060009c000003810000213d0000000501000039000000000201041a0000017c032001970000000005000411000000000053004b000002680000c13d000000000006004b000003140000c13d0000019901000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000019a01000041000000c40010043f0000019b01000041000000e40010043f0000019c01000041000005d300010430000001940020009c0000013f0000213d000001970020009c000001c00000613d000001980020009c000003810000c13d000000240010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000601000039000000000101041a0000000402800370000000000202043b00000000032100a9000000000002004b000000be0000613d00000000022300d9000000000021004b000000d20000c13d000700000003001d000001ab0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001760010009c0000017601008041000000c001100210000001ac011001c7000080050200003905d105cc0000040f0000000100200190000002fb0000613d000000000101043b000000ff0210018f0000004d0020008c0000000705000029000003100000a13d000001ad0100004100000000001004350000001101000039000000040010043f000001ae01000041000005d300010430000001880020009c000001480000213d0000018b0020009c000001d80000613d0000018c0020009c000003810000c13d000000240010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000101043b0000017c0010009c000003810000213d0000000000100435000000200000043f000001ba0000013d000001920020009c000001ec0000613d000001930020009c000003810000c13d0000000001000416000000000001004b000003810000c13d0000000001000412000900000001001d000800000000001d0000000001000415000000090110008a000000050110021005d105b40000040f000000ff0110018f000000800010043f0000019d01000041000005d20001042e000001860020009c0000022f0000613d000001870020009c000003810000c13d000000440010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000101043b000700000001001d0000017c0010009c000003810000213d0000002401800370000000000101043b000600000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b000000000101041a000000060310006c000001910000813d000000400100043d0000006402100039000001a00300004100000000003204350000004402100039000001a103000041000000000032043500000024021000390000002503000039000000000032043500000199020000410000000000210435000000040210003900000020030000390000000000320435000001760010009c00000176010080410000004001100210000001a2011001c7000005d300010430000001950020009c000002440000613d000001960020009c000003810000c13d0000000001000416000000000001004b000003810000c13d0000000201000039000001bc0000013d000001890020009c000002530000613d0000018a0020009c000003810000c13d0000000001000416000000000001004b000003810000c13d0000000501000039000000000101041a0000017c01100197000000800010043f0000019d01000041000005d20001042e000000240010008c000003810000413d0000000001000416000000000001004b000003810000c13d05d1058b0000040f00000004010000390000000001100367000000000101043b0000000602000039000000000012041b0000000001000019000005d20001042e000000440010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000101043b000700000001001d0000017c0010009c000003810000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c70000801002000039000600000008035305d105cc0000040f000000060300035f0000000100200190000003810000613d000000000101043b00000007020000290000000000200435000000200010043f0000002401300370000000000101043b000600000001001d0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b000000000101041a0000000602000029000000000021001a000000d20000413d00000000032100190000000001000411000000070200002905d104c10000040f000003cc0000013d000000440010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000201043b0000017c0020009c000003810000213d0000002401800370000000000301043b000000000100041105d105180000040f00000001010000390000035a0000013d000000440010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000101043b0000017c0010009c000003810000213d0000002402800370000000000202043b000700000002001d0000017c0020009c000003810000213d00000000001004350000000101000039000000200010043f000000400100003905d105a30000040f00000007020000290000000000200435000000200010043f000000400100003905d105a30000040f000000000101041a000000800010043f0000019d01000041000005d20001042e0000000001000416000000000001004b000003810000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f00000001006001900000023e0000c13d000000800010043f000000000005004b000002fc0000c13d000001b101200197000000a00010043f000000000004004b000000c001000039000000a0010060390000032f0000013d000000240010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000401043b0000000003000411000000000003004b000002ca0000c13d0000019901000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001a801000041000000c40010043f000001a601000041000005d300010430000000640010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000101043b000700000001001d0000017c0010009c000003810000213d0000002401800370000000000101043b000600000001001d0000017c0010009c000003810000213d0000004401800370000000000101043b000500000001001d000000070100002900000000001004350000000101000039000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b000000000101041a000001b20010009c000003c80000613d000000050310006c000003c50000813d000000400100043d0000004402100039000001a903000041000000000032043500000024021000390000001d03000039000000000032043500000199020000410000000000210435000000040210003900000020030000390000000000320435000001760010009c00000176010080410000004001100210000001aa011001c7000005d3000104300000000001000416000000000001004b000003810000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000002f20000613d000001ad0100004100000000001004350000002201000039000000040010043f000001ae01000041000005d300010430000000440010008c000003810000413d0000000001000416000000000001004b000003810000c13d0000000401800370000000000201043b0000017c0020009c000003810000213d0000002401800370000000000301043b000000000100041105d104c10000040f00000001010000390000035a0000013d0000000001000416000000000001004b000003810000c13d0000000501000039000000000201041a0000017c032001970000000005000411000000000053004b000002680000c13d0000017b02200197000000000021041b0000000001000414000001760010009c0000017601008041000000c0011002100000017d011001c70000800d0200003900000003030000390000017e0400004100000000060000190000031f0000013d0000019901000041000000800010043f0000002001000039000000840010043f000000a40010043f000001a501000041000000c40010043f000001a601000041000005d300010430000000000006004b0000027d0000613d000000200760008a000001b0077001970000000007b700190000002007700039000000000804001900000000090b0019000000008a0804340000000009a90436000000000079004b000002790000c13d000000000005004b0000028b0000613d00000000076b001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033b00190000000000030435000000c00300043d000001780030009c000003810000213d0000001f04300039000000000014004b000000000100001900000179010080410000017904400197000000000004004b00000000050000190000017905004041000001790040009c000000000501c019000000000005004b000003810000c13d000000a0013000390000000001010433000001780010009c000003330000213d0000001f04100039000001b0044001970000003f04400039000001b004400197000000400600043d0000000004460019000000000064004b00000000050000190000000105004039000001780040009c000003330000213d0000000100500190000003330000c13d000000400040043f000400000006001d0000000004160436000500000004001d000000c0033000390000000004310019000000000024004b000003810000213d000001b0041001970000001f0210018f0000000509000029000000000093004b000003610000813d000000000004004b000002c60000613d00000000062300190000000005290019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002c00000c13d000000000002004b0000037b0000613d0000000005090019000003710000013d0000000201000039000000000201041a000000000042001a000000d20000413d000700000004001d0000000002420019000000000021041b0000000000300435000000200000043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000000101043b000000000201041a00000007030000290000000002320019000000000021041b000000400100043d0000000000310435000001760010009c000001760100804100000040011002100000000002000414000001760020009c0000017602008041000000c002200210000000000112019f0000017a011001c70000800d020000390000000303000039000001a704000041000000000500001900000000060004110000031f0000013d000000800010043f000000000005004b0000030b0000c13d000001b101200197000000a00010043f000000000004004b000000c001000039000000a0010060390000032f0000013d000000000001042f0000000000300435000000020020008c0000030e0000413d000001af0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000003010000413d000000c0013000390000032f0000013d0000000000300435000000020020008c000003240000813d0000002001000039000003390000013d000000000002004b000003480000c13d0000000101000039000003590000013d0000017b02200197000000000262019f000000000021041b0000000001000414000001760010009c0000017601008041000000c0011002100000017d011001c70000800d0200003900000003030000390000017e0400004105d105c70000040f0000000100200190000003810000613d0000000001000019000005d20001042e000001a30200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000003260000413d000000c001300039000000610110008a000001b001100197000001a40010009c000003390000a13d000001ad0100004100000000001004350000004101000039000000040010043f000001ae01000041000005d3000104300000008001100039000700000001001d000000400010043f000000800200003905d104880000040f00000007020000290000000001210049000001760010009c00000176010080410000006001100210000001760020009c00000176020080410000004002200210000000000121019f000005d20001042e0000000a030000390000000101000039000000010020019000000000043300a9000000010300603900000000011300a9000000010220027200000000030400190000034a0000c13d000000000001004b000003590000c13d000001ad0100004100000000001004350000001201000039000000040010043f000001ae01000041000005d30001043000000000011500d9000000400200043d0000000000120435000001760020009c000001760200804100000040012002100000019e011001c7000005d20001042e000000000004004b0000036d0000613d000000200540008a000001b005500197000000000595001900000020055000390000000006030019000000000709001900000000680604340000000007870436000000000057004b000003690000c13d000000000002004b0000037b0000613d000000000549001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011900190000000000010435000000e00100043d000300000001001d000000ff0010008c000003830000a13d0000000001000019000005d30001043000000006010000290000000001010433000001780010009c000003330000213d000200000001001d0000000301000039000000000101041a000000010210019000000001031002700000007f0330618f0000001f0030008c00000000010000190000000101002039000000000012004b0000023e0000c13d000100000003001d000000200030008c000003b10000413d000000030100003900000000001004350000000001000414000001760010009c0000017601008041000000c0011002100000017a011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d00000002030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003b10000813d000000000002041b0000000102200039000000000012004b000003ad0000413d00000002010000290000001f0010008c000003d40000a13d000000030100003900000000001004350000000001000414000001760010009c0000017601008041000000c0011002100000017a011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000200200008a0000000202200180000000000101043b000003e10000c13d0000002003000039000003ee0000013d0000000701000029000000000200041105d104c10000040f00000007010000290000000602000029000000050300002905d105180000040f000000400100043d00000001020000390000000000210435000001760010009c000001760100804100000040011002100000019e011001c7000005d20001042e000000020000006b0000000001000019000003d90000613d0000000701000029000000000101043300000002040000290000000302400210000001b20220027f000001b202200167000000000121016f0000000102400210000000000121019f000003fc0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000060600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003e70000c13d000000020020006c000003f90000813d00000002020000290000000302200210000000f80220018f000001b20220027f000001b20220016700000006033000290000000003030433000000000223016f000000000021041b0000000201000029000000010110021000000001011001bf0000000302000039000000000012041b00000004010000290000000001010433000700000001001d000001780010009c000003330000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000600000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000023e0000c13d0000000601000029000000200010008c0000042e0000413d000000040100003900000000001004350000000001000414000001760010009c0000017601008041000000c0011002100000017a011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000006010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000042e0000813d000000000002041b0000000102200039000000000012004b0000042a0000413d00000007010000290000001f0010008c000004420000a13d000000040100003900000000001004350000000001000414000001760010009c0000017601008041000000c0011002100000017a011001c7000080100200003905d105cc0000040f0000000100200190000003810000613d000000200200008a0000000702200180000000000101043b0000044f0000c13d00000020030000390000045c0000013d000000070000006b0000000001000019000004470000613d0000000501000029000000000101043300000007040000290000000302400210000001b20220027f000001b202200167000000000121016f0000000102400210000000000121019f0000046a0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000040600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000004550000c13d000000070020006c000004670000813d00000007020000290000000302200210000000f80220018f000001b20220027f000001b20220016700000004033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001011001bf0000000402000039000000000012041b0000000501000039000000000201041a0000017b032001970000000006000411000000000363019f000000000031041b00000000010004140000017c05200197000001760010009c0000017601008041000000c0011002100000017d011001c70000800d0200003900000003030000390000017e0400004105d105c70000040f0000000100200190000003810000613d0000000301000029000000800010043f0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000017f01000041000005d20001042e0000002003000039000000000331043600000000420204340000000000230435000001b0062001970000001f0520018f0000004001100039000000000014004b000004a10000813d000000000006004b0000049d0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000004970000c13d000000000005004b000004bb0000613d0000000007010019000004b10000013d000000000006004b000004ad0000613d000000200760008a000001b0077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000004a90000c13d000000000005004b000004bb0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f02200039000001b0022001970000000001210019000000000001042d00030000000000020000017c01100198000004fa0000613d000200000003001d0003017c0020019c000005040000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f00000001002001900000000303000029000004f80000613d000000000101043b0000000000300435000000200010043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f00000003060000290000000100200190000004f80000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001760010009c000001760100804100000040011002100000000002000414000001760020009c0000017602008041000000c002200210000000000112019f0000017a011001c70000800d020000390000000303000039000001b304000041000000010500002905d105c70000040f0000000100200190000004f80000613d000000000001042d0000000001000019000005d300010430000000400100043d0000006402100039000001b60300004100000000003204350000004402100039000001b7030000410000000000320435000000240210003900000024030000390000050d0000013d000000400100043d0000006402100039000001b40300004100000000003204350000004402100039000001b503000041000000000032043500000024021000390000002203000039000000000032043500000199020000410000000000210435000000040210003900000020030000390000000000320435000001760010009c00000176010080410000004001100210000001a2011001c7000005d3000104300004000000000002000400000003001d0000017c01100198000005630000613d0002017c0020019c0000056d0000613d000300000001001d0000000000100435000000200000043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000005610000613d000000000101043b000000000101041a0001000400100074000005770000413d00000003010000290000000000100435000000200000043f0000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000005610000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001760010009c0000017601008041000000c0011002100000019f011001c7000080100200003905d105cc0000040f0000000100200190000005610000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001760010009c000001760100804100000040011002100000000002000414000001760020009c0000017602008041000000c002200210000000000112019f0000017a011001c70000800d020000390000000303000039000001a7040000410000000305000029000000020600002905d105c70000040f0000000100200190000005610000613d000000000001042d0000000001000019000005d300010430000000400100043d0000006402100039000001bc0300004100000000003204350000004402100039000001bd03000041000000000032043500000024021000390000002503000039000005800000013d000000400100043d0000006402100039000001ba0300004100000000003204350000004402100039000001bb03000041000000000032043500000024021000390000002303000039000005800000013d000000400100043d0000006402100039000001b80300004100000000003204350000004402100039000001b903000041000000000032043500000024021000390000002603000039000000000032043500000199020000410000000000210435000000040210003900000020030000390000000000320435000001760010009c00000176010080410000004001100210000001a2011001c7000005d3000104300000000501000039000000000101041a0000017c011001970000000002000411000000000021004b000005920000c13d000000000001042d000000400100043d0000004402100039000001a50300004100000000003204350000019902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001760010009c00000176010080410000004001100210000001aa011001c7000005d300010430000000000001042f000001760010009c000001760100804100000060011002100000000002000414000001760020009c0000017602008041000000c002200210000000000112019f0000017d011001c7000080100200003905d105cc0000040f0000000100200190000005b20000613d000000000101043b000000000001042d0000000001000019000005d300010430000001ab020000410000000000200439000000050110027000000000020100310000000400200443000000010101003100000024001004430000000001000414000001760010009c0000017601008041000000c001100210000001ac011001c7000080050200003905d105cc0000040f0000000100200190000005c60000613d000000000101043b000000000001042d000000000001042f000005ca002104210000000102000039000000000001042d0000000002000019000000000001042d000005cf002104230000000102000039000000000001042d0000000002000019000000000001042d000005d100000432000005d20001042e000005d300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000020000000000000000000000000000008000000100000000000000000000000000000000000000000000000000000000000000000000000000579158960000000000000000000000000000000000000000000000000000000095d89b4000000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000579158970000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000023b872dc0000000000000000000000000000000000000000000000000000000034fcf4360000000000000000000000000000000000000000000000000000000034fcf4370000000000000000000000000000000000000000000000000000000039509351000000000000000000000000000000000000000000000000000000003ba0b9a90000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000007a2d13a08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7700000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f20616464726573730045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f2061640000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","exchangeRate()":"3ba0b9a9","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setRate(uint256)":"34fcf437","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"hash":"010001bf2ac62f9605b6f66ee9c2f1a7cac1d351eda0c0c4fb9a5c6e4cf2f646","factoryDependencies":{}}},"contracts/test/MockSimpleOracle.sol":{"MockBoundValidator":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"pass","type":"bool"}],"name":"setValidateResult","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"twapUpdated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"reporterPrice","type":"uint256"},{"internalType":"uint256","name":"anchorPrice","type":"uint256"}],"name":"validateAssetPriceWithAnchorPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"},{"internalType":"uint256","name":"reporterPrice","type":"uint256"},{"internalType":"uint256","name":"anchorPrice","type":"uint256"}],"name":"validatePriceWithAnchorPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validateResults","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"pass\",\"type\":\"bool\"}],\"name\":\"setValidateResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"twapUpdated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reporterPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validateAssetPriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reporterPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validatePriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"validateResults\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockSimpleOracle.sol\":\"MockBoundValidator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/test/MockSimpleOracle.sol\":{\"keccak256\":\"0xe9ca8d3be0fae48300418056a31f28bce0dee027117e2dda3e7bf6d27f691453\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e90c76fba4ea92e83a2ffcfe702ee40a80b5815f63e8512b1460dea62c7bfb2f\",\"dweb:/ipfs/QmeVLnskhySaqdQAE6Gf8QvG48hGTNwXVqjoVyxyUAHcst\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":9560,"contract":"contracts/test/MockSimpleOracle.sol:MockBoundValidator","label":"validateResults","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":9562,"contract":"contracts/test/MockSimpleOracle.sol:MockBoundValidator","label":"twapUpdated","offset":0,"slot":"1","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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"}}},"evm":{"bytecode":{"object":"00010000000000020000008003000039000000400030043f00000001002001900000001a0000c13d000000000201001900000060022002700000001e02200197000000040020008c000000540000413d000000000301043b000000e003300270000000200030009c000000220000a13d000000210030009c000000400000613d000000220030009c000000450000613d000000230030009c000000540000c13d000000240020008c000000540000413d0000000002000416000000000002004b000000540000c13d000000500000013d0000000001000416000000000001004b000000540000c13d0000002001000039000001000010044300000120000004430000001f01000041000000730001042e000000240030009c0000004b0000613d000000250030009c000000540000c13d000000440020008c000000540000413d0000000002000416000000000002004b000000540000c13d0000000402100370000000000202043b000000260020009c000000540000213d0000002401100370000000000301043b000000000003004b0000000001000019000000010100c039000000000013004b000000540000c13d0000000000200435000000200000043f000100000003001d007200600000040f000000000201041a000000280220019700000001022001af000000000021041b0000000001000019000000730001042e0000000001000416000000000001004b000000540000c13d0000000101000039000000590000013d000000640020008c000000540000413d0000000002000416000000000002004b000000540000c13d000000500000013d000000640020008c000000540000413d0000000002000416000000000002004b000000540000c13d0000000401100370000000000101043b000000260010009c000000560000a13d000000000100001900000074000104300000000000100435000000200000043f007200600000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f0000002701000041000000730001042e00000000010004140000001e0010009c0000001e01008041000000c00110021000000029011001c700008010020000390072006d0000040f00000001002001900000006b0000613d000000000101043b000000000001042d0000000001000019000000740001043000000070002104230000000102000039000000000001042d0000000002000019000000000001042d0000007200000432000000730001042e000000740001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008146bf7e000000000000000000000000000000000000000000000000000000008146bf7f0000000000000000000000000000000000000000000000000000000097c7033e00000000000000000000000000000000000000000000000000000000a050bcb30000000000000000000000000000000000000000000000000000000028d0ef670000000000000000000000000000000000000000000000000000000079c5e512000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"setValidateResult(address,bool)":"79c5e512","twapUpdated()":"8146bf7f","validateAssetPriceWithAnchorPrice(address,uint256,uint256)":"28d0ef67","validatePriceWithAnchorPrice(address,uint256,uint256)":"97c7033e","validateResults(address)":"a050bcb3"}},"hash":"0100002b8fd0f60bf77a2f8c6c61fe172d15e9e65033baedc730a39247631e1f","factoryDependencies":{}},"MockSimpleOracle":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockSimpleOracle.sol\":\"MockSimpleOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/test/MockSimpleOracle.sol\":{\"keccak256\":\"0xe9ca8d3be0fae48300418056a31f28bce0dee027117e2dda3e7bf6d27f691453\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e90c76fba4ea92e83a2ffcfe702ee40a80b5815f63e8512b1460dea62c7bfb2f\",\"dweb:/ipfs/QmeVLnskhySaqdQAE6Gf8QvG48hGTNwXVqjoVyxyUAHcst\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":9511,"contract":"contracts/test/MockSimpleOracle.sol:MockSimpleOracle","label":"prices","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020000008003000039000000400030043f0000000100200190000000180000c13d000000000201001900000060022002700000001a02200197000000040020008c000000460000413d000000000301043b000000e0033002700000001c0030009c000000200000213d0000001f0030009c0000002a0000613d000000200030009c000000460000c13d000000240020008c000000460000413d0000000002000416000000000002004b000000420000613d000000460000013d0000000001000416000000000001004b000000460000c13d0000002001000039000001000010044300000120000004430000001b01000041000000620001042e0000001d0030009c0000003d0000613d0000001e0030009c000000460000c13d000000240020008c000000460000413d0000000002000416000000000002004b000000460000c13d000000420000013d000000440020008c000000460000413d0000000002000416000000000002004b000000460000c13d0000000402100370000000000202043b000000210020009c000000460000213d0000000000200435000000200000043f0000002401100370000000000101043b000100000001001d0061004f0000040f0000000102000029000000000021041b0000000001000019000000620001042e000000240020008c000000460000413d0000000002000416000000000002004b000000460000c13d0000000401100370000000000101043b000000210010009c000000480000a13d000000000100001900000063000104300000000000100435000000200000043f0061004f0000040f000000000101041a000000800010043f0000002201000041000000620001042e00000000010004140000001a0010009c0000001a01008041000000c00110021000000023011001c700008010020000390061005c0000040f00000001002001900000005a0000613d000000000101043b000000000001042d000000000100001900000063000104300000005f002104230000000102000039000000000001042d0000000002000019000000000001042d0000006100000432000000620001042e0000006300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000cfed246a00000000000000000000000000000000000000000000000000000000cfed246b00000000000000000000000000000000000000000000000000000000fc57d4df0000000000000000000000000000000000000000000000000000000000e4768b0000000000000000000000000000000000000000000000000000000041976e09000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"getPrice(address)":"41976e09","getUnderlyingPrice(address)":"fc57d4df","prices(address)":"cfed246b","setPrice(address,uint256)":"00e4768b"}},"hash":"01000025f77ab170aff63dd8c5813aaa1f8efbfc844e974c1efe6c1193e64733","factoryDependencies":{}}},"contracts/test/MockV3Aggregator.sol":{"MockV3Aggregator":{"abi":[{"inputs":[{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"int256","name":"_initialAnswer","type":"int256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_answer","type":"int256"}],"name":"updateAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"},{"internalType":"int256","name":"_answer","type":"int256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"uint256","name":"_startedAt","type":"uint256"}],"name":"updateRoundData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"_initialAnswer\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"int256\",\"name\":\"current\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"AnswerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"startedBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"}],\"name\":\"NewRound\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"_answer\",\"type\":\"int256\"}],\"name\":\"updateAnswer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"_answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startedAt\",\"type\":\"uint256\"}],\"name\":\"updateRoundData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MockV3Aggregator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Based on the FluxAggregator contractUse this contract when you need to test other contract's ability to read data from an aggregator contract, but how the aggregator got its answer is unimportant\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockV3Aggregator.sol\":\"MockV3Aggregator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"contracts/test/MockV3Aggregator.sol\":{\"keccak256\":\"0x5e95134f7ca90239285524bc006c0d993aa6735d2bc758435a80e966fdad6bd9\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e62efa45960dcc474f9daefc7e3638206df8837a9e20a43abfd45fc4e38db0bc\",\"dweb:/ipfs/QmcU2uCwKwzFKjV1QrpFnpZhMBZshkmHua3GQieJECVCn9\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"title":"MockV3Aggregator","version":1},"userdoc":{"kind":"user","methods":{},"notice":"Based on the FluxAggregator contractUse this contract when you need to test other contract's ability to read data from an aggregator contract, but how the aggregator got its answer is unimportant","version":1},"storageLayout":{"storage":[{"astId":9624,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"decimals","offset":0,"slot":"0","type":"t_uint8"},{"astId":9626,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"latestAnswer","offset":0,"slot":"1","type":"t_int256"},{"astId":9628,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"latestTimestamp","offset":0,"slot":"2","type":"t_uint256"},{"astId":9630,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"latestRound","offset":0,"slot":"3","type":"t_uint256"},{"astId":9634,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"getAnswer","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_int256)"},{"astId":9638,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"getTimestamp","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_uint256)"},{"astId":9642,"contract":"contracts/test/MockV3Aggregator.sol:MockV3Aggregator","label":"getStartedAt","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_int256":{"encoding":"inplace","label":"int256","numberOfBytes":"32"},"t_mapping(t_uint256,t_int256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => int256)","numberOfBytes":"32","value":"t_int256"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0003000000000002000000000801034f000000000108001900000060011002700000006a0110019700000001002001900000001c0000c13d0000008002000039000000400020043f000000040010008c000000420000413d000000000208043b000000e0022002700000006f0020009c000000440000213d000000770020009c000000850000213d0000007b0020009c000000e00000613d0000007c0020009c000000e80000613d0000007d0020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000101000039000001690000013d0000000002000416000000000002004b000000420000c13d0000001f021000390000006b022001970000008002200039000000400020043f0000001f0210018f00000005031002720000002e0000613d000000800400003900000005053002100000008005500039000000000608034f000000006706043c0000000004740436000000000054004b0000002a0000c13d000000000002004b0000003d0000613d0000000503300210000000000438034f00000003022002100000008003300039000000000503043300000000052501cf000000000525022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f0000000000230435000000400010008c000000420000413d000000800100043d000000ff0010008c0000009e0000a13d0000000001000019000001a600010430000000700020009c000000be0000213d000000740020009c0000011d0000613d000000750020009c000001220000613d000000760020009c000000420000c13d000000240010008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401800370000000000201043b0000000101000039000300000002001d000000000021041b0000006c01000041000000000010043900000000010004140000006a0010009c0000006a01008041000000c0011002100000006d011001c70000800b0200003901a4019f0000040f0000000100200190000000df0000613d000000000201043b0000000201000039000000000021041b0000000303000039000000000103041a000000010110003a000000b80000613d000000000013041b00000000001004350000000401000039000000200010043f0000004001000039000200000002001d01a4018e0000040f0000000302000029000000000021041b0000000301000039000000000101041a00000000001004350000000501000039000000200010043f000000400100003901a4018e0000040f0000000202000029000000000021041b0000000301000039000000000101041a00000000001004350000000601000039000000200010043f000000400100003901a4018e0000040f0000000202000029000000000021041b0000000001000019000001a50001042e000000780020009c000001480000613d000000790020009c0000014e0000613d0000007a0020009c000000420000c13d0000000001000416000000000001004b000000420000c13d000000c001000039000000400010043f0000001f01000039000000800010043f0000008302000041000000a00020043f0000002002000039000000c00020043f000000e00010043f000001000100043d000000ff0110018f00000083011001c7000001000010043f0000011f0000043f0000008401000041000001a50001042e000000000300041a0000008502300197000000000112019f000000a00200043d000000000010041b0000000101000039000300000002001d000000000021041b0000006c01000041000000000010043900000000010004140000006a0010009c0000006a01008041000000c0011002100000006d011001c70000800b0200003901a4019f0000040f0000000100200190000000df0000613d000000000201043b0000000201000039000000000021041b0000000303000039000000000103041a000000010110003a0000016d0000c13d000000810100004100000000001004350000001101000039000000040010043f0000008201000041000001a600010430000000710020009c000001530000613d000000720020009c0000015d0000613d000000730020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000301000039000000000101041a000300000001001d00000000001004350000000401000039000000200010043f000000400100003901a4018e0000040f000000000101041a000200000001001d0000000601000039000000200010043f000000400100003901a4018e0000040f000000000101041a000100000001001d0000000501000039000000200010043f000000400100003901a4018e0000040f00000003020000290000007e02200197000000000101041a0000013f0000013d000000000001042f0000000001000416000000000001004b000000420000c13d000000000100041a000000ff0110018f000000800010043f0000008001000041000001a50001042e000000840010008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401800370000000000101043b0000007e0010009c000000420000213d0000004402800370000000000302043b000300000003001d0000002402800370000000000402043b000100000004001d0000000302000039000000000012041b0000000102000039000000000042041b0000000202000039000000000032041b00000000001004350000000401000039000000200010043f0000004001000039000200000008035301a4018e0000040f0000000102000029000000000021041b0000000301000039000000000101041a00000000001004350000000501000039000000200010043f000000400100003901a4018e0000040f0000000302000029000000000021041b0000000301000039000000000101041a00000000001004350000000601000039000000200010043f000000020100035f0000006401100370000000000101043b000300000001001d000000400100003901a4018e0000040f0000000302000029000000000021041b0000000001000019000001a50001042e0000000001000416000000000001004b000000420000c13d0000000201000039000001690000013d000000240010008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401800370000000000101043b0000007e0010009c000000420000213d0000000000100435000300000001001d0000000401000039000000200010043f000000400100003901a4018e0000040f000000000101041a000200000001001d0000000601000039000000200010043f000000400100003901a4018e0000040f000000000101041a000100000001001d0000000501000039000000200010043f000000400100003901a4018e0000040f000000000101041a0000000302000029000000800020043f0000000203000029000000a00030043f0000000103000029000000c00030043f000000e00010043f000001000020043f0000007f01000041000001a50001042e0000000001000416000000000001004b000000420000c13d000000800000043f0000008001000041000001a50001042e0000000001000416000000000001004b000000420000c13d0000000301000039000001690000013d000000240010008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401800370000000000101043b00000000001004350000000401000039000001660000013d000000240010008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401800370000000000101043b00000000001004350000000501000039000000200010043f000000400100003901a4018e0000040f000000000101041a000000800010043f0000008001000041000001a50001042e000000000013041b00000000001004350000000401000039000000200010043f0000004001000039000200000002001d01a4018e0000040f0000000302000029000000000021041b0000000301000039000000000101041a00000000001004350000000501000039000000200010043f000000400100003901a4018e0000040f0000000202000029000000000021041b0000000301000039000000000101041a00000000001004350000000601000039000000200010043f000000400100003901a4018e0000040f0000000202000029000000000021041b0000002001000039000001000010044300000120000004430000006e01000041000001a50001042e000000000001042f0000006a0010009c0000006a01008041000000600110021000000000020004140000006a0020009c0000006a02008041000000c002200210000000000112019f00000086011001c7000080100200003901a4019f0000040f00000001002001900000019d0000613d000000000101043b000000000001042d0000000001000019000001a600010430000001a2002104230000000102000039000000000001042d0000000002000019000000000001042d000001a400000432000001a50001042e000001a600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008205bf6900000000000000000000000000000000000000000000000000000000b5ab58db00000000000000000000000000000000000000000000000000000000b5ab58dc00000000000000000000000000000000000000000000000000000000b633620c00000000000000000000000000000000000000000000000000000000feaf968c000000000000000000000000000000000000000000000000000000008205bf6a000000000000000000000000000000000000000000000000000000009a6fc8f500000000000000000000000000000000000000000000000000000000a87a20ce0000000000000000000000000000000000000000000000000000000054fd4d4f0000000000000000000000000000000000000000000000000000000054fd4d5000000000000000000000000000000000000000000000000000000000668a0f02000000000000000000000000000000000000000000000000000000007284e41600000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004aa2011f0000000000000000000000000000000000000000000000000000000050d25bcd00000000000000000000000000000000000000000000ffffffffffffffffffff00000000000000000000000000000000000000a000000080000000000000000000000000000000000000000000000000000000200000008000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000076302e362f74657374732f4d6f636b563341676772656761746f722e736f6c000000000000000000000000000000000000000060000000c00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000200000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getAnswer(uint256)":"b5ab58dc","getRoundData(uint80)":"9a6fc8f5","getTimestamp(uint256)":"b633620c","latestAnswer()":"50d25bcd","latestRound()":"668a0f02","latestRoundData()":"feaf968c","latestTimestamp()":"8205bf6a","updateAnswer(int256)":"a87a20ce","updateRoundData(uint80,int256,uint256,uint256)":"4aa2011f","version()":"54fd4d50"}},"hash":"01000087b9a1a94320ce72d539060ad69c1c85d48ac7266db2bd2216023862aa","factoryDependencies":{}}},"contracts/test/MockWBETH.sol":{"MockWBETH":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setExchangeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setExchangeRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockWBETH.sol\":\"MockWBETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/interfaces/IWBETH.sol\":{\"keccak256\":\"0xaff923809f41bf7bc321d5285ddf2c03856a3cf0050c005154e31e811161d7db\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://9d16862f49fdc93dc8bef402b8489460e013b4c2f742f3f788c95b91deabe957\",\"dweb:/ipfs/QmRQf8kduAB81ZLp3f88YAzzZ8MLZBzpp3pNtKNk78z34h\"]},\"contracts/test/MockWBETH.sol\":{\"keccak256\":\"0xf773f0b8ff5b722fec7922da98c574203d0c5c0c5dcff3be4bfae5e006d836eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daf5666a826e2bcce91dcf07c19542f8877b7ee9c8c1a3b95356c6ff835ed6b7\",\"dweb:/ipfs/QmPr5kCGpjAGUUPZcBhE3CzscLYFWCa1DMcrSnsZGGqmoN\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":1101,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"_owner","offset":0,"slot":"5","type":"t_address"},{"astId":9827,"contract":"contracts/test/MockWBETH.sol:MockWBETH","label":"exchangeRate","offset":0,"slot":"6","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020009000000000002000000000801034f00000000000803550000000001080019000000600110027000000166011001970000000100200190000000380000c13d0000008002000039000000400020043f000000040010008c0000005b0000413d000000000208043b000000e002200270000001700020009c000000760000a13d000001710020009c0000008c0000a13d000001720020009c000001830000a13d000001730020009c000001fa0000613d000001740020009c000001b10000613d000001750020009c0000005b0000c13d000000240010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000601043b0000016c0060009c0000005b0000213d0000000501000039000000000201041a0000016c032001970000000005000411000000000053004b000002460000c13d000000000006004b000003170000c13d0000018801000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000018901000041000000c40010043f0000018a01000041000000e40010043f0000018b010000410000059600010430000000a002000039000000400020043f0000000003000416000000000003004b0000005b0000c13d0000001f031000390000016703300197000000a003300039000000400030043f0000001f0310018f000000050410027200000005044002100000004b0000613d000000a005400039000000000608034f000000006706043c0000000002720436000000000052004b000000470000c13d000000000003004b000000590000613d000000000248034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f0000000000240435000000600010008c0000005d0000813d00000000010000190000059600010430000000a00400043d000001680040009c0000005b0000213d0000001f02400039000000000012004b000000000300001900000169030080410000016902200197000000000002004b00000000050000190000016905004041000001690020009c000000000503c019000000000005004b0000005b0000c13d000000a0024000390000000003020433000001680030009c000000dd0000a13d000001980100004100000000001004350000004101000039000000040010043f000001990100004100000596000104300000017d0020009c000000a70000213d000001830020009c000001240000213d000001860020009c000001ca0000613d000001870020009c0000005b0000c13d000000440010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000201043b0000016c0020009c0000005b0000213d0000002401800370000000000301043b0000000001000411059404840000040f000001940000013d000001780020009c000001080000213d0000017b0020009c0000019c0000613d0000017c0020009c0000005b0000c13d0000000001000416000000000001004b0000005b0000c13d0000000501000039000000000201041a0000016c032001970000000005000411000000000053004b000002460000c13d0000016b02200197000000000021041b0000000001000414000001660010009c0000016601008041000000c0011002100000016d011001c70000800d0200003900000003030000390000016e040000410000000006000019000003220000013d0000017e0020009c0000016b0000213d000001810020009c000001df0000613d000001820020009c0000005b0000c13d000000440010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000101043b000700000001001d0000016c0010009c0000005b0000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c7000080100200003900060000000803530594058f0000040f000000060300035f00000001002001900000005b0000613d000000000101043b00000007020000290000000000200435000000200010043f0000002401300370000000000101043b000600000001001d0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b000000000101041a0000000602000029000000000021001a000004450000413d0000000003210019000002e20000013d0000001f023000390000019d022001970000003f022000390000019d02200197000000400600043d0000000005260019000000000065004b00000000020000190000000102004039000001680050009c000000700000213d0000000100200190000000700000c13d000000a002100039000000400050043f000600000006001d0000000005360436000700000005001d000000c0044000390000000005430019000000000025004b0000005b0000213d0000019d063001970000001f0530018f000000070b0000290000000000b4004b0000024f0000813d000000000006004b000001040000613d000000000854001900000000075b0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000fe0000c13d000000000005004b000002690000613d00000000070b00190000025f0000013d000001790020009c000001a80000613d0000017a0020009c0000005b0000c13d0000000001000416000000000001004b0000005b0000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001d90000c13d000000800010043f000000000005004b000002d90000c13d0000019e01200197000000a00010043f000000000004004b000000c001000039000000a001006039000002f80000013d000001840020009c000001ed0000613d000001850020009c0000005b0000c13d000000640010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000101043b000700000001001d0000016c0010009c0000005b0000213d0000002401800370000000000101043b000600000001001d0000016c0010009c0000005b0000213d0000004401800370000000000101043b000500000001001d000000070100002900000000001004350000000101000039000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b000000000101041a0000019f0010009c0000038c0000613d000000050310006c000003890000813d000000400100043d00000044021000390000019a03000041000000000032043500000024021000390000001d03000039000000000032043500000188020000410000000000210435000000040210003900000020030000390000000000320435000001660010009c000001660100804100000040011002100000019b011001c700000596000104300000017f0020009c000001f20000613d000001800020009c0000005b0000c13d000000240010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000401043b0000000003000411000000000003004b000002b10000c13d0000018801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000019701000041000000c40010043f00000195010000410000059600010430000001760020009c000002070000613d000001770020009c0000005b0000c13d000000440010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000201043b0000016c0020009c0000005b0000213d0000002401800370000000000301043b0000000001000411059404db0000040f0000000101000039000000400200043d0000000000120435000001660020009c000001660200804100000040012002100000018d011001c7000005950001042e000000240010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000101043b0000016c0010009c0000005b0000213d0000000000100435000000200000043f000001c70000013d0000000001000416000000000001004b0000005b0000c13d0000000501000039000000000101041a0000016c01100197000000800010043f0000018c01000041000005950001042e000000440010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000101043b0000016c0010009c0000005b0000213d0000002402800370000000000202043b000700000002001d0000016c0020009c0000005b0000213d00000000001004350000000101000039000000200010043f0000004001000039059405660000040f00000007020000290000000000200435000000200010043f0000004001000039059405660000040f000001f60000013d0000000001000416000000000001004b0000005b0000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000002a80000613d000001980100004100000000001004350000002201000039000000040010043f000001990100004100000596000104300000000001000416000000000001004b0000005b0000c13d0000000001000412000900000001001d000800000000001d0000000001000415000000090110008a0000000501100210059405770000040f000000ff0110018f000000800010043f0000018c01000041000005950001042e0000000001000416000000000001004b0000005b0000c13d0000000201000039000001f60000013d0000000001000416000000000001004b0000005b0000c13d0000000601000039000000000101041a000000800010043f0000018c01000041000005950001042e000000240010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0594054e0000040f00000004010000390000000001100367000000000101043b0000000602000039000000000012041b0000000001000019000005950001042e000000440010008c0000005b0000413d0000000001000416000000000001004b0000005b0000c13d0000000401800370000000000101043b000700000001001d0000016c0010009c0000005b0000213d0000002401800370000000000101043b000600000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b000000000101041a000000060310006c000002e20000813d000000400100043d00000064021000390000018f03000041000000000032043500000044021000390000019003000041000000000032043500000024021000390000002503000039000000000032043500000188020000410000000000210435000000040210003900000020030000390000000000320435000001660010009c0000016601008041000000400110021000000191011001c700000596000104300000018801000041000000800010043f0000002001000039000000840010043f000000a40010043f0000019401000041000000c40010043f00000195010000410000059600010430000000000006004b0000025b0000613d000000200760008a0000019d077001970000000007b700190000002007700039000000000804001900000000090b0019000000008a0804340000000009a90436000000000079004b000002570000c13d000000000005004b000002690000613d00000000076b001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033b00190000000000030435000000c00300043d000001680030009c0000005b0000213d0000001f04300039000000000014004b000000000100001900000169010080410000016904400197000000000004004b00000000050000190000016905004041000001690040009c000000000501c019000000000005004b0000005b0000c13d000000a0013000390000000001010433000001680010009c000000700000213d0000001f041000390000019d044001970000003f044000390000019d04400197000000400600043d0000000004460019000000000064004b00000000050000190000000105004039000001680040009c000000700000213d0000000100500190000000700000c13d000000400040043f000400000006001d0000000004160436000500000004001d000000c0033000390000000004310019000000000024004b0000005b0000213d0000019d041001970000001f0210018f0000000509000029000000000093004b000003270000813d000000000004004b000002a40000613d00000000062300190000000005290019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c0000029e0000c13d000000000002004b000003410000613d0000000005090019000003370000013d000000800010043f000000000005004b000002dd0000c13d0000019e01200197000000a00010043f000000000004004b000000c001000039000000a001006039000003040000013d0000000201000039000000000201041a000000000042001a000004450000413d000700000004001d0000000002420019000000000021041b0000000000300435000000200000043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000000101043b000000000201041a00000007030000290000000002320019000000000021041b000000400100043d0000000000310435000001660010009c000001660100804100000040011002100000000002000414000001660020009c0000016602008041000000c002200210000000000112019f0000016a011001c70000800d020000390000000303000039000001960400004100000000050000190000000006000411000003220000013d0000000000300435000000020020008c000002ed0000813d000002e00000013d0000000000300435000000020020008c000002f90000813d0000002001000039000003080000013d00000000010004110000000702000029059404840000040f000000400100043d00000001020000390000000000210435000001660010009c000001660100804100000040011002100000018d011001c7000005950001042e000001920200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002ef0000413d000000c001300039000003040000013d0000019c0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002fb0000413d000000c001300039000000610110008a0000019d01100197000001930010009c000000700000213d0000008001100039000700000001001d000000400010043f00000080020000390594044b0000040f00000007020000290000000001210049000001660010009c00000166010080410000006001100210000001660020009c00000166020080410000004002200210000000000121019f000005950001042e0000016b02200197000000000262019f000000000021041b0000000001000414000001660010009c0000016601008041000000c0011002100000016d011001c70000800d0200003900000003030000390000016e040000410594058a0000040f00000001002001900000005b0000613d0000000001000019000005950001042e000000000004004b000003330000613d000000200540008a0000019d05500197000000000595001900000020055000390000000006030019000000000709001900000000680604340000000007870436000000000057004b0000032f0000c13d000000000002004b000003410000613d000000000549001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011900190000000000010435000000e00100043d000300000001001d000000ff0010008c0000005b0000213d00000006010000290000000001010433000001680010009c000000700000213d000200000001001d0000000301000039000000000101041a000000010210019000000001031002700000007f0330618f0000001f0030008c00000000010000190000000101002039000000000012004b000001d90000c13d000100000003001d000000200030008c000003750000413d000000030100003900000000001004350000000001000414000001660010009c0000016601008041000000c0011002100000016a011001c700008010020000390594058f0000040f00000001002001900000005b0000613d00000002030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003750000813d000000000002041b0000000102200039000000000012004b000003710000413d00000002010000290000001f0010008c000003910000a13d000000030100003900000000001004350000000001000414000001660010009c0000016601008041000000c0011002100000016a011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000200200008a0000000202200180000000000101043b0000039e0000c13d0000002003000039000003ab0000013d00000007010000290000000002000411059404840000040f000000070100002900000006020000290000000503000029059404db0000040f000002e50000013d000000020000006b0000000001000019000003960000613d00000007010000290000000001010433000000020400002900000003024002100000019f0220027f0000019f02200167000000000121016f0000000102400210000000000121019f000003b90000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000060600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003a40000c13d000000020020006c000003b60000813d00000002020000290000000302200210000000f80220018f0000019f0220027f0000019f0220016700000006033000290000000003030433000000000223016f000000000021041b0000000201000029000000010110021000000001011001bf0000000302000039000000000012041b00000004010000290000000001010433000700000001001d000001680010009c000000700000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000600000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000001d90000c13d0000000601000029000000200010008c000003eb0000413d000000040100003900000000001004350000000001000414000001660010009c0000016601008041000000c0011002100000016a011001c700008010020000390594058f0000040f00000001002001900000005b0000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000006010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003eb0000813d000000000002041b0000000102200039000000000012004b000003e70000413d00000007010000290000001f0010008c000003ff0000a13d000000040100003900000000001004350000000001000414000001660010009c0000016601008041000000c0011002100000016a011001c700008010020000390594058f0000040f00000001002001900000005b0000613d000000200200008a0000000702200180000000000101043b0000040c0000c13d0000002003000039000004190000013d000000070000006b0000000001000019000004040000613d00000005010000290000000001010433000000070400002900000003024002100000019f0220027f0000019f02200167000000000121016f0000000102400210000000000121019f000004270000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000040600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000004120000c13d000000070020006c000004240000813d00000007020000290000000302200210000000f80220018f0000019f0220027f0000019f0220016700000004033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001011001bf0000000402000039000000000012041b0000000501000039000000000201041a0000016b032001970000000006000411000000000363019f000000000031041b00000000010004140000016c05200197000001660010009c0000016601008041000000c0011002100000016d011001c70000800d0200003900000003030000390000016e040000410594058a0000040f00000001002001900000005b0000613d0000000301000029000000800010043f0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000016f01000041000005950001042e000001980100004100000000001004350000001101000039000000040010043f0000019901000041000005960001043000000020030000390000000003310436000000004202043400000000002304350000019d062001970000001f0520018f0000004001100039000000000014004b000004640000813d000000000006004b000004600000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000045a0000c13d000000000005004b0000047e0000613d0000000007010019000004740000013d000000000006004b000004700000613d000000200760008a0000019d077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b0000046c0000c13d000000000005004b0000047e0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f022000390000019d022001970000000001210019000000000001042d00030000000000020000016c01100198000004bd0000613d000200000003001d0003016c0020019c000004c70000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000001002001900000000303000029000004bb0000613d000000000101043b0000000000300435000000200010043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f00000003060000290000000100200190000004bb0000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001660010009c000001660100804100000040011002100000000002000414000001660020009c0000016602008041000000c002200210000000000112019f0000016a011001c70000800d020000390000000303000039000001a00400004100000001050000290594058a0000040f0000000100200190000004bb0000613d000000000001042d00000000010000190000059600010430000000400100043d0000006402100039000001a30300004100000000003204350000004402100039000001a403000041000000000032043500000024021000390000002403000039000004d00000013d000000400100043d0000006402100039000001a10300004100000000003204350000004402100039000001a203000041000000000032043500000024021000390000002203000039000000000032043500000188020000410000000000210435000000040210003900000020030000390000000000320435000001660010009c0000016601008041000000400110021000000191011001c700000596000104300004000000000002000400000003001d0000016c01100198000005260000613d0002016c0020019c000005300000613d000300000001001d0000000000100435000000200000043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f0000000100200190000005240000613d000000000101043b000000000101041a00010004001000740000053a0000413d00000003010000290000000000100435000000200000043f0000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f0000000100200190000005240000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001660010009c0000016601008041000000c0011002100000018e011001c700008010020000390594058f0000040f0000000100200190000005240000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001660010009c000001660100804100000040011002100000000002000414000001660020009c0000016602008041000000c002200210000000000112019f0000016a011001c70000800d0200003900000003030000390000019604000041000000030500002900000002060000290594058a0000040f0000000100200190000005240000613d000000000001042d00000000010000190000059600010430000000400100043d0000006402100039000001a90300004100000000003204350000004402100039000001aa03000041000000000032043500000024021000390000002503000039000005430000013d000000400100043d0000006402100039000001a70300004100000000003204350000004402100039000001a803000041000000000032043500000024021000390000002303000039000005430000013d000000400100043d0000006402100039000001a50300004100000000003204350000004402100039000001a603000041000000000032043500000024021000390000002603000039000000000032043500000188020000410000000000210435000000040210003900000020030000390000000000320435000001660010009c0000016601008041000000400110021000000191011001c700000596000104300000000501000039000000000101041a0000016c011001970000000002000411000000000021004b000005550000c13d000000000001042d000000400100043d0000004402100039000001940300004100000000003204350000018802000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001660010009c000001660100804100000040011002100000019b011001c70000059600010430000000000001042f000001660010009c000001660100804100000060011002100000000002000414000001660020009c0000016602008041000000c002200210000000000112019f0000016d011001c700008010020000390594058f0000040f0000000100200190000005750000613d000000000101043b000000000001042d00000000010000190000059600010430000001ab020000410000000000200439000000050110027000000000020100310000000400200443000000010101003100000024001004430000000001000414000001660010009c0000016601008041000000c001100210000001ac011001c700008005020000390594058f0000040f0000000100200190000005890000613d000000000101043b000000000001042d000000000001042f0000058d002104210000000102000039000000000001042d0000000002000019000000000001042d00000592002104230000000102000039000000000001042d0000000002000019000000000001042d0000059400000432000005950001042e0000059600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000002000000000000000000000000000000800000010000000000000000000000000000000000000000000000000000000000000000000000000070a0823000000000000000000000000000000000000000000000000000000000a457c2d600000000000000000000000000000000000000000000000000000000db068e0d00000000000000000000000000000000000000000000000000000000db068e0e00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a600000000000000000000000000000000000000000000000000000000313ce566000000000000000000000000000000000000000000000000000000003ba0b9a8000000000000000000000000000000000000000000000000000000003ba0b9a9000000000000000000000000000000000000000000000000000000005791589700000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000395093510000000000000000000000000000000000000000000000000000000018160ddc0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b308c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7700000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f2061646472657373004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f206164310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","exchangeRate()":"3ba0b9a9","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setExchangeRate(uint256)":"db068e0e","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"hash":"010001ad61abce751b9d49f48ce3f53191f6e084afdb26814e22fca7d2596868","factoryDependencies":{}}},"contracts/test/PancakePairHarness.sol":{"Math":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PancakePairHarness.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/PancakePairHarness.sol\":{\"keccak256\":\"0x745b3603309b8f6c73826777046e35321cdae207bcd9e87fa2fd7a6035c87037\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ca6dea03a5cbce4794fbeb15ffaeb1ca2b1b23850f4f570e9796c7d17105742f\",\"dweb:/ipfs/QmZmbRBEr7rcauV1N9QgATveQK6EFbN56QEPgbh4Ai6nFA\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}},"PancakePairHarness":{"abi":[{"inputs":[],"name":"currentBlockTimestamp","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance0","type":"uint256"},{"internalType":"uint256","name":"balance1","type":"uint256"},{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"currentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance1\",\"type\":\"uint256\"},{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"}],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PancakePairHarness.sol\":\"PancakePairHarness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/PancakePairHarness.sol\":{\"keccak256\":\"0x745b3603309b8f6c73826777046e35321cdae207bcd9e87fa2fd7a6035c87037\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ca6dea03a5cbce4794fbeb15ffaeb1ca2b1b23850f4f570e9796c7d17105742f\",\"dweb:/ipfs/QmZmbRBEr7rcauV1N9QgATveQK6EFbN56QEPgbh4Ai6nFA\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":10006,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"token0","offset":0,"slot":"0","type":"t_address"},{"astId":10008,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"token1","offset":0,"slot":"1","type":"t_address"},{"astId":10010,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"reserve0","offset":0,"slot":"2","type":"t_uint112"},{"astId":10012,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"reserve1","offset":14,"slot":"2","type":"t_uint112"},{"astId":10014,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"blockTimestampLast","offset":28,"slot":"2","type":"t_uint32"},{"astId":10016,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"price0CumulativeLast","offset":0,"slot":"3","type":"t_uint256"},{"astId":10018,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"price1CumulativeLast","offset":0,"slot":"4","type":"t_uint256"},{"astId":10020,"contract":"contracts/test/PancakePairHarness.sol:PancakePairHarness","label":"kLast","offset":0,"slot":"5","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint112":{"encoding":"inplace","label":"uint112","numberOfBytes":"14"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"evm":{"bytecode":{"object":"00050000000000020000008003000039000000400030043f0000000100200190000000690000c13d000000000201001900000060022002700000003e03200197000000040030008c000000cd0000413d000000000201043b000000e002200270000000400020009c000000710000a13d000000410020009c000000850000a13d000000420020009c0000008e0000613d000000430020009c000000bc0000613d000000440020009c000000cd0000c13d000000840030008c000000cd0000413d0000000002000416000000000002004b000000cd0000c13d0000002402100370000000000402043b0000000402100370000000000302043b0000004402100370000000000202043b0000004c0020009c000000cd0000213d0000006401100370000000000101043b0000004c0010009c000000cd0000213d0000004c0030009c000000cf0000213d0000004d0040009c000000cf0000813d000400000001001d000500000002001d000200000004001d000300000003001d0000000201000039000000000101041a000100000001001d0000004e01000041000000000010043900000000010004140000003e0010009c0000003e01008041000000c0011002100000004f011001c70000800b0200003900f400ef0000040f0000000100200190000000d90000613d00000004050000290000004c02500198000000000101043b00000005080000290000005f0000613d0000004c038001980000005f0000613d0000000104000029000000e00440027000000000044100490000003e044001980000005f0000613d0000007005500210000000500550019700000000062500d90000004d0060009c000000da0000c13d00000000053500d900000000054500a90000000306000039000000000706041a0000000005570019000000000056041b0000007005800210000000500550019700000000033500d90000004d0030009c000000da0000c13d00000000022500d900000000024200a90000000403000039000000000403041a0000000002240019000000000023041b000000e001100210000000020200002900000070022002100000005002200197000000000121019f00000003011001af0000000202000039000000000012041b0000000001000019000000f50001042e0000000001000416000000000001004b000000cd0000c13d0000002001000039000001000010044300000120000004430000003f01000041000000f50001042e000000470020009c0000007c0000213d0000004a0020009c000000960000613d0000004b0020009c000000cd0000c13d0000000001000416000000000001004b000000cd0000c13d000000000100041a000000c10000013d000000480020009c000000a40000613d000000490020009c000000cd0000c13d0000000001000416000000000001004b000000cd0000c13d0000000301000039000000c90000013d000000450020009c000000c50000613d000000460020009c000000cd0000c13d0000000001000416000000000001004b000000cd0000c13d0000000501000039000000c90000013d0000000001000416000000000001004b000000cd0000c13d00f400e10000040f0000003e01100197000000800010043f0000005701000041000000f50001042e0000000001000416000000000001004b000000cd0000c13d0000000201000039000000000101041a0000004c02100197000000800020043f00000070021002700000004c02200197000000a00020043f000000e001100270000000c00010043f0000005901000041000000f50001042e000000440030008c000000cd0000413d0000000002000416000000000002004b000000cd0000c13d0000000402100370000000000202043b000000560020009c000000cd0000213d0000002401100370000000000101043b000000560010009c000000cd0000213d000000000300041a0000005803300197000000000223019f000000000020041b0000000102000039000000000302041a0000005803300197000000000113019f000000000012041b0000000001000019000000f50001042e0000000001000416000000000001004b000000cd0000c13d0000000101000039000000000101041a0000005601100197000000800010043f0000005701000041000000f50001042e0000000001000416000000000001004b000000cd0000c13d0000000401000039000000000101041a000000800010043f0000005701000041000000f50001042e0000000001000019000000f6000104300000005301000041000000800010043f0000002001000039000000840010043f0000001301000039000000a40010043f0000005401000041000000c40010043f0000005501000041000000f600010430000000000001042f000000510100004100000000001004350000001101000039000000040010043f0000005201000041000000f600010430000000000001042f0000004e01000041000000000010043900000000010004140000003e0010009c0000003e01008041000000c0011002100000004f011001c70000800b0200003900f400ef0000040f0000000100200190000000ee0000613d000000000101043b000000000001042d000000000001042f000000f2002104230000000102000039000000000001042d0000000002000019000000000001042d000000f400000432000000f50001042e000000f600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000005a3d549200000000000000000000000000000000000000000000000000000000abf8127100000000000000000000000000000000000000000000000000000000abf8127200000000000000000000000000000000000000000000000000000000d21220a700000000000000000000000000000000000000000000000000000000d9fc83c6000000000000000000000000000000000000000000000000000000005a3d5493000000000000000000000000000000000000000000000000000000007464fc3d00000000000000000000000000000000000000000000000000000000485cc95400000000000000000000000000000000000000000000000000000000485cc955000000000000000000000000000000000000000000000000000000005909c0d5000000000000000000000000000000000000000000000000000000000902f1ac000000000000000000000000000000000000000000000000000000000dfe1681000000000000000000000000000000000000ffffffffffffffffffffffffffff0000000000000000000000000000000000010000000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000008c379a00000000000000000000000000000000000000000000000000000000050616e63616b6556323a204f564552464c4f57000000000000000000000000000000000000000000000000000000000000000064000000800000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000600000008000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"currentBlockTimestamp()":"abf81272","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","token0()":"0dfe1681","token1()":"d21220a7","update(uint256,uint256,uint112,uint112)":"d9fc83c6"}},"hash":"0100005b80667195c9370582eebfbe42cf0e9ad28fc6a616d9e4abf220ae26df","factoryDependencies":{}},"UQ112x112":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PancakePairHarness.sol\":\"UQ112x112\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/PancakePairHarness.sol\":{\"keccak256\":\"0x745b3603309b8f6c73826777046e35321cdae207bcd9e87fa2fd7a6035c87037\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://ca6dea03a5cbce4794fbeb15ffaeb1ca2b1b23850f4f570e9796c7d17105742f\",\"dweb:/ipfs/QmZmbRBEr7rcauV1N9QgATveQK6EFbN56QEPgbh4Ai6nFA\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"contracts/test/VBEP20Harness.sol":{"VBEP20Harness":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"underlying_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalsInternal","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalsInternal\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"underlying()\":{\"notice\":\"Underlying asset for this VToken\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/VBEP20Harness.sol\":\"VBEP20Harness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/test/BEP20Harness.sol\":{\"keccak256\":\"0xb4b7d79a2e90fdd03b321d83628154f566cd23d0287b205828c855933909c0c4\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://5267caaed8d44d6b3e884b6105d666380e998edac7768183e7fd8b4a4a1c7c9b\",\"dweb:/ipfs/QmdvBiq9u4DG1ub1asPaNqjhUZ4rem8bteLeSimPvUgjDh\"]},\"contracts/test/VBEP20Harness.sol\":{\"keccak256\":\"0x59a6467be8a911819dc94f22a328c3190bd88e3f641c1a2e93cf0e158268b9b5\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://69f21d68550be3e7fdc43fad45fd654c7f96056e852144d6b6ca1e25f6a24e6d\",\"dweb:/ipfs/QmZEPGv3VBeqcp2CN8KCo1B5JKM17f5YaAiFRxDHGxtwLQ\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{"underlying()":{"notice":"Underlying asset for this VToken"}},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":9014,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"decimalsInternal","offset":0,"slot":"5","type":"t_uint8"},{"astId":10194,"contract":"contracts/test/VBEP20Harness.sol:VBEP20Harness","label":"underlying","offset":1,"slot":"5","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"0008000000000002000000000801034f0000008003000039000000400030043f000000000108001900000060011002700000013f011001970000000100200190000000180000c13d000000040010008c000000390000413d000000000208043b000000e002200270000001480020009c0000003b0000213d000001520020009c0000009b0000a13d000001530020009c000000b80000213d000001560020009c0000010d0000613d000001570020009c000000bc0000613d000000390000013d0000000002000416000000000002004b000000390000c13d0000001f0210003900000140022001970000008002200039000000400020043f0000001f0210018f00000005041002720000000504400210000000290000613d0000008005400039000000000608034f000000006706043c0000000003730436000000000053004b000000250000c13d000000000002004b000000370000613d000000000348034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000800010008c000000820000813d0000000001000019000004f700010430000001490020009c000000a60000a13d0000014a0020009c000000c50000213d0000014d0020009c000001500000613d0000014e0020009c000000390000c13d000000440010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000101043b000800000001001d000001430010009c000000390000213d0000002401800370000000000101043b000700000001001d000000000100041100000000001004350000000101000039000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000000390000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000000390000613d000000000101043b000000000101041a000000070310006c000001970000813d000000400100043d00000064021000390000015e03000041000000000032043500000044021000390000015f030000410000000000320435000000240210003900000025030000390000000000320435000001600200004100000000002104350000000402100039000000200300003900000000003204350000013f0010009c0000013f01008041000000400110021000000161011001c7000004f700010430000000800400043d000001410040009c000000390000213d0000001f02400039000000000012004b000000000300001900000142030080410000014202200197000000000002004b00000000050000190000014205004041000001420020009c000000000503c019000000000005004b000000390000c13d00000080024000390000000003020433000001410030009c000000e50000a13d000001670100004100000000001004350000004101000039000000040010043f0000016801000041000004f700010430000001580020009c000001b00000613d000001590020009c000001d90000613d0000015a0020009c000000390000c13d0000000001000416000000000001004b000000390000c13d0000000201000039000000e10000013d0000014f0020009c000001c50000613d000001500020009c000001ee0000613d000001510020009c000000390000c13d000000240010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000101043b000001430010009c000000390000213d0000000000100435000000200000043f000000df0000013d000001540020009c000001680000613d000001550020009c000000390000c13d0000000001000416000000000001004b000000390000c13d0000000501000039000000000101041a000000ff0110018f000000800010043f0000015b01000041000004f60001042e0000014b0020009c000001a20000613d0000014c0020009c000000390000c13d000000440010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000101043b000001430010009c000000390000213d0000002402800370000000000202043b000001430020009c000000390000213d00000000001004350000000101000039000000200010043f0000004001000039000800000002001d04f504da0000040f00000008020000290000000000200435000000200010043f000000400100003904f504da0000040f000000000101041a000000800010043f0000015b01000041000004f60001042e0000001f023000390000016c022001970000003f022000390000016c02200197000000400c00043d00000000052c00190000000000c5004b00000000020000190000000102004039000001410050009c000000950000213d0000000100200190000000950000c13d0000008002100039000000400050043f000000000d3c0436000000a0044000390000000005430019000000000025004b000000390000213d0000016c063001970000001f0530018f0000000000d4004b0000022d0000813d000000000006004b000001090000613d000000000854001900000000075d0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000001030000c13d000000000005004b000002470000613d00000000070d00190000023d0000013d000000640010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000301043b000001430030009c000000390000213d0000002401800370000000000101043b000800000001001d000001430010009c000000390000213d0000004401800370000000000101043b000600000001001d00000000003004350000000101000039000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c70000801002000039000700000003001d04f504f00000040f0000000100200190000000390000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f00000007040000290000000100200190000000390000613d000000000101043b000000000101041a0000016d0010009c000003240000613d000000060310006c000003200000813d000000400100043d00000044021000390000016903000041000000000032043500000024021000390000001d030000390000000000320435000001600200004100000000002104350000000402100039000000200300003900000000003204350000013f0010009c0000013f0100804100000040011002100000016a011001c7000004f7000104300000000001000416000000000001004b000000390000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001bf0000c13d000000800010043f000000000005004b000002830000c13d0000016e01200197000000a00010043f000000000004004b000000c001000039000000a001006039000002970000013d000000440010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000101043b000800000001001d000001430010009c000000390000213d000000000100041100000000001004350000000101000039000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c70000801002000039000700000008035304f504f00000040f000000070300035f0000000100200190000000390000613d000000000101043b00000008020000290000000000200435000000200010043f0000002401300370000000000101043b000700000001001d00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000000390000613d000000000101043b000000000101041a0000000702000029000000000021001a000003d10000413d00000000032100190000000001000411000000080200002904f504100000040f000000400100043d000000010200003900000000002104350000013f0010009c0000013f0100804100000040011002100000015c011001c7000004f60001042e000000440010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000201043b000001430020009c000000390000213d0000002401800370000000000301043b000000000100041104f504670000040f000001e60000013d0000000001000416000000000001004b000000390000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001f80000613d000001670100004100000000001004350000002201000039000000040010043f0000016801000041000004f700010430000000240010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000401043b0000000003000411000000000003004b000002010000c13d0000016001000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000016501000041000000c40010043f0000016601000041000004f700010430000000440010008c000000390000413d0000000001000416000000000001004b000000390000c13d0000000401800370000000000201043b000001430020009c000000390000213d0000002401800370000000000301043b000000000100041104f504100000040f0000000101000039000000400200043d00000000001204350000013f0020009c0000013f0200804100000040012002100000015c011001c7000004f60001042e0000000001000416000000000001004b000000390000c13d0000000501000039000000000101041a00000008011002700000014301100197000000800010043f0000015b01000041000004f60001042e000000800010043f000000000005004b000002870000c13d0000016e01200197000000a00010043f000000000004004b000000c001000039000000a001006039000002a30000013d0000000201000039000000000201041a000000000042001a000003d10000413d000800000004001d0000000002420019000000000021041b0000000000300435000000200000043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000000390000613d000000000101043b000000000201041a00000008030000290000000002320019000000000021041b000000400100043d00000000003104350000013f0010009c0000013f01008041000000400110021000000000020004140000013f0020009c0000013f02008041000000c002200210000000000112019f00000144011001c70000800d02000039000000030300003900000164040000410000000005000019000000000600041104f504eb0000040f0000000100200190000000390000613d0000000001000019000004f60001042e000000000006004b000002390000613d000000200760008a0000016c077001970000000007d700190000002007700039000000000804001900000000090d0019000000008a0804340000000009a90436000000000079004b000002350000c13d000000000005004b000002470000613d00000000076d001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000033d00190000000000030435000000a00300043d000001410030009c000000390000213d0000001f04300039000000000014004b000000000100001900000142010080410000014204400197000000000004004b00000000050000190000014205004041000001420040009c000000000501c019000000000005004b000000390000c13d00000080013000390000000001010433000001410010009c000000950000213d0000001f041000390000016c044001970000003f044000390000016c04400197000000400900043d0000000004490019000000000094004b00000000050000190000000105004039000001410040009c000000950000213d0000000100500190000000950000c13d000000400040043f000000000a190436000000a0033000390000000004310019000000000024004b000000390000213d0000016c041001970000001f0210018f0000000000a3004b000002b60000813d000000000004004b0000027f0000613d000000000623001900000000052a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002790000c13d000000000002004b000002d00000613d00000000050a0019000002c60000013d0000000000300435000000020020008c0000028c0000813d0000028a0000013d0000000000300435000000020020008c000002980000813d0000002001000039000002a70000013d000001620200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000028e0000413d000000c001300039000002a30000013d0000016b0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000029a0000413d000000c001300039000000610110008a0000016c01100197000001630010009c000000950000213d0000008001100039000800000001001d000000400010043f000000800200003904f503d70000040f000000080200002900000000012100490000013f0010009c0000013f0100804100000060011002100000013f0020009c0000013f020080410000004002200210000000000121019f000004f60001042e000000000004004b000002c20000613d000000200540008a0000016c055001970000000005a500190000002005500039000000000603001900000000070a001900000000680604340000000007870436000000000057004b000002be0000c13d000000000002004b000002d00000613d00000000054a001900000000034300190000000302200210000000000405043300000000042401cf000000000424022f00000000030304330000010002200089000000000323022f00000000022301cf000000000242019f000000000025043500000000011a00190000000000010435000000c00100043d000000ff0010008c000000390000213d000000e00200043d000001430020009c000000390000213d000600000002001d00050000000a001d000700000001001d00000000010c0433000800000001001d000001410010009c000000950000213d00010000000d001d00020000000c001d000300000009001d0000000301000039000000000101041a000000010210019000000001011002700000007f0110618f000400000001001d0000001f0010008c00000000010000190000000101002039000000000012004b000001bf0000c13d0000000401000029000000200010008c0000030c0000413d0000000301000039000000000010043500000000010004140000013f0010009c0000013f01008041000000c00110021000000144011001c7000080100200003904f504f00000040f0000000100200190000000390000613d00000008030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000004010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000030c0000813d000000000002041b0000000102200039000000000012004b000003080000413d00000008010000290000001f0010008c000003290000a13d0000000301000039000000000010043500000000010004140000013f0010009c0000013f01008041000000c00110021000000144011001c7000080100200003904f504f00000040f0000000100200190000000200200008a000000390000613d0000000802200180000000000101043b000003360000c13d0000002003000039000003430000013d0000000001040019000000000200041104f504100000040f000000070400002900000000010400190000000802000029000000060300002904f504670000040f0000019a0000013d000000080000006b00000000010000190000032e0000613d00000001010000290000000001010433000000080400002900000003024002100000016d0220027f0000016d02200167000000000121016f0000000102400210000000000121019f000003510000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000020600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000033c0000c13d000000080020006c0000034e0000813d00000008020000290000000302200210000000f80220018f0000016d0220027f0000016d0220016700000002033000290000000003030433000000000223016f000000000021041b0000000801000029000000010110021000000001011001bf0000000302000039000000000012041b00000003010000290000000001010433000800000001001d000001410010009c000000950000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000400000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000001bf0000c13d0000000401000029000000200010008c000003830000413d0000000401000039000000000010043500000000010004140000013f0010009c0000013f01008041000000c00110021000000144011001c7000080100200003904f504f00000040f0000000100200190000000390000613d00000008030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000004010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003830000813d000000000002041b0000000102200039000000000012004b0000037f0000413d00000008010000290000001f0010008c000003970000a13d0000000401000039000000000010043500000000010004140000013f0010009c0000013f01008041000000c00110021000000144011001c7000080100200003904f504f00000040f0000000100200190000000200200008a000000390000613d0000000802200180000000000101043b000003a30000c13d0000002003000039000003b00000013d000000080000006b00000000010000190000039c0000613d00000005010000290000000001010433000000080400002900000003024002100000016d0220027f0000016d02200167000000000221016f0000000101400210000003be0000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000030600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000003a90000c13d000000080020006c000003bb0000813d00000008020000290000000302200210000000f80220018f0000016d0220027f0000016d0220016700000003033000290000000003030433000000000223016f000000000021041b000000010100003900000008020000290000000102200210000000000112019f0000000402000039000000000012041b0000000701000029000000ff0110018f000000060200002900000008022002100000014502200197000000000112019f0000000502000039000000000302041a0000014603300197000000000131019f000000000012041b0000002001000039000001000010044300000120000004430000014701000041000004f60001042e000001670100004100000000001004350000001101000039000000040010043f0000016801000041000004f70001043000000020030000390000000003310436000000004202043400000000002304350000016c062001970000001f0520018f0000004001100039000000000014004b000003f00000813d000000000006004b000003ec0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003e60000c13d000000000005004b0000040a0000613d0000000007010019000004000000013d000000000006004b000003fc0000613d000000200760008a0000016c077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000003f80000c13d000000000005004b0000040a0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f022000390000016c022001970000000001210019000000000001042d00030000000000020000014301100198000004490000613d000200000003001d000301430020019c000004530000613d000100000001001d00000000001004350000000101000039000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f00000001002001900000000303000029000004470000613d000000000101043b0000000000300435000000200010043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f00000003060000290000000100200190000004470000613d000000000101043b0000000202000029000000000021041b000000400100043d00000000002104350000013f0010009c0000013f01008041000000400110021000000000020004140000013f0020009c0000013f02008041000000c002200210000000000112019f00000144011001c70000800d0200003900000003030000390000016f04000041000000010500002904f504eb0000040f0000000100200190000004470000613d000000000001042d0000000001000019000004f700010430000000400100043d000000640210003900000172030000410000000000320435000000440210003900000173030000410000000000320435000000240210003900000024030000390000045c0000013d000000400100043d000000640210003900000170030000410000000000320435000000440210003900000171030000410000000000320435000000240210003900000022030000390000000000320435000001600200004100000000002104350000000402100039000000200300003900000000003204350000013f0010009c0000013f01008041000000400110021000000161011001c7000004f7000104300004000000000002000400000003001d0000014301100198000004b20000613d000201430020019c000004bc0000613d000300000001001d0000000000100435000000200000043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000004b00000613d000000000101043b000000000101041a0001000400100074000004c60000413d00000003010000290000000000100435000000200000043f00000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000004b00000613d000000000101043b0000000102000029000000000021041b0000000201000029000000000010043500000000010004140000013f0010009c0000013f01008041000000c0011002100000015d011001c7000080100200003904f504f00000040f0000000100200190000004b00000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000013f0010009c0000013f01008041000000400110021000000000020004140000013f0020009c0000013f02008041000000c002200210000000000112019f00000144011001c70000800d02000039000000030300003900000164040000410000000305000029000000020600002904f504eb0000040f0000000100200190000004b00000613d000000000001042d0000000001000019000004f700010430000000400100043d00000064021000390000017803000041000000000032043500000044021000390000017903000041000000000032043500000024021000390000002503000039000004cf0000013d000000400100043d00000064021000390000017603000041000000000032043500000044021000390000017703000041000000000032043500000024021000390000002303000039000004cf0000013d000000400100043d000000640210003900000174030000410000000000320435000000440210003900000175030000410000000000320435000000240210003900000026030000390000000000320435000001600200004100000000002104350000000402100039000000200300003900000000003204350000013f0010009c0000013f01008041000000400110021000000161011001c7000004f7000104300000013f0010009c0000013f01008041000000600110021000000000020004140000013f0020009c0000013f02008041000000c002200210000000000112019f0000017a011001c7000080100200003904f504f00000040f0000000100200190000004e90000613d000000000101043b000000000001042d0000000001000019000004f700010430000004ee002104210000000102000039000000000001042d0000000002000019000000000001042d000004f3002104230000000102000039000000000001042d0000000002000019000000000001042d000004f500000432000004f60001042e000004f700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000200000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff000000000000000000000000000000000000000000000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000579158960000000000000000000000000000000000000000000000000000000095d89b4000000000000000000000000000000000000000000000000000000000a9059cba00000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e0000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a457c2d70000000000000000000000000000000000000000000000000000000057915897000000000000000000000000000000000000000000000000000000006f307dc30000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000023b872dc00000000000000000000000000000000000000000000000000000000395093500000000000000000000000000000000000000000000000000000000039509351000000000000000000000000000000000000000000000000000000004511bf6b0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7708c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206d696e7420746f20746865207a65726f20616464726573730000000000000000000000000000000000000000640000008000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e63650000000000000000000000000000000000000000000064000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f2061640200000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decimalsInternal()":"4511bf6b","decreaseAllowance(address,uint256)":"a457c2d7","faucet(uint256)":"57915897","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"hash":"0100017b130504bc57c55da6b9df466e8c7c950f89541ee7e8f8a2a177e16dce","factoryDependencies":{}}},"contracts/test/oracles/MockCorrelatedTokenOracle.sol":{"MockCorrelatedTokenOracle":{"abi":[{"inputs":[{"internalType":"address","name":"correlatedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"},{"internalType":"address","name":"resilientOracle","type":"address"},{"internalType":"uint256","name":"annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"snapshotInterval","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"initialSnapshotTimestamp","type":"uint256"},{"internalType":"address","name":"accessControlManager","type":"address"},{"internalType":"uint256","name":"snapshotGap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGrowthRate","type":"error"},{"inputs":[],"name":"InvalidInitialSnapshot","type":"error"},{"inputs":[],"name":"InvalidSnapshotMaxExchangeRate","type":"error"},{"inputs":[],"name":"InvalidTokenAddress","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"calledContract","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newGrowthRatePerSecond","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldSnapshotInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSnapshotInterval","type":"uint256"}],"name":"GrowthRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldSnapshotGap","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSnapshotGap","type":"uint256"}],"name":"SnapshotGapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxExchangeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"inputs":[],"name":"ACCESS_CONTROL_MANAGER","outputs":[{"internalType":"contract IAccessControlManagerV8","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORRELATED_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESILIENT_ORACLE","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxAllowedExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthRatePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mockUnderlyingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualGrowthRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotInterval","type":"uint256"}],"name":"setGrowthRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMockUnderlyingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotMaxExchangeRate","type":"uint256"},{"internalType":"uint256","name":"_snapshotTimestamp","type":"uint256"}],"name":"setSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snapshotGap","type":"uint256"}],"name":"setSnapshotGap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshotGap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotMaxExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshotTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correlatedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resilientOracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSnapshotTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"accessControlManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"snapshotGap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidGrowthRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSnapshot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSnapshotMaxExchangeRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"calledContract\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newGrowthRatePerSecond\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSnapshotInterval\",\"type\":\"uint256\"}],\"name\":\"GrowthRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldSnapshotGap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newSnapshotGap\",\"type\":\"uint256\"}],\"name\":\"SnapshotGapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxExchangeRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SnapshotUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACCESS_CONTROL_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessControlManagerV8\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CORRELATED_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESILIENT_ORACLE\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxAllowedExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growthRatePerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockUnderlyingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_annualGrowthRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotInterval\",\"type\":\"uint256\"}],\"name\":\"setGrowthRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMockUnderlyingAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotMaxExchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_snapshotTimestamp\",\"type\":\"uint256\"}],\"name\":\"setSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_snapshotGap\",\"type\":\"uint256\"}],\"name\":\"setSnapshotGap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotMaxExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getMaxAllowedExchangeRate()\":{\"returns\":{\"_0\":\"maxExchangeRate Maximum allowed exchange rate\"}},\"getPrice(address)\":{\"custom:error\":\"InvalidTokenAddress error is thrown if the token address is invalid\",\"params\":{\"asset\":\"Address of the token\"},\"returns\":{\"_0\":\"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate\"}},\"getUnderlyingAmount()\":{\"returns\":{\"_0\":\"underlyingAmount Amount of underlying token\"}},\"isCapped()\":{\"returns\":{\"_0\":\"isCapped Boolean indicating if the price is capped\"}},\"setGrowthRate(uint256,uint256)\":{\"custom:error\":\"InvalidGrowthRate error is thrown if the growth rate is invalid\",\"custom:event\":\"Emits GrowthRateUpdated event on successful update of the growth rate\",\"params\":{\"_annualGrowthRate\":\"The annual growth rate to set\",\"_snapshotInterval\":\"The snapshot interval to set\"}},\"setSnapshot(uint256,uint256)\":{\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\",\"params\":{\"_snapshotMaxExchangeRate\":\"The exchange rate to set\",\"_snapshotTimestamp\":\"The timestamp to set\"}},\"setSnapshotGap(uint256)\":{\"custom:event\":\"Emits SnapshotGapUpdated event on successful update of the snapshot gap\",\"params\":{\"_snapshotGap\":\"The snapshot gap to set\"}},\"updateSnapshot()\":{\"custom:error\":\"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero\",\"custom:event\":\"Emits SnapshotUpdated event on successful update of the snapshot\"}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidGrowthRate()\":[{\"notice\":\"Thrown if the growth rate is invalid\"}],\"InvalidInitialSnapshot()\":[{\"notice\":\"Thrown if the initial snapshot is invalid\"}],\"InvalidSnapshotMaxExchangeRate()\":[{\"notice\":\"Thrown if the max snapshot exchange rate is invalid\"}],\"InvalidTokenAddress()\":[{\"notice\":\"Thrown if the token address is invalid\"}],\"Unauthorized(address,address,string)\":[{\"notice\":\"@notice Thrown when the action is prohibited by AccessControlManager\"}],\"ZeroAddressNotAllowed()\":[{\"notice\":\"Thrown if the supplied address is a zero address where it is not allowed\"}]},\"events\":{\"GrowthRateUpdated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when the growth rate is updated\"},\"SnapshotGapUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot gap is updated\"},\"SnapshotUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the snapshot is updated\"}},\"kind\":\"user\",\"methods\":{\"ACCESS_CONTROL_MANAGER()\":{\"notice\":\"Address of the AccessControlManager contract\"},\"CORRELATED_TOKEN()\":{\"notice\":\"Address of the correlated token\"},\"RESILIENT_ORACLE()\":{\"notice\":\"Address of Resilient Oracle\"},\"UNDERLYING_TOKEN()\":{\"notice\":\"Address of the underlying token\"},\"getMaxAllowedExchangeRate()\":{\"notice\":\"Gets the maximum allowed exchange rate for token\"},\"getPrice(address)\":{\"notice\":\"Fetches the price of the token\"},\"getUnderlyingAmount()\":{\"notice\":\"Gets the underlying amount for correlated token\"},\"isCapped()\":{\"notice\":\"Returns if the price is capped\"},\"setGrowthRate(uint256,uint256)\":{\"notice\":\"Sets the growth rate and snapshot interval\"},\"setSnapshot(uint256,uint256)\":{\"notice\":\"Directly sets the snapshot exchange rate and timestamp\"},\"setSnapshotGap(uint256)\":{\"notice\":\"Sets the snapshot gap\"},\"snapshotGap()\":{\"notice\":\"Gap to add when updating the snapshot\"},\"snapshotInterval()\":{\"notice\":\"Snapshot update interval\"},\"snapshotMaxExchangeRate()\":{\"notice\":\"Last stored snapshot maximum exchange rate\"},\"snapshotTimestamp()\":{\"notice\":\"Last stored snapshot timestamp\"},\"updateSnapshot()\":{\"notice\":\"Updates the snapshot price and timestamp\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/oracles/MockCorrelatedTokenOracle.sol\":\"MockCorrelatedTokenOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]},\"@venusprotocol/solidity-utilities/contracts/constants.sol\":{\"keccak256\":\"0x14de93ead464da249af31bea0e3bcfb62ec693bea3475fb4d90f055ac81dc5eb\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://6134b92b2bc5bad1c6e088d0d092736eede6dfe2cf7dadc573f1396a9d690274\",\"dweb:/ipfs/QmXwKV4SY7CdCaCaDqXudcLxVLB4vUfbwMiH9kH6HhWpiy\"]},\"@venusprotocol/solidity-utilities/contracts/validators.sol\":{\"keccak256\":\"0xdb88e14d50dd21889ca3329d755673d022c47e8da005b6a545c7f69c2c4b7b86\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://7fc4c2b30dabdce32229df72fd00fa49d5a813bea8a7717fe8481cc5896d4183\",\"dweb:/ipfs/QmZmxLnp3QSBahyRaUhezdVLPsTtXErghdLHpiGrkr19XJ\"]},\"contracts/interfaces/ICappedOracle.sol\":{\"keccak256\":\"0xad239e65b5e92b3486418c5ccca120247702251f9724cd96657c3cfdc7fedc31\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://c974a3f66c9a8ceb9c24c1b4cae48e86754c5dded9ba516927240f69d94ac83c\",\"dweb:/ipfs/QmPFvNnSbaygpXxpzGuRaz95sbeNGTWbrn3Mse4Sqb4tAB\"]},\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/oracles/common/CorrelatedTokenOracle.sol\":{\"keccak256\":\"0x808b444fa4d1d440dc43de290f1eb59a64646ce9085028b286fa30346305872e\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://09ce405ad192819fa2c771f81b6b3b7694385afdaa45d4c297cc2836b5ddf0b5\",\"dweb:/ipfs/QmaTRhiLYa2tYTTT6UhxHj8vrSdsK5fqGTpG76bTX9uyV1\"]},\"contracts/test/oracles/MockCorrelatedTokenOracle.sol\":{\"keccak256\":\"0xb54496dc92004b967806c7ad10cf2d1a2c2d2916efd306bb02f66dcbea7f28bd\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://d64b9ecf597f68b73f8b0a3000ace8961a2c35f1f15ea03b7b4224718eb8ab23\",\"dweb:/ipfs/Qma31GYVxCdQDeJuRSWhtyQDdNT8fQuR2YuTx51pyUJ3iu\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{"getMaxAllowedExchangeRate()":{"returns":{"_0":"maxExchangeRate Maximum allowed exchange rate"}},"getPrice(address)":{"custom:error":"InvalidTokenAddress error is thrown if the token address is invalid","params":{"asset":"Address of the token"},"returns":{"_0":"price The price of the token in scaled decimal places. It can be capped to a maximum value taking into account the growth rate"}},"getUnderlyingAmount()":{"returns":{"_0":"underlyingAmount Amount of underlying token"}},"isCapped()":{"returns":{"_0":"isCapped Boolean indicating if the price is capped"}},"setGrowthRate(uint256,uint256)":{"custom:error":"InvalidGrowthRate error is thrown if the growth rate is invalid","custom:event":"Emits GrowthRateUpdated event on successful update of the growth rate","params":{"_annualGrowthRate":"The annual growth rate to set","_snapshotInterval":"The snapshot interval to set"}},"setSnapshot(uint256,uint256)":{"custom:event":"Emits SnapshotUpdated event on successful update of the snapshot","params":{"_snapshotMaxExchangeRate":"The exchange rate to set","_snapshotTimestamp":"The timestamp to set"}},"setSnapshotGap(uint256)":{"custom:event":"Emits SnapshotGapUpdated event on successful update of the snapshot gap","params":{"_snapshotGap":"The snapshot gap to set"}},"updateSnapshot()":{"custom:error":"InvalidSnapshotMaxExchangeRate error is thrown if the max snapshot exchange rate is zero","custom:event":"Emits SnapshotUpdated event on successful update of the snapshot"}},"version":1},"userdoc":{"errors":{"InvalidGrowthRate()":[{"notice":"Thrown if the growth rate is invalid"}],"InvalidInitialSnapshot()":[{"notice":"Thrown if the initial snapshot is invalid"}],"InvalidSnapshotMaxExchangeRate()":[{"notice":"Thrown if the max snapshot exchange rate is invalid"}],"InvalidTokenAddress()":[{"notice":"Thrown if the token address is invalid"}],"Unauthorized(address,address,string)":[{"notice":"@notice Thrown when the action is prohibited by AccessControlManager"}],"ZeroAddressNotAllowed()":[{"notice":"Thrown if the supplied address is a zero address where it is not allowed"}]},"events":{"GrowthRateUpdated(uint256,uint256,uint256,uint256)":{"notice":"Emitted when the growth rate is updated"},"SnapshotGapUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot gap is updated"},"SnapshotUpdated(uint256,uint256)":{"notice":"Emitted when the snapshot is updated"}},"kind":"user","methods":{"ACCESS_CONTROL_MANAGER()":{"notice":"Address of the AccessControlManager contract"},"CORRELATED_TOKEN()":{"notice":"Address of the correlated token"},"RESILIENT_ORACLE()":{"notice":"Address of Resilient Oracle"},"UNDERLYING_TOKEN()":{"notice":"Address of the underlying token"},"getMaxAllowedExchangeRate()":{"notice":"Gets the maximum allowed exchange rate for token"},"getPrice(address)":{"notice":"Fetches the price of the token"},"getUnderlyingAmount()":{"notice":"Gets the underlying amount for correlated token"},"isCapped()":{"notice":"Returns if the price is capped"},"setGrowthRate(uint256,uint256)":{"notice":"Sets the growth rate and snapshot interval"},"setSnapshot(uint256,uint256)":{"notice":"Directly sets the snapshot exchange rate and timestamp"},"setSnapshotGap(uint256)":{"notice":"Sets the snapshot gap"},"snapshotGap()":{"notice":"Gap to add when updating the snapshot"},"snapshotInterval()":{"notice":"Snapshot update interval"},"snapshotMaxExchangeRate()":{"notice":"Last stored snapshot maximum exchange rate"},"snapshotTimestamp()":{"notice":"Last stored snapshot timestamp"},"updateSnapshot()":{"notice":"Updates the snapshot price and timestamp"}},"version":1},"storageLayout":{"storage":[{"astId":8076,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"growthRatePerSecond","offset":0,"slot":"0","type":"t_uint256"},{"astId":8079,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"snapshotInterval","offset":0,"slot":"1","type":"t_uint256"},{"astId":8082,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"snapshotMaxExchangeRate","offset":0,"slot":"2","type":"t_uint256"},{"astId":8085,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"snapshotTimestamp","offset":0,"slot":"3","type":"t_uint256"},{"astId":8088,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"snapshotGap","offset":0,"slot":"4","type":"t_uint256"},{"astId":10224,"contract":"contracts/test/oracles/MockCorrelatedTokenOracle.sol:MockCorrelatedTokenOracle","label":"mockUnderlyingAmount","offset":0,"slot":"5","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002001200000000000200000000030100190000006003300270000001ac0330019700000001002001900000001e0000c13d0000008002000039000000400020043f000000040030008c000003890000413d000000000201043b000000e002200270000001b40020009c000000580000a13d000001b50020009c0000006c0000213d000001bc0020009c000000900000a13d000001bd0020009c000001290000613d000001be0020009c000000ca0000613d000001bf0020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000301000039000001ee0000013d0000000002000416000000000002004b000003890000c13d0000001f02300039000001ad022001970000010002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000300000613d00000100050000390000010006400039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003e0000613d000000000141034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000001200030008c000003890000413d000001000100043d000001ae0010009c000003890000213d000001200400043d000001ae0040009c000003890000213d000001400500043d000001ae0050009c000003890000213d000001e00600043d000001ae0060009c000003890000213d000001c00700043d000001a00800043d000001800a00043d000001600300043d000001af0230012a000002000900043d000000000020041b000001b00030009c000001f20000213d00000000000a004b000001f40000613d000002200000013d000001c20020009c0000007f0000a13d000001c30020009c0000009f0000a13d000001c40020009c0000014e0000613d000001c50020009c000001530000613d000001c60020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000101000039000000000101041a000000000001004b0000000001000019000002070000c13d000000010110018f0000017a0000013d000001b60020009c000000c60000a13d000001b70020009c0000016f0000613d000001b80020009c000001760000613d000001b90020009c000003890000c13d000000240030008c000003890000413d0000000002000416000000000002004b000003890000c13d0000000401100370000000000101043b0000000502000039000000000012041b0000000001000019000006ac0001042e000001c90020009c000000cf0000213d000001cc0020009c000001810000613d000001cd0020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000001000412001000000001001d000f00200000003d000080050100003900000044030000390000000004000415000000100440008a000001e30000013d000001c00020009c000001860000613d000001c10020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000001000412000c00000001001d000b00000000001d0000800501000039000000440300003900000000040004150000000c0440008a000001e30000013d000001c70020009c000001ce0000613d000001c80020009c000003890000c13d000000240030008c000003890000413d0000000002000416000000000002004b000003890000c13d0000000401100370000000000101043b000800000001001d000000c001000039000000400010043f0000001701000039000000800010043f000001e201000041000000a00010043f000000800100003906ab059a0000040f0000000401000039000000000501041a0000000001000414000001ac0010009c000001ac01008041000000c001100210000001d2011001c70000800d020000390000000303000039000001e304000041000000080600002906ab06a10000040f0000000100200190000003890000613d00000008010000290000000402000039000000000012041b0000000001000019000006ac0001042e000001ba0020009c000001d90000613d000001bb0020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000501000039000001ee0000013d000001ca0020009c000001ea0000613d000001cb0020009c000003890000c13d000000240030008c000003890000413d0000000002000416000000000002004b000003890000c13d0000000401100370000000000101043b000001ae0010009c000003890000213d000800000001001d000001d00100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000000080110014f000001ae00100198000002730000c13d0000000501000039000000000101041a000800000001001d0000000101000039000700000001001d000000000101041a000000000001004b000002930000c13d000000400200043d000001e501000041000600000002001d0000000001120436000500000001001d000001d001000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d00000006020000290000000402200039000000000101043b000001ae011001970000000000120435000001d001000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000201043b0000000001000414000001ae02200197000000040020008c0000034e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000037a0000013d000000440030008c000003890000413d0000000002000416000000000002004b000003890000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001c01000039000000800010043f000001d101000041000000a00010043f000000800100003906ab059a0000040f00000002010000390000000705000029000000000051041b00000003030000390000000806000029000000000063041b0000000001000414000001ac0010009c000001ac01008041000000c001100210000001d2011001c70000800d02000039000001d30400004106ab06a10000040f0000000100200190000003890000613d0000000001000019000006ac0001042e0000000001000416000000000001004b000003890000c13d0000000201000039000001ee0000013d000000440030008c000003890000413d0000000002000416000000000002004b000003890000c13d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000700000001001d000000c001000039000000400010043f0000001e01000039000000800010043f000001de01000041000000a00010043f000000800100003906ab059a0000040f0000000701000029000001af0610012a000000000500041a000000000060041b000001b00010009c0000021e0000213d000000080000006b000002200000c13d000002280000013d0000000001000416000000000001004b000003890000c13d000000000100041a000000800010043f000001cf01000041000006ac0001042e0000000001000416000000000001004b000003890000c13d06ab05300000040f000000400200043d0000000000120435000001ac0020009c000001ac020080410000004001200210000001ce011001c7000006ac0001042e0000000001000416000000000001004b000003890000c13d0000000101000039000001ee0000013d0000000001000416000000000001004b000003890000c13d0000000301000039000000000101041a000800000001001d000001d40100004100000000001004390000000001000414000001ac0010009c000001ac01008041000000c001100210000001d5011001c70000800b0200003906ab06a60000040f0000000100200190000004320000613d000000000301043b000000080130006c000002180000413d0000000102000039000000000202041a000000010220008a000000000012004b0000014c0000813d000800000003001d0000000301000039000000000101041a000700000001001d0000000501000039000000000101041a000600000001001d000001d40100004100000000001004390000000001000414000001ac0010009c000001ac01008041000000c001100210000001d5011001c70000800b0200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000000070210006c0000000807000029000002180000413d0000000206000039000000000106041a000000000001004b0000000003000019000002e90000c13d000001d60230012a000000000012001a000002180000413d0000000001120019000000060010006b000000000301001900000006030040290000000401000039000000000101041a0000000002030019000000000031001a000002180000413d000000000121001a000000000016041b0000000301000039000000000071041b000002f60000c13d000000400100043d000001dd02000041000002220000013d0000000001000416000000000001004b000003890000c13d0000000001000412000e00000001001d000d00600000003d0000800501000039000000440300003900000000040004150000000e0440008a000001e30000013d0000000001000416000000000001004b000003890000c13d0000000001000412000a00000001001d000900400000003d0000800501000039000000440300003900000000040004150000000a0440008a0000000504400210000001d00200004106ab06830000040f000001ae01100197000000800010043f000001cf01000041000006ac0001042e0000000001000416000000000001004b000003890000c13d0000000401000039000000000101041a000000800010043f000001cf01000041000006ac0001042e00000000000a004b000002200000613d0000000003000415000000120330008a0000000503300210000000000008004b000001fe0000613d0000000003000415000000110330008a0000000503300210000000000007004b000002410000c13d00000000000a004b0000000002000019000000010200c0390000000503300270000000000302001f000002410000613d000000400100043d000001b202000041000002220000013d0000000301000039000000000101041a000800000001001d000001d40100004100000000001004390000000001000414000001ac0010009c000001ac01008041000000c001100210000001d5011001c70000800b0200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000000080210006c000002760000813d000001e70100004100000000001004350000001101000039000000040010043f000001db01000041000006ad00010430000000080000006b000002280000c13d000000400100043d000001df020000410000000000210435000001ac0010009c000001ac010080410000004001100210000001b3011001c7000006ad000104300000000101000039000000000701041a000000400100043d00000008020000290000000000210435000001ac0010009c000001ac0100804100000040011002100000000002000414000001ac0020009c000001ac02008041000000c002200210000000000112019f000001e0011001c70000800d020000390000000403000039000001e10400004106ab06a10000040f0000000100200190000003890000613d00000008010000290000000102000039000000000012041b0000000001000019000006ac0001042e000100000001001d000600000004001d000700000005001d000800000006001d000400000007001d000300000008001d000500000009001d00020000000a001d06ab05250000040f000000060100002906ab05250000040f000000070100002906ab05250000040f000000080100002906ab05250000040f0000000102000029000000800020043f0000000603000029000000a00030043f0000000705000029000000c00050043f00000001010000390000000204000029000000000041041b00000002010000390000000304000029000000000041041b00000003010000390000000404000029000000000041041b00000004010000390000000504000029000000000041041b0000000804000029000000e00040043f0000014000000443000001600020044300000020020000390000018000200443000001a0003004430000004003000039000001c000300443000001e00050044300000060030000390000020000300443000002200040044300000100002004430000012000100443000001b101000041000006ac0001042e000000400100043d000001e402000041000002220000013d0000000201000039000000000101041a000000000001004b0000000003000019000002870000613d000000000300041a00000000041300a900000000051400d9000000000035004b000002180000c13d000000000004004b0000000003000019000002870000613d00000000032400a900000000044300d9000000000024004b000002180000c13d000001d60230012a000000000012001a000002180000413d000000000212001a00000000010000190000006a0000613d0000000501000039000000000101041a000000000021004b000000000100001900000001010020390000006a0000013d0000000301000039000000000101041a000600000001001d000001d40100004100000000001004390000000001000414000001ac0010009c000001ac01008041000000c001100210000001d5011001c70000800b0200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000000060210006c000002180000413d0000000201000039000000000101041a000000000001004b00000000030000190000038b0000c13d000001d60230012a000000000012001a000002180000413d000600000012001d000000400200043d000001e501000041000500000002001d0000000001120436000400000001001d000001d001000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000606000029000000080060006b00000000030000190000000103002039000000000006004b0000000004000019000000010400c03900000000004301700000000806006029000600000006001d0000000100200190000004320000613d00000005020000290000000402200039000000000101043b000001ae011001970000000000120435000001d001000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000201043b0000000001000414000001ae02200197000000040020008c000003d80000c13d0000000003000031000000200030008c00000020040000390000000004034019000004040000013d000000000300041a00000000041300a900000000051400d9000000000035004b000002180000c13d000000000004004b0000000003000019000001ba0000613d00000000032400a900000000044300d9000000000024004b000001ba0000613d000002180000013d000001d001000041000000000010043900000000010004120000000400100443000000400100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000001d8020000410000000000200439000001ae01100197000800000001001d00000004001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d9011001c7000080020200003906ab06a60000040f0000000100200190000004320000613d000000000101043b000000000001004b000003890000613d000000400200043d000001da01000041000700000002001d0000000000120435000001d001000041000000000010043900000000010004120000000400100443000000200100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d00000007020000290000000402200039000000000101043b000001ae01100197000000000012043500000000010004140000000802000029000000040020008c000003430000613d0000000702000029000001ac0020009c000001ac020080410000004002200210000001ac0010009c000001ac01008041000000c001100210000000000121019f000001db011001c7000000080200002906ab06a10000040f00000000030100190000006003300270000001ac0030019d0000000100200190000004960000613d0000000701000029000001dc0010009c000004640000213d0000000701000029000000400010043f0000000201000039000000000501041a0000000303000039000000000603041a0000000001000414000001430000013d0000000603000029000001ac0030009c000001ac030080410000004003300210000001ac0010009c000001ac01008041000000c001100210000000000131019f000001db011001c706ab06a60000040f00000000030100190000006003300270000001ac03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000003680000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000003640000c13d000000000005004b000003770000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000003980000613d0000001f01400039000000600110018f0000000602100029000000000012004b00000000010000190000000101004039000500000002001d000001dc0020009c000004640000213d0000000100100190000004640000c13d0000000501000029000000400010043f000000200030008c000003b90000813d0000000001000019000006ad00010430000000000300041a00000000041300a900000000051400d9000000000035004b000002180000c13d000000000004004b0000000003000019000002a90000613d00000000032400a900000000044300d9000000000024004b000002180000c13d000002a90000013d000000400200043d0000001f0430018f0000000505300272000003a40000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003a00000c13d000000000004004b000003b30000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001ac0020009c000001ac020080410000004002200210000000000112019f000006ad0001043000000006010000290000000001010433000400000001001d000001e60100004100000005020000290000000001120436000600000001001d000001d00100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000201043b0000000001000414000001ae02200197000000040020008c000004330000c13d0000000003000031000000200030008c000000200400003900000000040340190000045f0000013d0000000503000029000001ac0030009c000001ac030080410000004003300210000001ac0010009c000001ac01008041000000c001100210000000000131019f000001db011001c706ab06a60000040f00000000030100190000006003300270000001ac03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000040a000029000003f20000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000003ee0000c13d000000000005004b000004010000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00000001002001900000046a0000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000190000000101004039000800000002001d000001dc0020009c000004640000213d0000000100100190000004640000c13d0000000801000029000000400010043f000000200030008c000003890000413d00000005010000290000000001010433000400000001001d000001e60100004100000008020000290000000001120436000500000001001d000001d00100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000004320000613d000000000201043b0000000001000414000001ae02200197000000040020008c000004a60000c13d0000000003000031000000200030008c00000020040000390000000004034019000004d20000013d000000000001042f0000000503000029000001ac0030009c000001ac030080410000004003300210000001ac0010009c000001ac01008041000000c001100210000000000131019f000001b3011001c706ab06a60000040f00000000030100190000006003300270000001ac03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a0000290000044d0000613d000000000701034f0000000508000029000000007907043c00000000089804360000000000a8004b000004490000c13d000000000005004b0000045c0000613d0000000506600210000000000761034f00000005066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004870000613d0000001f01400039000000600110018f0000000501100029000001dc0010009c000004790000a13d000001e70100004100000000001004350000004101000039000000040010043f000001db01000041000006ad00010430000000400200043d0000001f0430018f00000005053002720000000505500210000004760000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004720000c13d000000000004004b000003b30000613d000003a70000013d000000400010043f000000200030008c000003890000413d00000005020000290000000003020433000000ff0030008c000003890000213d000000040200002900000008022000b9000000080000006b000004e50000c13d0000004d0030008c000002180000213d000004ea0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000004930000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000048f0000c13d000000000004004b000003b30000613d000003a70000013d000001ac03300197000000400200043d0000001f0430018f0000000505300272000004a30000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000049f0000c13d000000000004004b000003b30000613d000003a60000013d0000000803000029000001ac0030009c000001ac030080410000004003300210000001ac0010009c000001ac01008041000000c001100210000000000131019f000001b3011001c706ab06a60000040f00000000030100190000006003300270000001ac03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000050a000029000004c00000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000004bc0000c13d000000000005004b000004cf0000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000004fe0000613d0000001f01400039000000600110018f0000000801100029000001dc0010009c000004640000213d000000400010043f000000200030008c000003890000413d00000008020000290000000003020433000000ff0030008c000003890000213d000000040200002900000006022000b9000000060000006b0000050d0000c13d0000004d0030008c000002180000213d000005120000013d0000004d0030008c000002180000213d00000008042000fa000000040040006c000002180000c13d000000000003004b000005140000613d0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a900000001033002720000000004050019000004ee0000c13d000700000006001d000000000006004b000005140000c13d000001e70100004100000000001004350000001201000039000000040010043f000001db01000041000006ad00010430000000400200043d0000001f0430018f00000005053002720000050a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005060000c13d000000000004004b000003b30000613d000003a60000013d0000004d0030008c000002180000213d00000006042000fa000000040040006c000002180000c13d000000000003004b0000051b0000c13d00000007022000fa0000000000210435000001ac0010009c000001ac010080410000004001100210000001ce011001c7000006ac0001042e0000000a040000390000000106000039000000010030019000000000054400a9000000010400603900000000066400a9000000010330027200000000040500190000051d0000c13d000004f50000013d000001ae00100198000005280000613d000000000001042d000000400100043d000001e8020000410000000000210435000001ac0010009c000001ac010080410000004001100210000001b3011001c7000006ad0001043000010000000000020000000301000039000000000101041a000100000001001d000001d40100004100000000001004390000000001000414000001ac0010009c000001ac01008041000000c001100210000001d5011001c70000800b0200003906ab06a60000040f0000000100200190000005630000613d000000000101043b000000010210006c0000055d0000413d0000000201000039000000000101041a000000000001004b000005520000613d000000000300041a00000000041300a900000000051400d9000000000035004b0000055d0000c13d000000000004004b000005580000613d00000000032400a900000000044300d9000000000024004b000005530000613d0000055d0000013d0000000003000019000001d60230012a000000000012001a0000055d0000413d0000000001120019000000000001042d0000000003000019000001d60230012a000000000012001a0000055d0000413d000005560000013d000001e70100004100000000001004350000001101000039000000040010043f000001db01000041000006ad00010430000000000001042f00000000430104340000000001320436000001e9063001970000001f0530018f000000000014004b0000057a0000813d000000000006004b000005760000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000005700000c13d000000000005004b000005940000613d00000000070100190000058a0000013d000000000006004b000005860000613d000000200760008a000001e9077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000005820000c13d000000000005004b000005940000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000001e9023001970000000001210019000000000001042d0004000000000002000000400500043d000400000005001d000000240350003900000040020000390000000000230435000001ea0200004100000000092504360000000402500039000000000300041100000000003204350000004403500039000100000001001d000000002a0104340000000000a30435000001e904a001970000001f03a0018f0000006401500039000000000012004b000005be0000813d000000000004004b000005ba0000613d00000000063200190000000005310019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000005b40000c13d000000000003004b000005d80000613d0000000005010019000005ce0000013d000000000004004b000005ca0000613d000000200540008a000001e905500197000000000515001900000020055000390000000006020019000000000701001900000000680604340000000007870436000000000057004b000005c60000c13d000000000003004b000005d80000613d000000000541001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f0000000000250435000300000009001d00020000000a001d00000000011a00190000000000010435000001d001000041000000000010043900000000010004120000000400100443000000600100003900000024001004430000000001000414000001ac0010009c000001ac01008041000000c001100210000001d7011001c7000080050200003906ab06a60000040f0000000100200190000006420000613d000000000201043b0000000001000414000001ae02200197000000040020008c000000040a000029000005f60000c13d0000000003000031000000200030008c000000200400003900000000040340190000062a0000013d00000002030000290000001f03300039000001e903300197000001ac00a0009c000001ac0400004100000000040a401900000040044002100000006403300039000001ac0030009c000001ac030080410000006003300210000000000343019f000001ac0010009c000001ac01008041000000c001100210000000000131019f06ab06a60000040f000000040a00002900000000030100190000006003300270000001ac03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000030b000029000006180000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000006140000c13d000000000005004b000006270000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000100200190000006620000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000010000190000000101004039000001dc0040009c000006430000213d0000000100100190000006430000c13d000000400040043f0000001f0030008c000006400000a13d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b000006400000c13d000000000001004b000006490000613d000000000001042d0000000001000019000006ad00010430000000000001042f000001e70100004100000000001004350000004101000039000000040010043f000001db01000041000006ad00010430000000440140003900000060020000390000000000210435000000240140003900000000020004100000000000210435000001eb01000041000000000014043500000004014000390000000002000411000000000021043500000064024000390000000101000029000400000004001d06ab05640000040f00000004020000290000000001210049000001ac0010009c000001ac01008041000001ac0020009c000001ac0200804100000060011002100000004002200210000000000121019f000006ad00010430000000400200043d0000001f0430018f000000050530027200000005055002100000066e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000066a0000c13d000000000004004b0000067c0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000001ac0020009c000001ac020080410000004002200210000000000112019f000006ad00010430000000000001042f00000000050100190000000000200439000000050030008c000006910000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000006890000413d000001ac0030009c000001ac0300804100000060013002100000000002000414000001ac0020009c000001ac02008041000000c002200210000000000112019f000001ec011001c7000000000205001906ab06a60000040f0000000100200190000006a00000613d000000000101043b000000000001042d000000000001042f000006a4002104210000000102000039000000000001042d0000000002000019000000000001042d000006a9002104230000000102000039000000000001042d0000000002000019000000000001042d000006ab00000432000006ac0001042e000006ad000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000001e1337f0000000200000000000000000000000000000140000001000000000000000000b8a5589b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006924042500000000000000000000000000000000000000000000000000000000a4edcd4b00000000000000000000000000000000000000000000000000000000ac5a693d00000000000000000000000000000000000000000000000000000000ac5a693e00000000000000000000000000000000000000000000000000000000bdf13af200000000000000000000000000000000000000000000000000000000df67747a00000000000000000000000000000000000000000000000000000000a4edcd4c00000000000000000000000000000000000000000000000000000000abb85613000000000000000000000000000000000000000000000000000000007fc4e49f000000000000000000000000000000000000000000000000000000007fc4e4a00000000000000000000000000000000000000000000000000000000099fd8939000000000000000000000000000000000000000000000000000000009c43eb5400000000000000000000000000000000000000000000000000000000692404260000000000000000000000000000000000000000000000000000000069818a350000000000000000000000000000000000000000000000000000000045be2dc600000000000000000000000000000000000000000000000000000000596efe6e00000000000000000000000000000000000000000000000000000000596efe6f00000000000000000000000000000000000000000000000000000000643d813d00000000000000000000000000000000000000000000000000000000671528d40000000000000000000000000000000000000000000000000000000045be2dc7000000000000000000000000000000000000000000000000000000005213f9c8000000000000000000000000000000000000000000000000000000004169d244000000000000000000000000000000000000000000000000000000004169d2450000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000007d0413c0000000000000000000000000000000000000000000000000000000029db1be600000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e736574536e617073686f742875696e743235362c75696e74323536290000000002000000000000000000000000000000000000000000000000000000000000002c8c8fcb8c77a0ca21dcc3ab8fc0ade761557e76b1240cb40ebbef9fcee00f7d796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000002000002000000000000000000000000000000440000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000b62cad69000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff5f1838870000000000000000000000000000000000000000000000000000000073657447726f777468526174652875696e743235362c75696e74323536290000a76fcc8a000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000a65cbeb0e28a8803a912daac67c472c160aa01e2c988755fa424f290321de608736574536e617073686f744761702875696e7432353629000000000000000000eb3716d3f8388c182853c1dc98b18931f3a600bbab31f2ff48631f6412e4997f1eb00b060000000000000000000000000000000000000000000000000000000041976e0900000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000008579befe00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018c5e8ab000000000000000000000000000000000000000000000000000000004a3fa293000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"ACCESS_CONTROL_MANAGER()":"45be2dc7","CORRELATED_TOKEN()":"69818a35","RESILIENT_ORACLE()":"a4edcd4c","UNDERLYING_TOKEN()":"29db1be6","getMaxAllowedExchangeRate()":"bdf13af2","getPrice(address)":"41976e09","getUnderlyingAmount()":"abb85613","growthRatePerSecond()":"ac5a693e","isCapped()":"671528d4","mockUnderlyingAmount()":"99fd8939","setGrowthRate(uint256,uint256)":"643d813d","setMockUnderlyingAmount(uint256)":"df67747a","setSnapshot(uint256,uint256)":"7fc4e4a0","setSnapshotGap(uint256)":"5213f9c8","snapshotGap()":"4169d245","snapshotInterval()":"07d0413c","snapshotMaxExchangeRate()":"596efe6f","snapshotTimestamp()":"9c43eb54","updateSnapshot()":"69240426"}},"hash":"010001ed79a33ee78f89128b9596516ef3be2aed7672cdc625c19eefd33e0490","factoryDependencies":{}}},"contracts/test/oracles/MockERC20.sol":{"MockERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/oracles/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"contracts/test/oracles/MockERC20.sol\":{\"keccak256\":\"0x776ded23bdbee69909c256e7df4f27d396a4d11f562adf2f30366ae8d1b0fcc6\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e7120436a5fd4f574a024f88ebdf5976b201dc68f771e7acc4c8ba2b5caaf62b\",\"dweb:/ipfs/QmZEJ8r7LDq5BBmFPmqqzA8j9R5bkMNfEdyoWMKP5qLefb\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"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":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":2256,"contract":"contracts/test/oracles/MockERC20.sol:MockERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2262,"contract":"contracts/test/oracles/MockERC20.sol:MockERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2264,"contract":"contracts/test/oracles/MockERC20.sol:MockERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2266,"contract":"contracts/test/oracles/MockERC20.sol:MockERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2268,"contract":"contracts/test/oracles/MockERC20.sol:MockERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"0001000000000002000700000000000200000000000103550000008004000039000000400040043f0000000003010019000000600330027000000137033001970000000100200190000000300000c13d000000040030008c000000520000413d000000000201043b000000e002200270000001430020009c0000008f0000a13d000001440020009c0000009e0000213d000001480020009c000000cd0000613d000001490020009c000000fa0000613d0000014a0020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000403000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001b60000c13d000000800010043f000000000005004b0000021b0000c13d0000015d01200197000000a00010043f000000000004004b000000c001000039000000a0010060390000023a0000013d0000000002000416000000000002004b000000520000c13d0000001f0230003900000138022001970000008002200039000000400020043f0000001f0230018f0000000505300272000000410000613d00000005065002100000008006600039000000000701034f000000007807043c0000000004840436000000000064004b0000003d0000c13d000000000002004b000000500000613d0000000504500210000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000600030008c000000540000813d0000000001000019000004da00010430000000800400043d000001390040009c000000520000213d0000001f01400039000000000031004b00000000020000190000013a020080410000013a01100197000000000001004b00000000050000190000013a050040410000013a0010009c000000000502c019000000000005004b000000520000c13d00000080014000390000000002010433000001390020009c0000024a0000213d0000001f012000390000015e011001970000003f011000390000015e01100197000000400c00043d00000000051c00190000000000c5004b00000000010000190000000101004039000001390050009c0000024a0000213d00000001001001900000024a0000c13d0000008001300039000000400050043f000000000d2c0436000000a0044000390000000005420019000000000015004b000000520000213d0000015e062001970000001f0520018f0000000000d4004b000001c50000813d000000000006004b0000008b0000613d000000000854001900000000075d0019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000000850000c13d000000000005004b000001df0000613d00000000070d0019000001d50000013d0000014b0020009c000000bb0000a13d0000014c0020009c000001080000613d0000014d0020009c000001100000613d0000014e0020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000001201000039000000800010043f0000015201000041000004d90001042e000001450020009c000001530000613d000001460020009c000001920000613d000001470020009c000000520000c13d000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000202043b000001510020009c000000520000213d0000002401100370000000000101043b000001510010009c000000520000213d0000000000200435000700000001001d0000000101000039000000200010043f000000400100003904d804bd0000040f00000007020000290000000000200435000000200010043f000001050000013d0000014f0020009c000001a70000613d000001500020009c000000520000c13d000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000202043b000001510020009c000000520000213d0000002401100370000000000301043b000000000100041104d803f30000040f0000019f0000013d000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b000700000001001d000001510010009c000000520000213d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000000520000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000000520000613d000000000101043b000000000101041a00000024020000390000000002200367000000000202043b000000000012001a000003b40000413d0000000003120019000002240000013d000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b000001510010009c000000520000213d0000000000100435000000200000043f000000400100003904d804bd0000040f0000010c0000013d0000000001000416000000000001004b000000520000c13d0000000201000039000000000101041a000000800010043f0000015201000041000004d90001042e000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000302043b000001510030009c000000520000213d0000002402100370000000000202043b000700000002001d000001510020009c000000520000213d0000004401100370000000000101043b000500000001001d00000000003004350000000101000039000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c70000801002000039000600000003001d04d804d30000040f0000000100200190000000520000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f00000006040000290000000100200190000000520000613d000000000101043b000000000101041a0000015f0010009c000002c80000613d000000050310006c000002c40000813d000000400100043d00000044021000390000015b03000041000000000032043500000024021000390000001d03000039000000000032043500000141020000410000000000210435000000040210003900000020030000390000000000320435000001370010009c0000013701008041000000400110021000000142011001c7000004da00010430000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000202043b000700000002001d000001510020009c000000520000213d0000002401100370000000000101043b000600000001001d000000000100041100000000001004350000000101000039000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000000520000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000000520000613d000000000101043b000000000101041a000000060310006c000002240000813d000000400100043d00000064021000390000015403000041000000000032043500000044021000390000015503000041000000000032043500000024021000390000002503000039000000000032043500000141020000410000000000210435000000040210003900000020030000390000000000320435000001370010009c0000013701008041000000400110021000000156011001c7000004da00010430000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000202043b000001510020009c000000520000213d0000002401100370000000000301043b000000000100041104d8044a0000040f0000000101000039000000400200043d0000000000120435000001370020009c0000013702008041000000400120021000000153011001c7000004d90001042e0000000001000416000000000001004b000000520000c13d0000000303000039000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000000662013f0000000100600190000001bc0000613d000001590100004100000000001004350000002201000039000000040010043f0000015a01000041000004da00010430000000800010043f000000000005004b0000021f0000c13d0000015d01200197000000a00010043f000000000004004b000000c001000039000000a001006039000002460000013d000000000006004b000001d10000613d000000200760008a0000015e077001970000000007d700190000002007700039000000000804001900000000090d0019000000008a0804340000000009a90436000000000079004b000001cd0000c13d000000000005004b000001df0000613d00000000076d001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f000000000047043500000000022d00190000000000020435000000a00400043d000001390040009c000000520000213d0000001f02400039000000000032004b00000000030000190000013a030080410000013a02200197000000000002004b00000000050000190000013a050040410000013a0020009c000000000503c019000000000005004b000000520000c13d00000080024000390000000002020433000001390020009c0000024a0000213d0000001f032000390000015e033001970000003f033000390000015e03300197000000400900043d0000000003390019000000000093004b00000000050000190000000105004039000001390030009c0000024a0000213d00000001005001900000024a0000c13d000000400030043f000000000a290436000000a0034000390000000004320019000000000014004b000000520000213d0000015e042001970000001f0120018f0000000000a3004b0000025f0000813d000000000004004b000002170000613d000000000613001900000000051a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000002110000c13d000000000001004b000002790000613d00000000050a00190000026f0000013d0000000000300435000000020020008c0000022f0000813d000002220000013d0000000000300435000000020020008c0000023b0000813d0000002001000039000002500000013d0000000001000411000000070200002904d803f30000040f000000400100043d00000001020000390000000000210435000001370010009c0000013701008041000000400110021000000153011001c7000004d90001042e000001570200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002310000413d000000c001300039000002460000013d0000015c0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000023d0000413d000000c001300039000000610110008a0000015e01100197000001580010009c000002500000a13d000001590100004100000000001004350000004101000039000000040010043f0000015a01000041000004da000104300000008001100039000700000001001d000000400010043f000000800200003904d803ba0000040f00000007020000290000000001210049000001370010009c00000137010080410000006001100210000001370020009c00000137020080410000004002200210000000000121019f000004d90001042e000000000004004b0000026b0000613d000000200540008a0000015e055001970000000005a500190000002005500039000000000603001900000000070a001900000000680604340000000007870436000000000057004b000002670000c13d000000000001004b000002790000613d00000000054a001900000000034300190000000301100210000000000405043300000000041401cf000000000414022f00000000030304330000010001100089000000000313022f00000000011301cf000000000141019f000000000015043500000000012a00190000000000010435000000c00300043d000000ff0030008c000000520000213d00000000010c0433000001390010009c0000024a0000213d000700000001001d00050000000d001d00060000000c001d0000000301000039000000000101041a000000010210019000000001041002700000007f0440618f0000001f0040008c00000000010000190000000101002039000000000012004b000001b60000c13d000200000003001d00010000000a001d000400000009001d000300000004001d000000200040008c000002b00000413d000000030100003900000000001004350000000001000414000001370010009c0000013701008041000000c0011002100000013b011001c7000080100200003904d804d30000040f0000000100200190000000520000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000003010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000002b00000813d000000000002041b0000000102200039000000000012004b000002ac0000413d00000007010000290000001f0010008c000002cd0000a13d000000030100003900000000001004350000000001000414000001370010009c0000013701008041000000c0011002100000013b011001c7000080100200003904d804d30000040f0000000100200190000000200200008a000000520000613d0000000702200180000000000101043b000002da0000c13d0000002003000039000002e70000013d0000000001040019000000000200041104d803f30000040f000000060400002900000000010400190000000702000029000000050300002904d8044a0000040f000002270000013d000000070000006b0000000001000019000002d20000613d00000005010000290000000001010433000000070400002900000003024002100000015f0220027f0000015f02200167000000000121016f0000000102400210000000000121019f000002f50000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000060600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000002e00000c13d000000070020006c000002f20000813d00000007020000290000000302200210000000f80220018f0000015f0220027f0000015f0220016700000006033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001011001bf0000000302000039000000000012041b00000004010000290000000001010433000700000001001d000001390010009c0000024a0000213d0000000401000039000000000101041a000000010010019000000001021002700000007f0220618f000600000002001d0000001f0020008c00000000020000190000000102002039000000000121013f0000000100100190000001b60000c13d0000000601000029000000200010008c000003270000413d000000040100003900000000001004350000000001000414000001370010009c0000013701008041000000c0011002100000013b011001c7000080100200003904d804d30000040f0000000100200190000000520000613d00000007030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000006010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000003270000813d000000000002041b0000000102200039000000000012004b000003230000413d00000007010000290000001f0010008c0000033b0000a13d000000040100003900000000001004350000000001000414000001370010009c0000013701008041000000c0011002100000013b011001c7000080100200003904d804d30000040f0000000100200190000000200200008a000000520000613d0000000702200180000000000101043b000003480000c13d0000002003000039000003550000013d000000070000006b0000000001000019000003400000613d00000001010000290000000001010433000000070400002900000003024002100000015f0220027f0000015f02200167000000000121016f0000000102400210000000000221019f000003630000013d000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000040600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000034e0000c13d000000070020006c000003600000813d00000007020000290000000302200210000000f80220018f0000015f0220027f0000015f0220016700000004033000290000000003030433000000000223016f000000000021041b0000000701000029000000010110021000000001021001bf0000000201000029000000ff0110018f0000000403000039000000000023041b0000004d0010008c000003b40000213d000000000001004b0000036d0000c13d0000000102000039000003760000013d0000000a030000390000000102000039000000010010019000000000043300a9000000010300603900000000022300a9000000010110027200000000030400190000036f0000c13d0000013c012000d1000700000001001d0000013c0110012a000000000012004b000003b40000c13d0000000001000411000000000001004b000003850000c13d000000400100043d00000044021000390000014003000041000000000032043500000024021000390000001f03000039000001480000013d0000000201000039000000000201041a000000070020002a000003b40000413d0000000702200029000000000021041b00000000010004110000000000100435000000200000043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000000520000613d000000000101043b000000000201041a00000007030000290000000002320019000000000021041b000000400100043d0000000000310435000001370010009c000001370100804100000040011002100000000002000414000001370020009c0000013702008041000000c002200210000000000121019f0000013b011001c70000800d0200003900000003030000390000013e040000410000000005000019000000000600041104d804ce0000040f0000000100200190000000520000613d0000002001000039000001000010044300000120000004430000013f01000041000004d90001042e000001590100004100000000001004350000001101000039000000040010043f0000015a01000041000004da0001043000000020030000390000000003310436000000004202043400000000002304350000015e062001970000001f0520018f0000004001100039000000000014004b000003d30000813d000000000006004b000003cf0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000003c90000c13d000000000005004b000003ed0000613d0000000007010019000003e30000013d000000000006004b000003df0000613d000000200760008a0000015e077001970000000007170019000000200770003900000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000003db0000c13d000000000005004b000003ed0000613d000000000761001900000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f022000390000015e022001970000000001210019000000000001042d000300000000000200000151011001980000042c0000613d000200000003001d000301510020019c000004360000613d000100000001001d00000000001004350000000101000039000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f000000010020019000000003030000290000042a0000613d000000000101043b0000000000300435000000200010043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f000000030600002900000001002001900000042a0000613d000000000101043b0000000202000029000000000021041b000000400100043d0000000000210435000001370010009c000001370100804100000040011002100000000002000414000001370020009c0000013702008041000000c002200210000000000112019f0000013b011001c70000800d0200003900000003030000390000016004000041000000010500002904d804ce0000040f00000001002001900000042a0000613d000000000001042d0000000001000019000004da00010430000000400100043d000000640210003900000163030000410000000000320435000000440210003900000164030000410000000000320435000000240210003900000024030000390000043f0000013d000000400100043d00000064021000390000016103000041000000000032043500000044021000390000016203000041000000000032043500000024021000390000002203000039000000000032043500000141020000410000000000210435000000040210003900000020030000390000000000320435000001370010009c0000013701008041000000400110021000000156011001c7000004da000104300004000000000002000400000003001d0000015101100198000004950000613d000201510020019c0000049f0000613d000300000001001d0000000000100435000000200000043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000004930000613d000000000101043b000000000101041a0001000400100074000004a90000413d00000003010000290000000000100435000000200000043f0000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000004930000613d000000000101043b0000000102000029000000000021041b000000020100002900000000001004350000000001000414000001370010009c0000013701008041000000c0011002100000013d011001c7000080100200003904d804d30000040f0000000100200190000004930000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000001370010009c000001370100804100000040011002100000000002000414000001370020009c0000013702008041000000c002200210000000000112019f0000013b011001c70000800d0200003900000003030000390000013e040000410000000305000029000000020600002904d804ce0000040f0000000100200190000004930000613d000000000001042d0000000001000019000004da00010430000000400100043d00000064021000390000016903000041000000000032043500000044021000390000016a03000041000000000032043500000024021000390000002503000039000004b20000013d000000400100043d00000064021000390000016703000041000000000032043500000044021000390000016803000041000000000032043500000024021000390000002303000039000004b20000013d000000400100043d00000064021000390000016503000041000000000032043500000044021000390000016603000041000000000032043500000024021000390000002603000039000000000032043500000141020000410000000000210435000000040210003900000020030000390000000000320435000001370010009c0000013701008041000000400110021000000156011001c7000004da00010430000001370010009c000001370100804100000060011002100000000002000414000001370020009c0000013702008041000000c002200210000000000112019f0000016b011001c7000080100200003904d804d30000040f0000000100200190000004cc0000613d000000000101043b000000000001042d0000000001000019000004da00010430000004d1002104210000000102000039000000000001042d0000000002000019000000000001042d000004d6002104230000000102000039000000000001042d0000000002000019000000000001042d000004d800000432000004d90001042e000004da00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a00200000000000000000000000000000000000040000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000020000000000000000000000000000004000000100000000000000000045524332303a206d696e7420746f20746865207a65726f20616464726573730008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000003950935000000000000000000000000000000000000000000000000000000000a457c2d600000000000000000000000000000000000000000000000000000000a457c2d700000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000395093510000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddc0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000095ea7b3000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000020000000000000000000000000207a65726f00000000000000000000000000000000000000000000000000000045524332303a2064656372656173656420616c6c6f77616e63652062656c6f7700000000000000000000000000000000000000840000000000000000000000008a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b000000000000000000000000000000000000000000000000ffffffffffffff7f4e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000045524332303a20696e73756666696369656e7420616c6c6f77616e6365000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925737300000000000000000000000000000000000000000000000000000000000045524332303a20617070726f766520746f20746865207a65726f206164647265726573730000000000000000000000000000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464616c616e6365000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220616d6f756e7420657863656564732062657373000000000000000000000000000000000000000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472647265737300000000000000000000000000000000000000000000000000000045524332303a207472616e736665722066726f6d20746865207a65726f20616402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"hash":"0100016db219878bbbc80411a900dcede0a2fc7d029680b737f88884c649ad5c","factoryDependencies":{}}},"contracts/test/oracles/MockResilientOracle.sol":{"MockOracle":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/oracles/MockResilientOracle.sol\":\"MockOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/OracleInterface.sol\":{\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e056fb5f1ce0c2b81641553d1f6415088bc91e6a8ceef1007bb0e149a806a9ea\",\"dweb:/ipfs/QmXg7TxRAtm5Rn8ZnyiZVG4szWze7q8c8hMH5saDn5Fhxp\"]},\"contracts/test/oracles/MockResilientOracle.sol\":{\"keccak256\":\"0x6c1fd55755ac1f7a4e181b74e18484f5ebe07af9c8956b6c8947d499191fb2c7\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://e29cdcbb22198eb9bafe7eeb28684d171002fd2c197315db22b55d1705cb0db7\",\"dweb:/ipfs/QmT7qNB2xpfWCnHw6RT63NwfhJav9FM9nTu55jDBTNmwpt\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":10319,"contract":"contracts/test/oracles/MockResilientOracle.sol:MockOracle","label":"prices","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"00010000000000020000008003000039000000400030043f0000000100200190000000250000c13d000000000201001900000060022002700000001702200197000000040020008c0000003c0000413d000000000301043b000000e003300270000000190030009c0000002d0000613d0000001a0030009c000000330000613d0000001b0030009c0000003c0000c13d000000440020008c0000003c0000413d0000000002000416000000000002004b0000003c0000c13d0000000402100370000000000202043b0000001c0020009c0000003c0000213d0000000000200435000000200000043f0000002401100370000000000101043b000100000001001d005700450000040f0000000102000029000000000021041b0000000001000019000000580001042e0000000001000416000000000001004b0000003c0000c13d0000002001000039000001000010044300000120000004430000001801000041000000580001042e000000240020008c0000003c0000413d0000000002000416000000000002004b0000003c0000c13d000000380000013d000000240020008c0000003c0000413d0000000002000416000000000002004b0000003c0000c13d0000000401100370000000000101043b0000001c0010009c0000003e0000a13d000000000100001900000059000104300000000000100435000000200000043f005700450000040f000000000101041a000000800010043f0000001d01000041000000580001042e0000000001000414000000170010009c0000001701008041000000c0011002100000001e011001c70000801002000039005700520000040f0000000100200190000000500000613d000000000101043b000000000001042d0000000001000019000000590001043000000055002104230000000102000039000000000001042d0000000002000019000000000001042d0000005700000432000000580001042e00000059000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000cfed246b0000000000000000000000000000000000000000000000000000000041976e090000000000000000000000000000000000000000000000000000000000e4768b000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000008000000000000000000200000000000000000000000000000000000040000000000000000000000000"},"methodIdentifiers":{"getPrice(address)":"41976e09","prices(address)":"cfed246b","setPrice(address,uint256)":"00e4768b"}},"hash":"0100001fd84a47279254ef2d0204fa2271e59166622a2dce3d947b7300e4a4c4","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":{\"keccak256\":\"0x9b2bbba5bb04f53f277739c1cdff896ba8b3bf591cfc4eab2098c655e8ac251e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd2feacdedd00057ff3102239785983e11cf609a6cfb1cd16a8b27ae3f09c307\",\"dweb:/ipfs/QmPQirxLe26GRWy7g2FmUHViaQwbqfbXK3Z6rhnLYXA5mo\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":10354,"contract":"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]}},\"version\":1}","devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"proxiableUUID()":"52d1902d"}}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f5abfc32db1d44fd3d38d902879eaeaad827781bb9f954d3ccb8639c55db3c0\",\"dweb:/ipfs/QmVSkxFgWphaUx6w9XdvgwJJuxABdpuVQEbABbRmzd3XFc\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9cbd3212cc9e1dbc383b66ef6b750d58c07c4d73d404c6ec55e4bfed25a8fb6f\",\"dweb:/ipfs/QmPN8XajdLkydiQv2146q1M7nGqYk67Z5SNSjbzFU9MiM5\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60941294a981f6e3ee77c19e503b64c4114b4e7f3261cf489d6898fdd4916522\",\"dweb:/ipfs/QmQVmckpCRrtkCwyPG7ksVo59yjZdtpNerJDzw3hQVB62A\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity constructor."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0002000000000002000500000000000200000000030100190000006003300270000000910330019700010000003103550000000100200190000000210000c13d000000000431034f0000008002000039000000400020043f0000009802000041000000000202041a0000009302200197000000000003004b000000460000c13d0000000001000414000000040020008c000000790000c13d00000000030000310000001f0230018f000000050130027200000005011002100000001e0000613d000000000504034f0000000006000019000000005705043c0000000006760436000000000016004b0000001a0000c13d000000000002004b0000006d0000c13d000000fd0000013d0000001f0230003900000092022001970000008002200039000000400020043f0000001f0230018f0000000504300272000000300000613d000000800500003900000005064002100000008006600039000000000701034f000000007807043c0000000005850436000000000065004b0000002c0000c13d000000000002004b0000003f0000613d0000000504400210000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000400030008c000000440000413d000000800900043d000000930090009c0000009d0000a13d000000000100001900000240000104300000001f0630018f00000005053002720000000505500210000000500000613d000000000701034f0000000008000019000000007907043c0000000008980436000000000058004b0000004c0000c13d000000000006004b0000005d0000613d0000000306600210000000000705043300000000076701cf000000000767022f000000000151034f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000000001000414000000040020008c000000d90000c13d00000000030000310000001f0230018f000000050130027200000005011002100000006b0000613d000000000504034f0000000006000019000000005705043c0000000006760436000000000016004b000000670000c13d000000000002004b000000fd0000613d0000000302200210000000000501043300000000052501cf000000000525022f000000000414034f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f0000000000210435000000fd0000013d000000910010009c0000009101008041000000c001100210023e02390000040f0001000000010355000000000301001900000060033002700000001f0530018f000000910030019d0000009103300197000000050430027200000005044002100000008c0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000000880000c13d000000000005004b000000990000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000000fd0000c13d00000060013002100000024000010430000000a00200043d000000940020009c000000440000213d0000001f01200039000000000031004b000000000400001900000095040080410000009501100197000000000001004b00000000050000190000009505004041000000950010009c000000000504c019000000000005004b000000440000c13d00000080012000390000000001010433000000940010009c000001620000213d0000001f04100039000000a8044001970000003f04400039000000a804400197000000400700043d0000000004470019000000000074004b00000000050000190000000105004039000000940040009c000001620000213d0000000100500190000001620000c13d0000008003300039000000400040043f000000000a170436000000a0022000390000000004210019000000000034004b000000440000213d000400000007001d000000a8041001970000001f0310018f0000000000a2004b000001030000813d000000000004004b000000d50000613d000000000632001900000000053a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000000cf0000c13d000000000003004b0000011d0000613d00000000050a0019000001130000013d0000006003300210000000910010009c0000009101008041000000c001100210000000000131019f023e02390000040f0001000000010355000000000301001900000060033002700000001f0530018f000000910030019d000000910330019700000005043002720000000504400210000000ee0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000000ea0000c13d000000000005004b000000fb0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000001010000613d000000910030009c000000910300804100000060013002100000023f0001042e00000060013002100000024000010430000000000004004b0000010f0000613d000000200540008a000000a8055001970000000005a500190000002005500039000000000602001900000000070a001900000000680604340000000007870436000000000057004b0000010b0000c13d000000000003004b0000011d0000613d00000000054a001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f000000000025043500030000000a001d00000000011a0019000000000001043500000096010000410000000000100439000500000009001d00000004009004430000000001000414000000910010009c0000009101008041000000c00110021000000097011001c70000800202000039023e02340000040f00000001002001900000018c0000613d000000000101043b000000000001004b000001440000c13d000000400100043d0000006402100039000000a40300004100000000003204350000004402100039000000a503000041000000000032043500000024021000390000002d0300003900000000003204350000009f020000410000000000210435000000040210003900000020030000390000000000320435000000910010009c00000091010080410000004001100210000000a2011001c700000240000104300000009801000041000000000201041a000000990220019700000005022001af0000000505000029000000000021041b0000000001000414000000910010009c0000009101008041000000c0011002100000009a011001c70000800d0200003900000002030000390000009b04000041023e022f0000040f000000050300002900000001002001900000000401000029000000440000613d0000000001010433000000000001004b0000015f0000c13d000000200100003900000100001004430000012000000443000000a3010000410000023f0001042e000000400400043d0000009c0040009c000001680000a13d000000a60100004100000000001004350000004101000039000000040010043f000000a70100004100000240000104300000006001400039000000400010043f00000040014000390000009d0200004100000000002104350000002701000039000100000004001d00000000021404360000009e01000041000200000002001d00000000001204350000009601000041000000000010043900000004003004430000000001000414000000910010009c0000009101008041000000c00110021000000097011001c70000800202000039023e02340000040f00000001002001900000018c0000613d000000000101043b000000000001004b0000018d0000c13d000000400100043d0000006402100039000000a00300004100000000003204350000004402100039000000a103000041000000000032043500000024021000390000002603000039000001390000013d000000000001042f0000000401000029000000000201043300000000010004140000000503000029000000040030008c000001960000c13d00000001020000390000000004000031000001a90000013d0000000303000029000000910030009c00000091030080410000004003300210000000910020009c00000091020080410000006002200210000000000232019f000000910010009c0000009101008041000000c001100210000000000112019f0000000502000029023e02390000040f000000010220018f00010000000103550000006001100270000000910010019d0000009104100197000000000004004b000001d10000c13d00000060010000390000008003000039000000000002004b0000015a0000c13d0000000001010433000000000001004b000001fe0000c13d000000400100043d0000009f0200004100000000002104350000000402100039000000200300003900000000003204350000000102000029000000000202043300000024031000390000000000230435000000a8052001970000001f0420018f0000004403100039000000020030006b000002060000813d000000000005004b000001cd0000613d00000002074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000001c70000c13d000000000004004b000002210000613d0000000006030019000002160000013d000000940040009c000001620000213d0000001f01400039000000a8011001970000003f01100039000000a803100197000000400100043d0000000003310019000000000013004b00000000050000190000000105004039000000940030009c000001620000213d0000000100500190000001620000c13d000000400030043f0000001f0540018f000000000341043600000001060003670000000504400272000001ee0000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000001ea0000c13d000000000005004b000001ad0000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000001ad0000013d000000910030009c00000091030080410000004002300210000000910010009c00000091010080410000006001100210000000000121019f0000024000010430000000000005004b000002120000613d000000200650008a000000a806600197000000000636001900000020066000390000000207000029000000000803001900000000790704340000000008980436000000000068004b0000020e0000c13d000000000004004b000002210000613d0000000006530019000200020050002d0000000304400210000000000506043300000000054501cf000000000545022f000000020700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f04200039000000a804400197000000000232001900000000000204350000004402400039000000910020009c00000091020080410000006002200210000000910010009c00000091010080410000004001100210000000000112019f0000024000010430000000000001042f00000232002104210000000102000039000000000001042d0000000002000019000000000001042d00000237002104230000000102000039000000000001042d0000000002000019000000000001042d0000023c002104250000000102000039000000000001042d0000000002000019000000000001042d0000023e000004320000023f0001042e000002400001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c08c379a0000000000000000000000000000000000000000000000000000000006e74726163740000000000000000000000000000000000000000000000000000416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f000000000000000000000000000000000000008400000000000000000000000000000002000000000000000000000000000000400000010000000000000000006f74206120636f6e747261637400000000000000000000000000000000000000455243313936373a206e657720696d706c656d656e746174696f6e206973206e4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"methodIdentifiers":{}},"hash":"010000a9ad959029bb142a0789dc1ba89c7592314ec57fd190c2dc8dc03c2d05","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"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"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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\":{\"custom:oz-upgrades-unsafe-allow\":\"delegatecall\",\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_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, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9cbd3212cc9e1dbc383b66ef6b750d58c07c4d73d404c6ec55e4bfed25a8fb6f\",\"dweb:/ipfs/QmPN8XajdLkydiQv2146q1M7nGqYk67Z5SNSjbzFU9MiM5\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]}},\"version\":1}","devdoc":{"custom:oz-upgrades-unsafe-allow":"delegatecall","details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_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, and is validated in the constructor."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60941294a981f6e3ee77c19e503b64c4114b4e7f3261cf489d6898fdd4916522\",\"dweb:/ipfs/QmQVmckpCRrtkCwyPG7ksVo59yjZdtpNerJDzw3hQVB62A\"]}},\"version\":1}","devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"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. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]}},\"version\":1}","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. {BeaconProxy} will check that this address is a contract."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{"implementation()":"5c60da1b"}}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"ProxyAdmin":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":{\"keccak256\":\"0x9b2bbba5bb04f53f277739c1cdff896ba8b3bf591cfc4eab2098c655e8ac251e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd2feacdedd00057ff3102239785983e11cf609a6cfb1cd16a8b27ae3f09c307\",\"dweb:/ipfs/QmPQirxLe26GRWy7g2FmUHViaQwbqfbXK3Z6rhnLYXA5mo\"]},\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f5abfc32db1d44fd3d38d902879eaeaad827781bb9f954d3ccb8639c55db3c0\",\"dweb:/ipfs/QmVSkxFgWphaUx6w9XdvgwJJuxABdpuVQEbABbRmzd3XFc\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9cbd3212cc9e1dbc383b66ef6b750d58c07c4d73d404c6ec55e4bfed25a8fb6f\",\"dweb:/ipfs/QmPN8XajdLkydiQv2146q1M7nGqYk67Z5SNSjbzFU9MiM5\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60941294a981f6e3ee77c19e503b64c4114b4e7f3261cf489d6898fdd4916522\",\"dweb:/ipfs/QmQVmckpCRrtkCwyPG7ksVo59yjZdtpNerJDzw3hQVB62A\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x754888b9c9ab5525343460b0a4fa2e2f4fca9b6a7e0e7ddea4154e2b1182a45d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3911212ccae2599b050c31ac9fcf70d9315226d260d46d965ea97479be6a3996\",\"dweb:/ipfs/QmW1eVAxgnVD5Tw4QB4RHN6Yn1teihhSiq7Qn8jkb21sfp\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3110d13fd267ac03d3cf9611198971db0d12ed2bc0538cddef286090987461f\",\"dweb:/ipfs/QmWPynjSTgd72fRxeX3huVN9GLNLWijFvoVpJMKNESkPb3\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.","kind":"dev","methods":{"changeProxyAdmin(address,address)":{"details":"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`."},"getProxyAdmin(address)":{"details":"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"getProxyImplementation(address)":{"details":"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgrade(address,address)":{"details":"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[{"astId":10354,"contract":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol:ProxyAdmin","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"bytecode":{"object":"00010000000000020002000000000002000000000301034f00000000010300190000006001100270000000c60410019700000001002001900000002f0000c13d000000800a0000390000004000a0043f000000040040008c000002350000413d000000000143034f000000000203043b000000e002200270000000cd0020009c0000006a0000213d000000d30020009c000000af0000213d000000d60020009c000000d00000613d000000d70020009c000002350000c13d0000000001000416000000000001004b000002350000c13d000000000100041a000000c8051001970000000002000411000000000025004b000001b90000c13d000000c901100197000000000010041b0000000001000414000000c60010009c000000c601008041000000c001100210000000ca011001c70000800d020000390000000303000039000000cb040000410000000006000019031303090000040f0000000100200190000002350000613d0000000001000019000003140001042e0000000001000416000000000001004b000002350000c13d0000001f01400039000000c7011001970000008001100039000000400010043f0000001f0140018f0000000502400272000000410000613d000000800500003900000005062002100000008006600039000000000703034f000000007807043c0000000005850436000000000065004b0000003d0000c13d000000000001004b000000500000613d0000000502200210000000000323034f00000003011002100000008002200039000000000502043300000000051501cf000000000515022f000000000303043b0000010001100089000000000313022f00000000011301cf000000000151019f0000000000120435000000200040008c000002350000413d000000800600043d000000c80060009c000002350000213d000000000100041a000000c902100197000000000262019f000000000020041b0000000002000414000000c805100197000000c60020009c000000c602008041000000c001200210000000ca011001c70000800d020000390000000303000039000000cb04000041031303090000040f0000000100200190000002350000613d000000200100003900000100001004430000012000000443000000cc01000041000003140001042e000000ce0020009c000000bb0000213d000000d10020009c000000e10000613d000000d20020009c000002350000c13d000000440040008c000002350000413d0000000001000416000000000001004b000002350000c13d0000000401300370000000000401043b000000c80040009c000002350000213d0000002401300370000000000301043b000000c80030009c000002350000213d000000000100041a000000c8011001970000000002000411000000000021004b000001b90000c13d000100000003001d000000e0010000410000000000100439000200000004001d00000004004004430000000001000414000000c60010009c000000c601008041000000c001100210000000e1011001c700008002020000390313030e0000040f0000000100200190000002260000613d000000000101043b000000000001004b00000002020000290000000103000029000002350000613d000000400400043d000000e2010000410000000000140435000000040140003900000000003104350000000001000414000000040020008c000000ae0000613d000000c60040009c000000c60300004100000000030440190000004003300210000000c60010009c000000c601008041000000c001100210000000000131019f000000e3011001c7000200000004001d031303090000040f000000020400002900000000030100190000006003300270000000c60030019d0000000100200190000002610000613d000001980000013d000000d40020009c0000015a0000613d000000d50020009c000002350000c13d0000000001000416000000000001004b000002350000c13d000000000100041a000000c801100197000000800010043f000000ea01000041000003140001042e000000cf0020009c0000019d0000613d000000d00020009c000002350000c13d000000240040008c000002350000413d0000000002000416000000000002004b000002350000c13d0000000402300370000000000202043b000000c80020009c000002350000213d000000d803000041000000800030043f0000000003000414000000040020008c000001c20000c13d00000000040000310000000002000019000001cd0000013d000000240040008c000002350000413d0000000002000416000000000002004b000002350000c13d0000000402300370000000000202043b000000c80020009c000002350000213d000000ed03000041000000800030043f0000000003000414000000040020008c000001d60000c13d00000000050000310000000002000019000001e00000013d000000640040008c000002350000413d0000000401300370000000000901043b000000c80090009c000002350000213d0000002401300370000000000801043b000000c80080009c000002350000213d0000004401300370000000000201043b000000da0020009c000002350000213d0000002301200039000000000041004b000002350000813d0000000405200039000000000153034f000000000101043b000000da0010009c000002200000213d0000001f06100039000000f0066001970000003f06600039000000f006600197000000e40060009c000002200000213d0000008006600039000000400060043f000000800010043f00000000021200190000002402200039000000000042004b000002350000213d000200000008001d0000002002500039000000000223034f0000001f0310018f0000000504100272000001120000613d000000a0050000390000000506400210000000a006600039000000000702034f000000007807043c0000000005850436000000000065004b0000010e0000c13d000000000003004b000001210000613d0000000504400210000000000242034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f0000000000240435000000a0011000390000000000010435000000000100041a000000c8011001970000000002000411000000000021004b000002710000c13d000000e0010000410000000000100439000100000009001d00000004009004430000000001000414000000c60010009c000000c601008041000000c001100210000000e1011001c700008002020000390313030e0000040f0000000100200190000002260000613d000000000101043b000000000001004b0000000204000029000002350000613d000000400500043d000000240150003900000040020000390000000000210435000000e7010000410000000000150435000000040150003900000000004104350000004402500039000000800100043d0000000000120435000000f0041001970000001f0310018f000200000005001d0000006402500039000000a10020008c000002a30000413d000000000004004b000001550000613d000000000632001900000080053001bf000000200660008a0000000007460019000000000845001900000000080804330000000000870435000000200440008c0000014f0000c13d000000000003004b000002bd0000613d000000a0040000390000000005020019000002b30000013d000000440040008c000002350000413d0000000001000416000000000001004b000002350000c13d0000000401300370000000000401043b000000c80040009c000002350000213d0000002401300370000000000301043b000000c80030009c000002350000213d000000000100041a000000c8011001970000000002000411000000000021004b000001b90000c13d000100000003001d000000e0010000410000000000100439000200000004001d00000004004004430000000001000414000000c60010009c000000c601008041000000c001100210000000e1011001c700008002020000390313030e0000040f0000000100200190000002260000613d000000000101043b000000000001004b00000002020000290000000103000029000002350000613d000000400400043d000000eb010000410000000000140435000000040140003900000000003104350000000001000414000000040020008c000001980000613d000000c60040009c000000c60300004100000000030440190000004003300210000000c60010009c000000c601008041000000c001100210000000000131019f000000e3011001c7000200000004001d031303090000040f000000020400002900000000030100190000006003300270000000c60030019d0000000100200190000002810000613d000000da0040009c000002200000213d000000400040043f0000000001000019000003140001042e000000240040008c000002350000413d0000000001000416000000000001004b000002350000c13d0000000401300370000000000601043b000000c80060009c000002350000213d000000000100041a000000c8051001970000000002000411000000000025004b000001b90000c13d000000000006004b000002270000c13d000000dc01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f000000dd01000041000000c40010043f000000de01000041000000e40010043f000000df010000410000031500010430000000dc01000041000000800010043f0000002001000039000000840010043f000000a40010043f000000e501000041000000c40010043f000000ec010000410000031500010430000000c60030009c000000c603008041000000c001300210000000d9011001c70313030e0000040f000000800a000039000000010220015f00000000030100190000006003300270000000c60030019d000000c604300197000000000004004b000001f20000c13d00000060030000390000000100200190000002350000c13d00000000010304330000000002a1001900000000010a0019000001e90000013d000000c60030009c000000c603008041000000c001300210000000d9011001c70313030e0000040f000000010220015f00000000030100190000006003300270000000c60030019d000000c605300197000000000005004b0000021e0000c13d000000600400003900000080030000390000000100200190000002350000c13d000000000104043300000000023100190000000001030019031302fd0000040f000000c801100197000000400200043d0000000000120435000000c60020009c000000c6020080410000004001200210000000db011001c7000003140001042e000000da0040009c000002200000213d0000001f03400039000000f0033001970000003f03300039000000f005300197000000400300043d0000000005530019000000000035004b00000000060000190000000106004039000000da0050009c000002200000213d0000000100600190000002200000c13d000000400050043f0000001f0540018f000000000a43043600000005044002720000020e0000613d000000050640021000000000066a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b0000020a0000c13d000000000005004b000001d00000613d0000000504400210000000000141034f00000000044a00190000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000001d00000013d000000ee0050009c000002370000413d000000ef0100004100000000001004350000004101000039000000040010043f000000e3010000410000031500010430000000000001042f000000c901100197000000000161019f000000000010041b0000000001000414000000c60010009c000000c601008041000000c001100210000000ca011001c70000800d020000390000000303000039000000cb04000041031303090000040f00000001002001900000002d0000c13d000000000100001900000315000104300000001f03500039000000f0033001970000003f03300039000000f003300197000000400400043d0000000003340019000000000043004b00000000060000190000000106004039000000da0030009c000002200000213d0000000100600190000002200000c13d000000400030043f0000001f0650018f00000000035404360000000505500272000002510000613d00000005075002100000000007730019000000000801034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000024d0000c13d000000000006004b000001e40000613d0000000505500210000000000151034f00000000055300190000000306600210000000000705043300000000076701cf000000000767022f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f0000000000150435000001e40000013d000000c603300197000000400200043d0000001f0430018f00000005053002720000026e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000026a0000c13d000000000004004b0000029d0000613d000002900000013d000000400100043d0000004402100039000000e5030000410000000000320435000000dc02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000000c60010009c000000c6010080410000004001100210000000e6011001c70000031500010430000000c603300197000000400200043d0000001f0430018f00000005053002720000028e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000028a0000c13d000000000004004b0000029d0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000000c60020009c000000c6020080410000004002200210000000000112019f0000031500010430000000000004004b000002af0000613d000000200540008a000000f006500197000000a00500003900000000062600190000002006600039000000000702001900000000580504340000000007870436000000000067004b000002ab0000c13d000000000003004b000002bd0000613d0000000005420019000000a0044000390000000303300210000000000605043300000000063601cf000000000636022f00000000040404330000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000002210019000000000002043500000000040004140000000102000029000000040020008c000002e60000613d0000001f01100039000000f00110019700000000030004160000006402100039000000c60040009c000000c604008041000000c0014002100000000204000029000000c60040009c000000c6040080410000004004400210000000000003004b000002d70000c13d000000c60020009c000000c6020080410000006002200210000000000242019f000000000121019f0000000102000029000002e00000013d0000006005200210000000e80020009c000000e905008041000000ca024001c700000000025200190000000001120019000080090200003900000001040000290000000005000019031303090000040f00000000030100190000006003300270000000c60030019d0000000100200190000002ed0000613d0000000201000029000000da0010009c000002200000213d0000000201000029000000400010043f0000000001000019000003140001042e000000c603300197000000400200043d0000001f0430018f00000005053002720000000505500210000002fa0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000002f60000c13d000000000004004b0000029d0000613d000002910000013d0000000002120049000000f10020009c000003060000213d0000001f0020008c000003060000a13d0000000001010433000000c80010009c000003060000213d000000000001042d00000000010000190000031500010430000000000001042f0000030c002104210000000102000039000000000001042d0000000002000019000000000001042d00000311002104230000000102000039000000000001042d0000000002000019000000000001042d0000031300000432000003140001042e00000315000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009623609c00000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f3b7dead000000000000000000000000000000000000000000000000000000009623609d0000000000000000000000000000000000000000000000000000000099a88ec4000000000000000000000000000000000000000000000000000000007eff275d000000000000000000000000000000000000000000000000000000007eff275e000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000204e1c7a00000000000000000000000000000000000000000000000000000000715018a6f851a440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000002000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000640000000000000000000000004f1ef28600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000200000008000000000000000008f2839700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000008000000000000000005c60da1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"changeProxyAdmin(address,address)":"7eff275e","getProxyAdmin(address)":"f3b7dead","getProxyImplementation(address)":"204e1c7a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgrade(address,address)":"99a88ec4","upgradeAndCall(address,address,bytes)":"9623609d"}},"hash":"010000f345107f84dda06b6172f0139a59d451ba06df92c651d90a587b50cf07","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"TransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","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"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f5abfc32db1d44fd3d38d902879eaeaad827781bb9f954d3ccb8639c55db3c0\",\"dweb:/ipfs/QmVSkxFgWphaUx6w9XdvgwJJuxABdpuVQEbABbRmzd3XFc\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9cbd3212cc9e1dbc383b66ef6b750d58c07c4d73d404c6ec55e4bfed25a8fb6f\",\"dweb:/ipfs/QmPN8XajdLkydiQv2146q1M7nGqYk67Z5SNSjbzFU9MiM5\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60941294a981f6e3ee77c19e503b64c4114b4e7f3261cf489d6898fdd4916522\",\"dweb:/ipfs/QmQVmckpCRrtkCwyPG7ksVo59yjZdtpNerJDzw3hQVB62A\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3110d13fd267ac03d3cf9611198971db0d12ed2bc0538cddef286090987461f\",\"dweb:/ipfs/QmWPynjSTgd72fRxeX3huVN9GLNLWijFvoVpJMKNESkPb3\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00020000000000020006000000000002000000000301001900000060033002700000019904300197000100000041035500000001002001900000004b0000c13d000000000341034f0000008008000039000000400080043f000000040040008c0000008a0000413d000000000201043b000000e002200270000001ac0020009c000000a60000a13d000001ad0020009c000001820000613d000001ae0020009c000001910000613d000001af0020009c000001360000c13d0000000002000416000000000002004b000002580000c13d000001a802000041000000000202041a0000019b022001970000000005000411000000000025004b0000018e0000613d0000001f0640018f000001a002000041000000000202041a000000050540027200000005055002100000002c0000613d000000000701034f0000000008000019000000007907043c0000000008980436000000000058004b000000280000c13d0000019b02200197000000000006004b0000003a0000613d0000000306600210000000000705043300000000076701cf000000000767022f000000000151034f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000000001000414000000040020008c000002820000c13d00000000040000310000001f0240018f0000000501400272000000480000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b000000440000c13d000000000002004b0000023e0000613d000001750000013d0000001f024000390000019a022001970000008002200039000000400020043f0000001f0240018f00000005034002720000005a0000613d000000800500003900000005063002100000008006600039000000000701034f000000007807043c0000000005850436000000000065004b000000560000c13d000000000002004b000000690000613d0000000503300210000000000131034f00000003022002100000008003300039000000000503043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000130435000000600040008c000002580000413d000000800900043d0000019b0090009c000002580000213d000000a00700043d0000019b0070009c000002580000213d000000c00200043d0000019c0020009c000002580000213d0000001f01200039000000000041004b00000000030000190000019d030080410000019d01100197000000000001004b00000000050000190000019d050040410000019d0010009c000000000503c019000000000005004b000002580000c13d000000800120003900000000010104330000019c0010009c000002440000a13d000001bb0100004100000000001004350000004101000039000000040010043f000001bc010000410000066100010430000000000004004b000001360000c13d000001a801000041000000000101041a0000019b011001970000000002000411000000000012004b0000013c0000613d000001a001000041000000000201041a00000000010004140000019b02200197000000040020008c0000021b0000c13d00000000040000310000001f0240018f0000000501400272000000a30000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b0000009f0000c13d000000000002004b0000023e0000613d000001750000013d000001b00020009c000001bc0000613d000001b10020009c000001360000c13d000000440040008c000002580000413d0000000402100370000000000902043b0000019b0090009c000002580000213d0000002402100370000000000602043b0000019c0060009c000002580000213d0000002302600039000000000042004b000002580000813d0000000405600039000000000251034f000000000202043b0000019c0020009c000002580000213d00000000062600190000002406600039000000000046004b000002580000213d000001a806000041000000000606041a0000019b066001970000000007000411000000000067004b0000040e0000c13d0000001f03200039000001c3033001970000003f03300039000001c303300197000001b70030009c000000840000213d000500000008001d0000008003300039000000400030043f0000002003500039000000000131034f0000001f0320018f000000800020043f0000000504200272000000dd0000613d000000a0050000390000000506400210000000a006600039000000000701034f000000007807043c0000000005850436000000000065004b000000d90000c13d000000000003004b000000ec0000613d0000000504400210000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a00120003900000000000104350000019e010000410000000000100439000600000009001d00000004009004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000003b80000613d000001a001000041000000000201041a000001a10220019700000006022001af0000000605000029000000000021041b0000000001000414000001990010009c0000019901008041000000c001100210000001a2011001c70000800d020000390000000203000039000001a304000041065f06500000040f00000006030000290000000100200190000002580000613d000000400100043d000400000001001d000001a40010009c000000840000213d00000004040000290000006001400039000000400010043f0000004001400039000001a502000041000000000021043500000027010000390000000002140436000001a601000041000300000002001d00000000001204350000019e01000041000000000010043900000004003004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000004a20000613d000000800200043d00000000010004140000000603000029000000040030008c000005a80000c13d00000001020000390000000003000031000005b70000013d000001a802000041000000000202041a0000019b022001970000000005000411000000000025004b0000014a0000c13d000001a701000041000000800010043f0000002001000039000000840010043f0000004201000039000000a40010043f000001bf01000041000000c40010043f000001c001000041000000e40010043f000001c101000041000001040010043f000001c20100004100000661000104300000001f0540018f000001a002000041000000000202041a0000000506400272000001560000613d0000000507600210000000000801034f0000000009000019000000008a08043c0000000009a90436000000000079004b000001520000c13d0000019b02200197000000000005004b000001650000613d00000003055002100000000506600210000000000706043300000000075701cf000000000757022f000000000161034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f00000000001604350000000001000414000000040020008c000001f50000c13d00000000040000310000001f0240018f0000000501400272000001730000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b0000016f0000c13d000000000002004b0000023e0000613d00000003022002100000000501100210000000000501043300000000052501cf000000000525022f000000000313034f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f00000000002104350000023e0000013d0000000002000416000000000002004b000002580000c13d000001a002000041000000000202041a0000019b02200197000001a805000041000000000505041a0000019b055001970000000006000411000000000056004b0000025a0000c13d000000800020043f000001b201000041000006600001042e000000240040008c000002580000413d0000000002000416000000000002004b000002580000c13d0000000402100370000000000602043b0000019b0060009c000002580000213d000001a802000041000000000702041a0000019b027001970000000005000411000000000025004b000002a90000c13d000500000007001d000000800020043f000000a00060043f0000000001000414000001990010009c0000019901008041000000c001100210000001b3011001c70000800d020000390000000103000039000001aa04000041000600000006001d065f06500000040f00000006030000290000000100200190000002580000613d000000000003004b000003cc0000c13d000000400100043d0000006402100039000001b40300004100000000003204350000004402100039000001b503000041000000000032043500000024021000390000002603000039000003c10000013d000000240040008c000002580000413d0000000002000416000000000002004b000002580000c13d0000000402100370000000000602043b0000019b0060009c000002580000213d000001a802000041000000000202041a0000019b022001970000000005000411000000000025004b000002d50000c13d000000a001000039000000400010043f000000800000043f0000019e010000410000000000100439000600000006001d00000004006004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000003b80000613d000001a001000041000000000201041a000001a10220019700000006022001af0000000605000029000000000021041b0000000001000414000001990010009c0000019901008041000000c001100210000001a2011001c70000800d020000390000000203000039000001a304000041065f06500000040f00000006040000290000000100200190000002580000613d000000800100043d000000000001004b000004390000c13d0000000001000019000006600001042e0000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d000001990440019700000005054002720000020a0000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000002060000c13d000000000003004b000002180000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d000002420000013d000001990010009c0000019901008041000000c001100210065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d000001990440019700000005054002720000022e0000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b0000022a0000c13d000000000003004b0000023c0000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f00000000001504350000000100200190000002420000613d000001990040009c00000199040080410000006001400210000006600001042e000000600140021000000661000104300000001f03100039000001c3033001970000003f03300039000001c303300197000000400800043d0000000003380019000000000083004b000000000500001900000001050040390000019c0030009c000000840000213d0000000100500190000000840000c13d0000008004400039000000400030043f000000000a180436000000a0022000390000000003210019000000000043004b000003280000a13d000000000100001900000661000104300000001f0640018f00000005054002720000000505500210000002640000613d000000000701034f0000000008000019000000007907043c0000000008980436000000000058004b000002600000c13d000000000006004b000002710000613d0000000306600210000000000705043300000000076701cf000000000767022f000000000151034f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000000001000414000000040020008c000003010000c13d00000000040000310000001f0240018f00000005014002720000027f0000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b0000027b0000c13d000000000002004b0000023e0000613d000001750000013d0000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d00000199044001970000000505400272000002970000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000002930000c13d000000000003004b000002a50000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d000000600140021000000661000104300000001f0540018f000001a002000041000000000202041a0000000506400272000002b50000613d0000000507600210000000000801034f0000000009000019000000008a08043c0000000009a90436000000000079004b000002b10000c13d0000019b02200197000000000005004b000002c40000613d00000003055002100000000506600210000000000706043300000000075701cf000000000757022f000000000161034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f00000000001604350000000001000414000000040020008c0000033e0000c13d00000000040000310000001f0240018f0000000501400272000002d20000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b000002ce0000c13d000000000002004b0000023e0000613d000001750000013d0000001f0540018f000001a002000041000000000202041a0000000506400272000002e10000613d0000000507600210000000000801034f0000000009000019000000008a08043c0000000009a90436000000000079004b000002dd0000c13d0000019b02200197000000000005004b000002f00000613d00000003055002100000000506600210000000000706043300000000075701cf000000000757022f000000000161034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000171019f00000000001604350000000001000414000000040020008c000003650000c13d00000000040000310000001f0240018f0000000501400272000002fe0000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b000002fa0000c13d000000000002004b000001750000c13d0000023e0000013d0000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d00000199044001970000000505400272000003160000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000003120000c13d000000000003004b000003240000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d00000060014002100000066100010430000400000008001d000500000007001d000001c3041001970000001f0310018f0000000000a2004b0000038b0000813d000000000004004b0000033a0000613d000000000632001900000000053a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000003340000c13d000000000003004b000003a50000613d00000000050a00190000039b0000013d0000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d00000199044001970000000505400272000003530000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b0000034f0000c13d000000000003004b000003610000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d000000600140021000000661000104300000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d000001990440019700000005054002720000037a0000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b000003760000c13d000000000003004b000003880000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d000002420000013d000000000004004b000003970000613d000000200540008a000001c3055001970000000005a500190000002005500039000000000602001900000000070a001900000000680604340000000007870436000000000057004b000003930000c13d000000000003004b000003a50000613d00000000054a001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f000000000025043500030000000a001d00000000011a001900000000000104350000019e010000410000000000100439000600000009001d00000004009004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000003d30000c13d000000400100043d0000006402100039000001bd0300004100000000003204350000004402100039000001be03000041000000000032043500000024021000390000002d030000390000000000320435000001a7020000410000000000210435000000040210003900000020030000390000000000320435000001990010009c00000199010080410000004001100210000001b6011001c700000661000104300000000501000029000001a101100197000000000131019f000001a802000041000000000012041b0000000001000019000006600001042e000001a001000041000000000201041a000001a10220019700000006022001af0000000605000029000000000021041b0000000001000414000001990010009c0000019901008041000000c001100210000001a2011001c70000800d020000390000000203000039000001a304000041065f06500000040f0000000603000029000000010020019000000005040000290000000401000029000002580000613d0000000001010433000000000001004b000004850000c13d000001a801000041000000000301041a000000400100043d00000020021000390000000000420435000600000003001d0000019b023001970000000000210435000001990010009c000001990100804100000040011002100000000002000414000001990020009c0000019902008041000000c002200210000000000112019f000001a9011001c70000800d020000390000000103000039000001aa04000041065f06500000040f00000005030000290000000100200190000002580000613d000000000003004b000001b20000613d0000000601000029000001a101100197000000000131019f000001a802000041000000000012041b000000200100003900000100001004430000012000000443000001ab01000041000006600001042e0000001f0640018f000001a002000041000000000202041a000000050540027200000005055002100000041a0000613d000000000701034f0000000008000019000000007907043c0000000008980436000000000058004b000004160000c13d0000019b02200197000000000006004b000004280000613d0000000306600210000000000705043300000000076701cf000000000767022f000000000151034f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000000001000414000000040020008c0000045e0000c13d00000000040000310000001f0240018f0000000501400272000004360000613d0000000505100210000000000603034f0000000007000019000000006806043c0000000007870436000000000057004b000004320000c13d000000000002004b0000023e0000613d000001750000013d000000400300043d000001a40030009c000000840000213d0000006001300039000000400010043f0000004001300039000001a50200004100000000002104350000002701000039000400000003001d0000000002130436000001a601000041000500000002001d00000000001204350000019e01000041000000000010043900000004004004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000004a20000613d000000800200043d00000000010004140000000603000029000000040030008c000004b30000c13d00000001020000390000000004000031000004c20000013d0000006003400210000001990010009c0000019901008041000000c001100210000000000131019f065f065a0000040f0001000000010355000000000301001900000060043002700000001f0340018f000001990040019d00000199044001970000000505400272000004730000613d0000000506500210000000000701034f0000000008000019000000007907043c0000000008980436000000000068004b0000046f0000c13d000000000003004b000004810000613d00000003033002100000000505500210000000000605043300000000063601cf000000000636022f000000000151034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000001002001900000023e0000c13d00000060014002100000066100010430000000400400043d000001a40040009c000000840000213d0000006001400039000000400010043f0000004001400039000001a50200004100000000002104350000002701000039000100000004001d0000000002140436000001a601000041000200000002001d00000000001204350000019e01000041000000000010043900000004003004430000000001000414000001990010009c0000019901008041000000c0011002100000019f011001c70000800202000039065f06550000040f0000000100200190000004a90000613d000000000101043b000000000001004b000004aa0000c13d000000400100043d0000006402100039000001b90300004100000000003204350000004402100039000001ba03000041000001b80000013d000000000001042f0000000401000029000000000201043300000000010004140000000603000029000000040030008c000005160000c13d00000001020000390000000004000031000005290000013d000001990020009c00000199020080410000006002200210000001990010009c0000019901008041000000c001100210000000000121019f000001b8011001c70000000602000029065f065a0000040f000000010220018f00010000000103550000006001100270000001990010019d0000019904100197000000000004004b000004ea0000c13d00000060010000390000008003000039000000000002004b000001f30000c13d0000000001010433000000000001004b0000057f0000c13d000000400100043d000001a70200004100000000002104350000000402100039000000200300003900000000003204350000000402000029000000000202043300000024031000390000000000230435000001c3062001970000001f0520018f0000004404100039000000050040006b000005870000813d000000000006004b000004e60000613d00000005085000290000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000004e00000c13d000000000005004b000005a20000613d0000000007040019000005970000013d0000019c0040009c000000840000213d0000001f01400039000001c3011001970000003f01100039000001c303100197000000400100043d0000000003310019000000000013004b000000000500001900000001050040390000019c0030009c000000840000213d0000000100500190000000840000c13d000000400030043f0000001f0540018f0000000003410436000000010600036700000005044002720000000504400210000005070000613d0000000007430019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000005030000c13d000000000005004b000004c60000613d000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000004c60000013d0000000303000029000001990030009c00000199030080410000004003300210000001990020009c00000199020080410000006002200210000000000232019f000001990010009c0000019901008041000000c001100210000000000112019f0000000602000029065f065a0000040f000000010220018f00010000000103550000006001100270000001990010019d0000019904100197000000000004004b000005520000c13d00000060010000390000008003000039000000000002004b0000000504000029000003ea0000c13d0000000001010433000000000001004b0000057f0000c13d000000400100043d000001a70200004100000000002104350000000402100039000000200300003900000000003204350000000102000029000000000202043300000024031000390000000000230435000001c3052001970000001f0420018f0000004403100039000000020030006b0000060c0000813d000000000005004b0000054e0000613d00000002074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000005480000c13d000000000004004b000006270000613d00000000060300190000061c0000013d0000019c0040009c000000840000213d0000001f01400039000001c3011001970000003f01100039000001c303100197000000400100043d0000000003310019000000000013004b000000000500001900000001050040390000019c0030009c000000840000213d0000000100500190000000840000c13d000000400030043f0000001f0540018f0000000003410436000000010600036700000005044002720000056f0000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000056b0000c13d000000000005004b0000052d0000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000052d0000013d000001990030009c00000199030080410000004002300210000001990010009c00000199010080410000006001100210000000000121019f0000066100010430000000000006004b000005930000613d000000200760008a000001c3077001970000000007470019000000200770003900000005080000290000000009040019000000008a0804340000000009a90436000000000079004b0000058f0000c13d000000000005004b000005a20000613d0000000007640019000500050060002d0000000305500210000000000607043300000000065601cf000000000656022f000000050800002900000000080804330000010005500089000000000858022f00000000055801cf000000000565019f00000000005704350000001f05200039000001c3035001970000000002420019000000000002043500000044023000390000062c0000013d000001990020009c00000199020080410000006002200210000001990010009c0000019901008041000000c001100210000000000121019f000001b8011001c70000000602000029065f065a0000040f000000010220018f00010000000103550000006001100270000001990010019d0000019903100197000000000003004b000005de0000c13d0000006001000039000000000002004b000001f30000c13d0000000001010433000000000001004b000006340000c13d000000400100043d000001a70200004100000000002104350000000402100039000000200300003900000000003204350000000402000029000000000202043300000024031000390000000000230435000001c3052001970000001f0420018f0000004403100039000000030030006b000006390000813d000000000005004b000005da0000613d00000003074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000005d40000c13d000000000004004b000006270000613d0000000006030019000006490000013d0000019c0030009c000000840000213d0000001f01300039000001c3011001970000003f01100039000001c304100197000000400100043d0000000004410019000000000014004b000000000500001900000001050040390000019c0040009c000000840000213d0000000100500190000000840000c13d000000400040043f0000001f0430018f0000000005310436000500000005001d00000001050003670000000503300272000005fc0000613d000000050630021000000005080000290000000006680019000000000705034f000000007907043c0000000008980436000000000068004b000005f80000c13d000000000004004b000005ba0000613d0000000503300210000000000535034f00000005033000290000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f0000000000430435000005ba0000013d000000000005004b000006180000613d000000200650008a000001c306600197000000000636001900000020066000390000000207000029000000000803001900000000790704340000000008980436000000000068004b000006140000c13d000000000004004b000006270000613d0000000006530019000200020050002d0000000304400210000000000506043300000000054501cf000000000545022f000000020700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f04200039000001c304400197000000000232001900000000000204350000004402400039000001990020009c00000199020080410000006002200210000001990010009c00000199010080410000004001100210000000000112019f00000661000104300000000502000029000001990020009c00000199020080410000004002200210000005820000013d000000000005004b000006450000613d000000200650008a000001c306600197000000000636001900000020066000390000000307000029000000000803001900000000790704340000000008980436000000000068004b000006410000c13d000000000004004b000006270000613d0000000006530019000300030050002d0000000304400210000000000506043300000000054501cf000000000545022f0000000307000029000006210000013d000000000001042f00000653002104210000000102000039000000000001042d0000000002000019000000000001042d00000658002104230000000102000039000000000001042d0000000002000019000000000001042d0000065d002104250000000102000039000000000001042d0000000002000019000000000001042d0000065f00000432000006600001042e00000661000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c08c379a000000000000000000000000000000000000000000000000000000000b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610302000000000000000000000000000000000000400000000000000000000000007e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000005c60da1a000000000000000000000000000000000000000000000000000000005c60da1b000000000000000000000000000000000000000000000000000000008f28397000000000000000000000000000000000000000000000000000000000f851a440000000000000000000000000000000000000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000004f1ef286000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000400000008000000000000000006464726573730000000000000000000000000000000000000000000000000000455243313936373a206e65772061646d696e20697320746865207a65726f20610000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0000000000000000000000000000000000000000000000a000000000000000006e74726163740000000000000000000000000000000000000000000000000000416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006f74206120636f6e747261637400000000000000000000000000000000000000455243313936373a206e657720696d706c656d656e746174696f6e206973206e5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"hash":"010001c59c42b628ec9270a1d37a73e42f40ead61ea7c72d02b65074da87d2bc","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"Address":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol":{"Context":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"methodIdentifiers":{}}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"00000001002001900000000c0000613d0000008001000039000000400010043f0000000001000416000000000001004b0000000c0000c13d00000020010000390000010000100443000001200000044300000005010000410000000f0001042e000000000100001900000010000104300000000e000004320000000f0001042e000000100001043000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"methodIdentifiers":{}},"hash":"0100000754ed46f282a297a58b103fdc02c1bebf8a7cda362041aa2c4ec28473","factoryDependencies":{}}},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"OptimizedTransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","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"},{"stateMutability":"payable","type":"receive"}],"metadata":{"llvm_options":[],"optimizer_settings":{"is_debug_logging_enabled":false,"is_fallback_to_size_enabled":false,"is_verify_each_enabled":false,"level_back_end":"Aggressive","level_middle_end":"Aggressive","level_middle_end_size":"Zero"},"solc_metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.d94a798c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec47f69510a4ace724a15533969ce9479ea9dfef773b1da341c64e8f507cb9b\",\"dweb:/ipfs/QmSu6KnnhhcRAEtdqYncLKw6JEByiptoZR7paqQv2x5CVu\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f5abfc32db1d44fd3d38d902879eaeaad827781bb9f954d3ccb8639c55db3c0\",\"dweb:/ipfs/QmVSkxFgWphaUx6w9XdvgwJJuxABdpuVQEbABbRmzd3XFc\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9cbd3212cc9e1dbc383b66ef6b750d58c07c4d73d404c6ec55e4bfed25a8fb6f\",\"dweb:/ipfs/QmPN8XajdLkydiQv2146q1M7nGqYk67Z5SNSjbzFU9MiM5\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60941294a981f6e3ee77c19e503b64c4114b4e7f3261cf489d6898fdd4916522\",\"dweb:/ipfs/QmQVmckpCRrtkCwyPG7ksVo59yjZdtpNerJDzw3hQVB62A\"]},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc227c71372eb216b7965a91a09c843e9e9670369af0410d924cf4208a8dabe\",\"dweb:/ipfs/QmTR55ug3diUCsVedV8C6ShstCcbqSNPVEvmCpqc91pEDf\"]},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbaba7fe0fe556cc5ed291e03d271fd27d395250141ecfb57a4b30d528958ff9\",\"dweb:/ipfs/QmWT653X2DyZo8nqEcmFe3yTkrCJv3ptbZLhbgLU3y6abe\"]},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c270574add213952363bf451bd512acab5fc48c5a06fc05ad75e99eb4b044b99\",\"dweb:/ipfs/QmNQyg2ZvM59Q6FFg1ukJah2xpg8kvDZnTLRVLtMGKuHL1\"]}},\"version\":1}","solc_version":"0.8.25","solc_zkvm_edition":"1.0.2","zk_version":"1.5.1"},"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1},"storageLayout":{"storage":[],"types":null},"evm":{"bytecode":{"object":"0004000000000002000600000000000200000000030100190000006004300270000001a70340019700030000003103550002000000010355000001a70040019d0000000100200190000000bd0000c13d0000008005000039000000400050043f000000040030008c0000011f0000413d000000000201043b000000e002200270000001bc0020009c000001620000213d000001bf0020009c000001ad0000613d000001c00020009c000001830000c13d000000440030008c000003f60000413d0000000402100370000000000602043b000001a90060009c000003f60000213d0000002402100370000000000202043b000001aa0020009c000003f60000213d0000002304200039000000000034004b000003f60000813d0000000407200039000000000171034f000000000401043b000001aa0040009c000003f60000213d00000000014200190000002401100039000000000031004b000003f60000213d000400000007001d000600000004001d000500000006001d000300000005001d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000003030000c13d00000006090000290000001f01900039000001ce011001970000003f01100039000001ce01100197000000400300043d0000000001130019000000000031004b00000000020000190000000102004039000001aa0010009c000001cd0000213d0000000100200190000001cd0000c13d000000400010043f0000001f0190018f000200000003001d00000000089304360000000402000029000000200220003900000002022003670000000503900272000000620000613d00000005043002100000000004480019000000000502034f0000000006080019000000005705043c0000000006760436000000000046004b0000005e0000c13d000000000001004b000000710000613d0000000503300210000000000232034f00000000033800190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000400000008001d00000000019800190000000000010435000001ac010000410000000000100439000000050100002900000004001004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b0000037c0000613d000001ae01000041000000000201041a000001af022001970000000505000029000000000252019f000000000021041b0000000001000414000001a70010009c000001a701008041000000c001100210000001b0011001c70000800d020000390000000203000039000001b104000041069506860000040f0000000100200190000003f60000613d000000400100043d000600000001001d000001b20010009c000001cd0000213d00000006030000290000006001300039000000400010043f0000004001300039000001b302000041000000000021043500000027010000390000000002130436000001b401000041000100000002001d0000000000120435000001ac010000410000000000100439000000050100002900000004001004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b0000043c0000613d0000000201000029000000000201043300000000010004140000000503000029000000040030008c000005490000c13d000000010200003900000001030000310000055c0000013d0000001f02300039000001a802200197000000a002200039000000400020043f0000001f0230018f00000005043002720000000504400210000000cc0000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b000000c80000c13d000000000002004b000000da0000613d000000000141034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000600030008c000003f60000413d000000a00900043d000001a90090009c000003f60000213d000000c00700043d000001a90070009c000003f60000213d000000e00200043d000001aa0020009c000003f60000213d0000001f01200039000000000031004b0000000004000019000001ab04008041000001ab01100197000000000001004b0000000005000019000001ab05004041000001ab0010009c000000000504c019000000000005004b000003f60000c13d000000a0012000390000000001010433000001aa0010009c000001cd0000213d0000001f04100039000001ce044001970000003f04400039000001ce04400197000000400800043d0000000004480019000000000084004b00000000050000190000000105004039000001aa0040009c000001cd0000213d0000000100500190000001cd0000c13d000000a003300039000000400040043f000000000a180436000000c0022000390000000004210019000000000034004b000003f60000213d000500000008001d000400000007001d000001ce041001970000001f0310018f0000000000a2004b000003040000813d000000000004004b0000011b0000613d000000000632001900000000053a0019000000200550008a000000200660008a0000000007450019000000000846001900000000080804330000000000870435000000200440008c000001150000c13d000000000003004b0000031e0000613d00000000050a0019000003140000013d000000000003004b000001830000c13d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000001960000613d000000020300036700000000010000310000001f0510018f000001ae02000041000000000202041a00000005041002720000000504400210000001420000613d000000000603034f0000000007000019000000006806043c0000000007870436000000000047004b0000013e0000c13d000001a902200197000000000005004b000001500000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000343034f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000003000414000000040020008c000002530000c13d000000030200036700000001030000310000001f0430018f000000050130027200000005011002100000015f0000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000016004b0000015b0000c13d000000000004004b000002790000613d000002200000013d000001bd0020009c000001d30000613d000001be0020009c000001830000c13d0000000001000416000000000001004b000003f60000c13d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b0000027f0000c13d000000400100043d0000000000210435000001a70010009c000001a7010080410000004001100210000001c1011001c7000006960001042e000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000001f30000c13d000000400100043d0000008402100039000001ca0300004100000000003204350000006402100039000001cb0300004100000000003204350000004402100039000001cc030000410000000000320435000000240210003900000042030000390000000000320435000001b5020000410000000000210435000000040210003900000020030000390000000000320435000001a70010009c000001a7010080410000004001100210000001cd011001c70000069700010430000000240030008c000003f60000413d0000000002000416000000000002004b000003f60000c13d0000000401100370000000000101043b000001a90010009c000003f60000213d000600000001001d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000003030000c13d000000400200043d000001c20020009c000003670000a13d000001c80100004100000000001004350000004101000039000000040010043f000001c90100004100000697000104300000000001000416000000000001004b000003f60000c13d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000002c10000c13d000001ae01000041000000000101041a000001a901100197000000400200043d0000000000120435000001a70020009c000001a7020080410000004001200210000001c1011001c7000006960001042e000000020300036700000000010000310000001f0510018f000001ae02000041000000000202041a00000005041002720000000504400210000002010000613d000000000603034f0000000007000019000000006806043c0000000007870436000000000047004b000001fd0000c13d000001a902200197000000000005004b0000020f0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000343034f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000003000414000000040020008c0000022c0000c13d000000030200036700000001030000310000001f0430018f000000050130027200000005011002100000021e0000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000016004b0000021a0000c13d000000000004004b000002790000613d0000000304400210000000000501043300000000054501cf000000000545022f000000000212034f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000210435000002790000013d000001a70010009c000001a7010080410000006001100210000001a70030009c000001a703008041000000c003300210000000000113019f069506900000040f0003000000010355000000000301001900000060033002700000001f0530018f000101a70030019d000001a70330019700000005043002720000000504400210000002430000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b0000023f0000c13d000000000005004b000002500000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000002790000c13d0000027d0000013d000001a70010009c000001a7010080410000006001100210000001a70030009c000001a703008041000000c003300210000000000113019f069506900000040f0003000000010355000000000301001900000060033002700000001f0530018f000101a70030019d000001a703300197000000050430027200000005044002100000026a0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000002660000c13d000000000005004b000002770000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000001002001900000027d0000613d000001a70030009c000001a7030080410000006001300210000006960001042e00000060013002100000069700010430000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000001960000613d000000020300036700000000010000310000001f0410018f000001ae02000041000000000202041a0000000505100272000002a00000613d0000000506500210000000000703034f0000000008000019000000007907043c0000000008980436000000000068004b0000029c0000c13d000001a902200197000000000004004b000002af0000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000353034f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f00000000003504350000000003000414000000040020008c000003900000c13d000000030200036700000001030000310000001f0430018f00000005013002720000000501100210000002be0000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000016004b000002ba0000c13d000000000004004b000002790000613d000002200000013d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f0000000100200190000004460000613d000000000101043b000001a9011001970000000002000411000000000012004b000001960000613d000000020300036700000000010000310000001f0410018f000001ae02000041000000000202041a0000000505100272000002e20000613d0000000506500210000000000703034f0000000008000019000000007907043c0000000008980436000000000068004b000002de0000c13d000001a902200197000000000004004b000002f10000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000353034f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f00000000003504350000000003000414000000040020008c000003b80000c13d000000030200036700000001030000310000001f0430018f00000005013002720000000501100210000003000000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000016004b000002fc0000c13d000000000004004b000002200000c13d000002790000013d069505f40000040f000000000004004b000003100000613d000000200540008a000001ce055001970000000005a500190000002005500039000000000602001900000000070a001900000000680604340000000007870436000000000057004b0000030c0000c13d000000000003004b0000031e0000613d00000000054a001900000000024200190000000303300210000000000405043300000000043401cf000000000434022f00000000020204330000010003300089000000000232022f00000000023201cf000000000242019f000000000025043500030000000a001d00000000011a00190000000000010435000001ac010000410000000000100439000600000009001d00000004009004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b0000037c0000613d000001ae01000041000000000201041a000001af0220019700000006022001af0000000605000029000000000021041b0000000001000414000001a70010009c000001a701008041000000c001100210000001b0011001c70000800d020000390000000203000039000001b104000041069506860000040f0000000603000029000000010020019000000004040000290000000501000029000003f60000613d0000000001010433000000000001004b000003f80000c13d000000800040043f000001b601000041000000000041041b000000400100043d000000200210003900000000004204350000000000010435000001a70010009c000001a70100804100000040011002100000000002000414000001a70020009c000001a702008041000000c002200210000000000112019f000001b7011001c70000800d020000390000000103000039000001b804000041069506860000040f0000000100200190000003f60000613d000000800100043d000001400000044300000160001004430000002001000039000001000010044300000001010000390000012000100443000001b901000041000006960001042e0000002001200039000400000001001d000000400010043f000500000002001d0000000000020435000001ac010000410000000000100439000000060100002900000004001004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b000003df0000c13d000000400100043d0000006402100039000001c60300004100000000003204350000004402100039000001c703000041000000000032043500000024021000390000002d030000390000000000320435000001b5020000410000000000210435000000040210003900000020030000390000000000320435000001a70010009c000001a7010080410000004001100210000001c5011001c70000069700010430000001a70010009c000001a7010080410000006001100210000001a70030009c000001a703008041000000c003300210000000000113019f069506900000040f0003000000010355000000000301001900000060033002700000001f0530018f000101a70030019d000001a70330019700000005043002720000000504400210000003a70000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000003a30000c13d000000000005004b000003b40000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000002790000c13d00000060013002100000069700010430000001a70010009c000001a7010080410000006001100210000001a70030009c000001a703008041000000c003300210000000000113019f069506900000040f0003000000010355000000000301001900000060033002700000001f0530018f000101a70030019d000001a70330019700000005043002720000000504400210000003cf0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000003cb0000c13d000000000005004b000003dc0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000002790000c13d0000027d0000013d000001ae01000041000000000201041a000001af022001970000000605000029000000000252019f000000000021041b0000000001000414000001a70010009c000001a701008041000000c001100210000001b0011001c70000800d020000390000000203000039000001b104000041069506860000040f0000000100200190000003f60000613d00000005010000290000000001010433000000000001004b0000041e0000c13d0000000001000019000006960001042e00000000010000190000069700010430000000400400043d000001b20040009c000001cd0000213d0000006001400039000000400010043f0000004001400039000001b30200004100000000002104350000002701000039000100000004001d0000000002140436000001b401000041000200000002001d0000000000120435000001ac01000041000000000010043900000004003004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b0000043c0000613d0000000501000029000000000201043300000000010004140000000603000029000000040030008c000004470000c13d000000010200003900000001040000310000045a0000013d000000400300043d000001b20030009c000001cd0000213d0000006001300039000000400010043f0000004001300039000001b30200004100000000002104350000002701000039000200000003001d0000000002130436000001b401000041000300000002001d0000000000120435000001ac010000410000000000100439000000060100002900000004001004430000000001000414000001a70010009c000001a701008041000000c001100210000001ad011001c700008002020000390695068b0000040f0000000100200190000004460000613d000000000101043b000000000001004b000004b00000c13d000000400100043d0000006402100039000001c30300004100000000003204350000004402100039000001c403000041000000000032043500000024021000390000002603000039000003850000013d000000000001042f0000000303000029000001a70030009c000001a7030080410000004003300210000001a70020009c000001a7020080410000006002200210000000000232019f000001a70010009c000001a701008041000000c001100210000000000112019f0000000602000029069506900000040f000000010220018f00030000000103550000006001100270000101a70010019d000001a704100197000000000004004b000004830000c13d00000060010000390000008003000039000000000002004b0000000404000029000003480000c13d0000000001010433000000000001004b000004f40000c13d000000400100043d000001b50200004100000000002104350000000402100039000000200300003900000000003204350000000102000029000000000202043300000024031000390000000000230435000001ce052001970000001f0420018f0000004403100039000000020030006b000005280000813d000000000005004b0000047f0000613d00000002074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000004790000c13d000000000004004b000005430000613d0000000006030019000005380000013d000001aa0040009c000001cd0000213d0000001f01400039000001ce011001970000003f01100039000001ce03100197000000400100043d0000000003310019000000000013004b00000000050000190000000105004039000001aa0030009c000001cd0000213d0000000100500190000001cd0000c13d000000400030043f0000001f0540018f000000000341043600000003060003670000000504400272000004a00000613d00000005074002100000000007730019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000049c0000c13d000000000005004b0000045e0000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000045e0000013d0000000501000029000000000201043300000000010004140000000603000029000000040030008c000004b90000c13d00000001020000390000000104000031000004cc0000013d0000000403000029000001a70030009c000001a7030080410000004003300210000001a70020009c000001a7020080410000006002200210000000000232019f000001a70010009c000001a701008041000000c001100210000000000112019f0000000602000029069506900000040f000000010220018f00030000000103550000006001100270000101a70010019d000001a704100197000000000004004b000004fc0000c13d00000060010000390000008003000039000000000002004b000003f40000c13d0000000001010433000000000001004b000004f40000c13d000000400100043d000001b50200004100000000002104350000000402100039000000200300003900000000003204350000000202000029000000000202043300000024031000390000000000230435000001ce062001970000001f0520018f0000004404100039000000030040006b000005b10000813d000000000006004b000004f00000613d00000003085000290000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000004ea0000c13d000000000005004b000005cc0000613d0000000007040019000005c10000013d000001a70030009c000001a7030080410000004002300210000001a70010009c000001a7010080410000006001100210000000000121019f0000069700010430000001aa0040009c000001cd0000213d0000001f01400039000001ce011001970000003f01100039000001ce03100197000000400100043d0000000003310019000000000013004b00000000050000190000000105004039000001aa0030009c000001cd0000213d0000000100500190000001cd0000c13d000000400030043f0000001f0540018f0000000003410436000000030600036700000005044002720000000504400210000005190000613d0000000007430019000000000806034f0000000009030019000000008a08043c0000000009a90436000000000079004b000005150000c13d000000000005004b000004d00000613d000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000004d00000013d000000000005004b000005340000613d000000200650008a000001ce06600197000000000636001900000020066000390000000207000029000000000803001900000000790704340000000008980436000000000068004b000005300000c13d000000000004004b000005430000613d0000000006530019000200020050002d0000000304400210000000000506043300000000054501cf000000000545022f000000020700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000001f04200039000001ce04400197000000000232001900000000000204350000004402400039000005d10000013d0000000403000029000001a70030009c000001a7030080410000004003300210000001a70020009c000001a7020080410000006002200210000000000232019f000001a70010009c000001a701008041000000c001100210000000000112019f0000000502000029069506900000040f000000010220018f00030000000103550000006001100270000101a70010019d000001a703100197000000000003004b000005830000c13d0000006001000039000000000002004b000003f40000c13d0000000001010433000000000001004b000005d90000c13d000000400100043d000001b50200004100000000002104350000000402100039000000200300003900000000003204350000000602000029000000000202043300000024031000390000000000230435000001ce052001970000001f0420018f0000004403100039000000010030006b000005de0000813d000000000005004b0000057f0000613d00000001074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000005790000c13d000000000004004b000005430000613d0000000006030019000005ee0000013d000001aa0030009c000001cd0000213d0000001f01300039000001ce011001970000003f01100039000001ce04100197000000400100043d0000000004410019000000000014004b00000000050000190000000105004039000001aa0040009c000001cd0000213d0000000100500190000001cd0000c13d000000400040043f0000001f0430018f0000000005310436000300000005001d00000003050003670000000503300272000005a10000613d000000050630021000000003080000290000000006680019000000000705034f000000007907043c0000000008980436000000000068004b0000059d0000c13d000000000004004b0000055f0000613d0000000503300210000000000535034f00000003033000290000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000055f0000013d000000000006004b000005bd0000613d000000200760008a000001ce077001970000000007470019000000200770003900000003080000290000000009040019000000008a0804340000000009a90436000000000079004b000005b90000c13d000000000005004b000005cc0000613d0000000007640019000300030060002d0000000305500210000000000607043300000000065601cf000000000656022f000000030800002900000000080804330000010005500089000000000858022f00000000055801cf000000000565019f00000000005704350000001f05200039000001ce03500197000000000242001900000000000204350000004402300039000001a70020009c000001a7020080410000006002200210000001a70010009c000001a7010080410000004001100210000000000112019f00000697000104300000000302000029000001a70020009c000001a7020080410000004002200210000004f70000013d000000000005004b000005ea0000613d000000200650008a000001ce06600197000000000636001900000020066000390000000107000029000000000803001900000000790704340000000008980436000000000068004b000005e60000c13d000000000004004b000005430000613d0000000006530019000100010050002d0000000304400210000000000506043300000000054501cf000000000545022f00000001070000290000053d0000013d000001ba0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000001a70010009c000001a701008041000000c001100210000001bb011001c700008005020000390695068b0000040f00000001002001900000061e0000613d000000000101043b000001a9011001970000000002000411000000000012004b0000061f0000c13d000000400100043d0000008402100039000001ca0300004100000000003204350000006402100039000001cb0300004100000000003204350000004402100039000001cc030000410000000000320435000000240210003900000042030000390000000000320435000001b5020000410000000000210435000000040210003900000020030000390000000000320435000001a70010009c000001a7010080410000004001100210000001cd011001c70000069700010430000000000001042f000000020300036700000000010000310000001f0410018f000001ae02000041000000000202041a00000005051002720000062d0000613d0000000506500210000000000703034f0000000008000019000000007907043c0000000008980436000000000068004b000006290000c13d000001a902200197000000000004004b0000063c0000613d00000003044002100000000505500210000000000605043300000000064601cf000000000646022f000000000353034f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f00000000003504350000000003000414000000040020008c000006590000c13d000000030200036700000001030000310000001f0430018f000000050130027200000005011002100000064b0000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000016004b000006470000c13d000000000004004b0000067f0000613d0000000304400210000000000501043300000000054501cf000000000545022f000000000212034f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002104350000067f0000013d000001a70010009c000001a7010080410000006001100210000001a70030009c000001a703008041000000c003300210000000000113019f069506900000040f0003000000010355000000000301001900000060033002700000001f0530018f000101a70030019d000001a70330019700000005043002720000000504400210000006700000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b0000066c0000c13d000000000005004b0000067d0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000100200190000006830000613d000001a70030009c000001a7030080410000006001300210000006960001042e00000060013002100000069700010430000000000001042f00000689002104210000000102000039000000000001042d0000000002000019000000000001042d0000068e002104230000000102000039000000000001042d0000000002000019000000000001042d00000693002104250000000102000039000000000001042d0000000002000019000000000001042d0000069500000432000006960001042e0000069700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b000000000000000000000000000000000000000000000000ffffffffffffff9f206661696c656400000000000000000000000000000000000000000000000000416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c08c379a000000000000000000000000000000000000000000000000000000000b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610302000000000000000000000000000000000000400000000000000000000000007e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f0000000200000000000000000000000000000080000001000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000000000005c60da1a000000000000000000000000000000000000000000000000000000005c60da1b00000000000000000000000000000000000000000000000000000000f851a440000000000000000000000000000000000000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000004f1ef2860000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf6e74726163740000000000000000000000000000000000000000000000000000416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f00000000000000000000000000000000000000840000000000000000000000006f74206120636f6e747261637400000000000000000000000000000000000000455243313936373a206e657720696d706c656d656e746174696f6e206973206e4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006574000000000000000000000000000000000000000000000000000000000000696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172675472616e73706172656e745570677261646561626c6550726f78793a2061646d00000000000000000000000000000000000000a4000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"methodIdentifiers":{"admin()":"f851a440","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"hash":"010001cf875f2d5e071e7831ddf40773cd0ce3049f8b995f60ca230d1636f8a1","factoryDependencies":{}}}}}}